変換データを格納するユーザーバッファの設定を行います。
この設定は、AioSetAiTransferMode関数で変換データ転送方式をユーザーバッファモードに設定した場合に必要になります。
変換データ転送方式がデバイスバッファの場合には実行する必要はありません。
Ret = AioSetAiTransferData ( Id , DataNumber , Buffer )
Id
[ VB.NET: Short ] [ C, C++: short
] [ C#: short ] [ Python: ctypes.c_short ]
AioInit 関数で取得したデバイスIDを指定します。
DataNumber
[ VB.NET: Integer ] [ C, C++: long ] [ C#: int ] [ Python: ctypes.c_long
]
設定するユーザーバッファの配列サイズを指定します。サイズはパケット数で指定してください。
Buffer
[ VB.NET: IntPtr] [ C, C++: long * ] [ C#: IntPtr ] [ Python: ctypes.POINTER(ctypes.c_long)
]
ユーザーバッファのアドレスを指定します。
Ret [ VB.NET: Integer ] [ C, C++: long ] [ C#: int ] [ Python: ctypes.c_long ]
戻り値 |
内容 |
0 |
正常終了 |
7 |
スタンバイモードから復帰したため、AioResetDevice関数を実行してください |
10001 |
無効なIDが指定されました |
10002 |
ドライバを呼び出せません |
11980 |
DataNumberの値が関数の指定範囲外です |
11981 |
BufferのポインタがNULLです |
11982 |
バスマスタ転送用のバッファ確保に失敗しました |
20001 |
使用しているデバイスではこの関数を使用することができません |
20002 |
デバイスが動作中のため実行できません |
20003 |
他のプロセスがデバイスを使用しているため、実行できません |
21980 |
DataNumberの値が使用しているデバイスの範囲外です |
ユーザーバッファへのデータ格納パターンについては「ユーザーバッファの設定」を参照ください。
ユーザーバッファの設定を行う際には、あらかじめ1サンプリングで必要となるパケット数(=配列の要素数)を計算しておく必要があります。
AioGetAiSamplingDataSize関数を使用すれば、1サンプリングあたりに必要なパケット数を取得する事ができます。
アナログ入力機能を持たないデバイスでは使用できません。
デバイスが動作中の場合、この関数は実行できません。
この関数を実行する前に、先にAioSetAiMemoryType関数を実行してください。
DataNumber(配列サイズ)は、デバイス毎に、それぞれに以下の範囲で指定できます。
AI-1204Z-PE AI-1664UG-PE |
設定可能なDataNumberは1~536870912(2GBytes分)です。
これらのデバイスは、64bitバス幅でバスマスタ転送を実現しています。 64bitバス幅でのバスマスタ転送は、利用OSによるバッファサイズ制限はありません。 |
||||||
AI-1204Z-PCI |
これらのデバイスは、32bitバス幅でバスマスタ転送を実現しています。 32bitバス幅でのバスマスタ転送は、利用OSよるバッファサイズ制限を受けます。
最大64MByteのバスマスタ転送ができるようにハードウェア設計されています。 詳細は以下の通りです。
|
※物理アドレス空間へのマッピングのされ方によっては、バスマスタ用バッファサイズを最大領域まで設定できない場合があります。
10000個のユーザーバッファを設定します。
VB.NET |
VisualBasic.NETでご使用の際の注意点
を参照してください。 |
C, C++ |
long Ret; |
C# |
VisualC#.NETでご使用の際の注意点
を参照してください。 |
Python |
Ret = ctypes.c_long() |