Visual Basic .NET 使用時の注意点

関数仕様

Win32API形式
※ユニバーサル Windows プラットフォーム (UWP) には対応しておりません

関数引数、戻り値

各関数の引数、戻り値の内容は開発言語に依存せず共通です。
詳細は関数リファレンスをご参照下さい。

関数リファレンスの書式について

Visual Basic .NETは、旧バージョンのVisual Basic 5.0、6.0とはデータ型が異なります。
旧バージョンで作成したアプリケーションを流用される場合などはご注意ください。

コールバック関数使用時の注意点

VisualBasic.NETではコールバック関数によるイベントの通知を行う場合は、
コールバック関数のメモリアドレスを固定するための処理を追加する必要があります。

ここでは、これらの処理のために必要なコード例として、カウント一致イベント処理の場合を例として示します。
詳細はサンプルプログラムを参照してください。

■グローバル変数として宣言します。

Dim gCh As GCHandle
Dim pdelegate_func As PCOUNTUPCALLBACK
Dim pfunc As IntPtr

■Loadメソッドの中で割り込み処理用デリゲートを初期化し、ガベージコレクションにより破棄されないように参照を追加。

pdelegate_func = New PCOUNTUPCALLBACK(AddressOf CallBackProc)
gCh = GCHandle.Alloc(pdelegate_func)

■Closedメソッドの中でハンドルを開放します。

gCh.Free()

■関数の固定ポインタを取得します。

pfunc = Marshal.GetFunctionPointerForDelegate(pdelegate_func)

■CntCountUpCallbackProcでは取得した固定ポインタを指定します。

Ret = CntCountUpCallbackProc(Id, pfunc, Temp)

CntSamplingSetBuffer()使用時の注意点

Visual Basic.NETではバスマスタ転送で使用するバッファに対して
メモリアドレスを固定するための処理を追加する必要があります。

これらの処理のために必要なコード例を示します。
詳細はサンプルプログラムを参照してください。

■グローバル変数として宣言します。

Public Const CHANNEL_NUM As Short = 4
Public Const DATA_NUM As Short = 1000
Dim gCh As GCHandle
Dim pSamplingData As IntPtr
Dim SampData(DATA_NUM - 1, CHANNEL_NUM - 1) As Integer

■Loadメソッドの中でバッファにPinned型のハンドルを割り当てます。

If gCh.IsAllocated =False Then
   gCh =GCHandle.Alloc(SampData, GCHandleType.Pinned)
End If

■Closedメソッドの中でハンドルを開放します。

If gCh.IsAllocated =True Then
   gCh.Free()
End If

■オブジェクトの固定ポインタを取得します。

Buf =gCh.AddrOfPinnedObject()

■CntSamplingSetBufferでは取得した固定ポインタを指定します。

dwRet = CntSamplingSetBuffer(Id, pSamplingData, CHANNEL_NUM, DATA_NUM, CNTS_WRITE_ONCE)