Win32API形式
※ユニバーサル Windows プラットフォーム (UWP) には対応しておりません
各関数の引数、戻り値の内容は開発言語に依存せず共通です。
詳細は関数リファレンスをご参照下さい。
Visual Basic .NETは、旧バージョンのVisual Basic 5.0、6.0とはデータ型が異なります。
旧バージョンで作成したアプリケーションを流用される場合などはご注意ください。
Visual Basic .NETではコールバック関数による割り込みやトリガの通知を行う場合、
コールバック関数のメモリアドレスを固定するための処理を追加する必要があります。
これらの処理のために必要なコード例として、割り込み処理の場合を例として示します。
詳細はサンプルプログラムを参照してください。
■グローバル変数として宣言します。
Dim gCh As GCHandle
Dim pdelegate_func As PINTCALLBACK
Dim pfunc As IntPtr
■Loadメソッドの中で割り込み処理用デリゲートを初期化し、ガベージコレクションにより破棄されないように参照を追加。
pdelegate_func = New PINTCALLBACK(AddressOf
CallBackProc)
gCh = GCHandle.Alloc(pdelegate_func)
■Closedメソッドの中でハンドルを開放します。
gCh.Free()
■関数の固定ポインタを取得します。
pfunc = Marshal.GetFunctionPointerForDelegate(pdelegate_func)
■DioSetInterruptCallBackProcでは取得した固定ポインタを指定します。
Ret = DioSetInterruptCallBackProc(Id, pfunc, Temp)
Visual Basic.NETではバスマスタ転送で使用するバッファに対してメモリアドレスを固定するための処理を追加する必要があります。
これらの処理のために必要なコード例を示します。詳細はサンプルプログラムを参照してください。
■グローバル変数として宣言します。
Dim gCh As GCHandle
Dim pBmBuf As IntPtr
Const DATA_SIZE As Short = 1000 ' data size
Dim BmBuffer(DATA_SIZE) As Integer ' data buffer
■Loadメソッドの中でバッファにPinned型のハンドルを割り当てます。
If gCh.IsAllocated = False Then
gCh = GCHandle.Alloc(BmBuffer, GCHandleType.Pinned)
End If
■Closedメソッドの中でハンドルを開放します。
If gCh.IsAllocated = True Then
gCh.Free()
End If
■オブジェクトの固定ポインタを取得します。
pBmBuf = gCh.AddrOfPinnedObject()
■DioDmSetBufferでは取得した固定ポインタを指定します。
Ret = DioDmSetBuffer(Id, Direction, pBmBuf, DATA_SIZE, DIODM_WRITE_ONCE)