関数仕様
C#用のインターフェースとしてクラスライブラリを提供しています。
デバイスドライバの関数は、クラスライブラリのメソッドから呼び出されます。
クラスライブラリ中のメソッドは、 元の関数からプレフィクスを除いた形で定義されています。
元の関数からプレフィクスを除いた名称のメソッドを呼び出してください。
例)AioInit関数の場合
Ret = aio.Init();
※ユニバーサル Windows プラットフォーム (UWP) には対応しておりません
関数引数、戻り値
各関数の引数、戻り値の内容は開発言語に依存せず共通です。
詳細は関数リファレンスをご参照下さい。
コールバック関数使用時の注意点
Visual C# ではコールバック関数によるイベントの通知を行う場合、
コールバック関数のメモリアドレスを固定するための処理を追加する必要があります。
これらの処理のために必要なコード例として、アナログ入力のデバイス動作終了イベント処理の場合を例として示します。
詳細はサンプルプログラムを参照してください。
■グローバル変数として宣言します。
GCHandle gCh;
PAICALLBACK pdelegate_func;
IntPtr pfunc;
■Loadメソッドの中で割り込み処理用デリゲートを初期化し、ガベージコレクションにより破棄されないように参照を追加。
pdelegate_func = new PAICALLBACK(CallBackProc);
gCh = GCHandle.Alloc(pdelegate_func);
■Closedメソッドの中でハンドルを開放します。
gCh.Free();
■関数の固定ポインタを取得します。
pfunc = Marshal.GetFunctionPointerForDelegate(pdelegate_func);
■AioSetAiCallBackProcでは取得した固定ポインタを指定します。
Ret = aio.SetAiCallBackProc(Id, pfunc, (short)CaioConst.AIE_END, Temp);
AioSetAiTransferData()、AioSetAoTransferData()使用時の注意点
Visual C#.NETではユーザーバッファモードで使用するバッファに対して
メモリアドレスを固定するための処理を追加する必要があります。
これらの処理のために必要なコード例を示します。
詳細はサンプルプログラムを参照してください。
■グローバル変数として宣言します。
GCHandle gCh;
int[] AiData = new int[10000];
IntPtr pBuffer;
■Loadメソッドの中でバッファにPinned型のハンドルを割り当てます。
if(gCh.IsAllocated == false){
gCh = GCHandle.Alloc(AiData, GCHandleType.Pinned);
}
■Closedメソッドの中でハンドルを開放します。
if(gCh.IsAllocated == true){
gCh.Free();
}
■オブジェクトの固定ポインタを取得します。
pBuffer = gCh.AddrOfPinnedObject();
■AioSetAiTransferData()では取得した固定ポインタを指定します。
Ret = aio.SetAiTransferData(m_Id, 10000, pBuffer);