はじめまして。
この度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
と書いています。
どのようにしたら複数個接続用になるのか教えて頂けると幸いです。
よろしくお願いします。
すいません。複数個載せてしまいました。
申し訳ありませんが、削除お願い致します。
リファレンスでAPIを確認する限り・・・
そのプログラム間違ってませんか?
dev = FindUSB(index) と、なっており、devにデバイス名が入るが
re = GetTempHumidTrue(Device, temp, rh) では、Deviceとなって
います。
dev = FindUSB(index)
re = GetTempHumidTrue(dev, temp, rh)
なら解りますが・・・
それくらいかナ〜・・・
以上。