複数のUSBデバイスを認識するには?


くま  2009-10-15 15:04:54  No: 142637  IP: 192.*.*.*

はじめまして。
この度USB接続式の温度計を購入し、それを1台のPCに複数個接続して色々な場所での温度・湿度を計測したいと考えています。

温度計はUSBRHというものを用いていて、商品購入時にdllファイルが既についていて、それを用いてプログラミングが出来るという状態です。

http://www2.strawberry-linux.com/products/usbrh/index.php?%5B%5B%B4%D8%BF%F4%A5%EA%A5%D5%A5%A1%A5%EC%A5%F3%A5%B9%5D%5D

こちらにあるFindUSBという関数を用いて、
接続されているデバイス名を取得出来るということなのですが、
複数個接続をした場合、上手くデバイス名を温度取得関数に渡せずに、
片方のデバイスの温度のみが帰ってくるという形になってしまいます。


プログラムのここに関係する部分のみを書くと

dev = FindUSB(index)
        If dev = "" Then Exit Do
        Device = dev

と予め定義しておきTimer関数で

Private Sub Timer1_Timer()
    Dim temp As Double
    Dim rh As Double
    Dim re As Long
    
    
     dev = FindUSB(index)
    re = GetTempHumidTrue(Device, temp, rh)
    If re = 0 Then
        lblTemp(0).Caption = Format(temp, "##0.00℃")
        lblHumid(0).Caption = Format(rh, "##0.0%RH")
      
       dev = FindUSB(index)
       re = GetTempHumidTrue(Device, temp, rh)
      
      If re = 0 Then
          lblTemp(1).Caption = Format(temp, "##0.00℃")
          lblHumid(1).Caption = Format(rh, "##0.0%RH")
      Else
          lblTemp(1).Caption = "未検出"
          lblHumid(1).Caption = "未検出"
      End If
        
    Else
        lblTemp(0).Caption = "未検出"
        lblHumid(0).Caption = "未検出"
    End If
    
End Sub

と書いています。またモジュールで

Option Explicit

Public Declare Function GetVers Lib "USBMeter.dll" _
    Alias "_GetVers@4" (ByVal dev As String) As String

Public Declare Function FindUSB Lib "USBMeter.dll" _
    Alias "_FindUSB@4" (ByRef index As Long) As String
 
Public Declare Function GetTempHumid Lib "USBMeter.dll" _
    Alias "_GetTempHumid@12" (ByVal dev As String, ByRef temp As Double, ByRef humid As Double) As Long

と書いています。


どのようにしたら複数個接続用になるのか教えて頂けると幸いです。
よろしくお願いします。

編集 削除
くま  2009-10-15 15:10:19  No: 142638  IP: 192.*.*.*

すいません。複数個載せてしまいました。
申し訳ありませんが、削除お願い致します。

編集 削除
オショウ  2009-10-15 15:24:43  No: 142639  IP: 192.*.*.*

リファレンスでAPIを確認する限り・・・

そのプログラム間違ってませんか?

dev = FindUSB(index) と、なっており、devにデバイス名が入るが
re = GetTempHumidTrue(Device, temp, rh) では、Deviceとなって
います。

dev = FindUSB(index)
re = GetTempHumidTrue(dev, temp, rh)

なら解りますが・・・

それくらいかナ〜・・・

以上。

編集 削除