2005-12-08

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

0 件のコメント:

コメントを投稿