VB6.0からVB2019への変更のための動作検証の結果です。
Windows10 (32bit) で、ADボード AD16-16U(PCI)EHとAPI-AIO(WDM)ドライバの組み合わせ。
メーカー発行のVB2005用のガイドブックにあるFIFOのサンプルソフトがそのままでは動作しませんでしたが、WndProcを以下の様に書き換えることで動作するようになりました。
‘変数の宣言
Dim Ret As Integer
Dim Id As Short
Dim Tmp(999) As Single
Dim DeviceName As String
Dim TextString As String
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
‘変換条件設定
Ret = AioSetAiChannels(Id, 2) ‘チャンネル数の設定
Ret = AioSetAiRangeAll(Id, PM10) ‘入力レンジの設定 +/-10V
Ret = AioSetAiMemoryType(Id, 0) ‘メモリ形式 FIFO
Ret = AioSetAiClockType(Id, 0) ‘内部クロック
Ret = AioSetAiSamplingClock(Id, 1000) ‘変換速度(uS単位) 1000uS
Ret = AioSetAiStartTrigger(Id, 0) ‘開始条件 ソフトウェア
Ret = AioSetAiStopTrigger(Id, 0) ‘停止条件 設定回数
Ret = AioSetAiStopTimes(Id, 100) ‘サンプリング回数=チャンネル数xサンプリング数
Ret = AioSetAiEvent(Id, Handle.ToInt32, AIE_END) ‘イベント要因の設定 デバイス動作終了イベント
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
End
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
‘変換開始処理
Ret = AioResetAiMemory(Id)
Ret = AioStartAi(Id)
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
‘初期化処理
DeviceName = “AIO001”
Ret = AioInit(DeviceName, Id)
Ret = AioResetDevice(Id)
End Sub
Private Sub Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
Ret = AioExit(Id)
End Sub
Protected Overrides Sub WndProc(ByRef m As Message) ’←ココ
MyBase.WndProc(m) ‘←ココ
Dim i As Integer
If m.Msg = AIOM_AIE_END Then
Ret = AioGetAiSamplingDataEx(Id, m.LParam, Tmp) ‘変換データ取得
TextString = “”
For i = 0 To m.LParam.ToInt32 – 1
TextString = TextString & “” & i + 1 & ” ” & Format(Tmp(i), “0.000”) & vbCrLf
Next i
TextBox1.Text = TextString
End If
End Sub