USB-An(アナログ入力)テストPG
現在試用中のUSB-Anの動作確認をした時に実際にコーディングした内容を載せておきます。言語はActiveBasicで
vbausbio.dll(本拠地で公開している汎用USB-IOをコントロールするためのもの)を使用しています。
USB-Anに対しては入力ができるように初期値を設定し、
入力するアナログポートを指定後、
データを取得といった手順になります。
取得後値を換算して温度表示させています。
ログ出力を含めてもこの程度のコーディングでOKです。
'---------------------------------------------------------
' ここから下は、イベントプロシージャを記述するための領域になります。
'--------------------------------------
' Main画面が閉じられた時の処理
'--------------------------------------
Sub MainWnd_Destroy()
USBANTEST_DestroyObjects()
PostQuitMessage(0)
End Sub
'--------------------------------------
' ボタンが押された時の処理
'--------------------------------------
Sub MainWnd_CommandButton1_Click()
'USB-An初期処理
AnInit()
'1分毎のインターバルタイマーを起動する
SetTimer(hMainWnd,1,60000,0)
'Logタイトルを出力する
LogTitle()
'データ収集
AnGet()
End Sub
'--------------------------------------
' タイマー割り込みが発生した時の処理
'--------------------------------------
Sub MainWnd_Timer(TimerID As DWord)
'データ収集
AnGet()
End Sub
'--------------------------------------------------------
' ここから下は、ユーザー定義関数を記述するための領域になります。
'======================================
' Anポート初期処理
'======================================
Sub AnInit()
Dim lngRet As Long
'ポート0 READ設定(読み込みが可能なようにOFFを出力)
'全ピンread
lngRet =uio_out(0,&HFF,0)
'ポート1
'An3入力 (上位2ビット:Anポート 下位2ビット:下位2ビット入力値)
'3(0011):An0 7(0111):An1 11(1011):Pin2-An2 15(1111):An-3
lngRet =uio_out(1,&H0F,0)
'AD変換が落ち着くまで待つ
Sleep(500)
End Sub
'======================================
' データ収集処理
'======================================
Sub AnGet()
Dim lngRet As Long
Dim lAnPinNo As Long
Dim byRData As Byte
Dim sglData As Single
Dim strData as String
'An入力ピン切替
lAnPinNo = 0
lngRet =uio_out(1, lAnPinNo * &H4 + &H3, 0)
'8Bit入力
lngRet =uio_inp(byRData,0,0)
'8Bit(0-255)の値を温度(0-50)に変換する
sglData = byRData*50/255
'EditBoxに値を表示
SetWindowText(GetDlgItem(hMainWnd,EditBox1),Str$(sglData))
'ログファイルに出力する
LogWrite(sglData)
End Sub
'======================================
' ログ初期処理(タイトル出力)
'======================================
Sub LogTitle()
Open "log.csv" As #1
'最初(ファイルが空)の時にタイトルを出力
If Eof(1) Then
Print #1, "日付,時間,温度"
End If
Close #1
End Sub
'======================================
' ログ出力処理
'======================================
Sub LogWrite(sglData as Single)
Dim strData As String
strData = Date$()+","+Time$()+","+Str$(sglData)
Open "log.csv" For Append as #1
Print #1, strData
Close #1
End Sub