AioGetAiTransferCount


機能

ユーザーメモリに転送されたデータ数を取得します。
この関数はAioSetAiTransferMode関数で変換データ転送方式をユーザーバッファモードに設定した場合のみ使用できます。
変換データ転送方式がデバイスバッファの場合には使用できません。

書式

Ret = AioGetAiTransferCount ( Id , AiTransferCount )

引数

Id [ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short ]
AioInit 関数で取得したデバイスIDを指定します。

AiTransferCount [ VB.NET: Integer ] [ C, C++: long * ] [ C#: out int ] [ Python: ctypes.POINTER(ctypes.c_long) ]
転送回数を格納する変数のアドレスを指定します。

戻り値

Ret [ VB.NET: Integer ] [ C, C++: long ] [ C#: int ] [ Python: ctypes.c_long ]

戻り値

内容

0

正常終了

7

スタンバイモードから復帰したため、AioResetDevice関数を実行してください

10001

無効なIDが指定されました
関数に指定するIDは、AioInitで取得したIDを使用してください。

10002

ドライバを呼び出せません
始めにAioInit関数を実行しください。

12140

AiTransferCountのポインタがNULLです
パラメータには変数のアドレスを指定してください。

20001

使用しているデバイスではこの関数を使用することができません

20003

他のプロセスがデバイスを使用しているため、実行できません
他のプロセスがデバイスを使用しているときは、マルチプロセス対応関数以外実行できません。

初期値

全てのデバイスでAiTransferCount = 0

説明

AioStartAiにより変換が開始されると、AiTransferCountは自動的に0にリセットされます。

全転送カウントではなく、ユーザーバッファ上での転送位置になります。
ユーザーバッファ使用時、AioStartAi/AioStartAiSync 関数を実行するとバッファの先頭から変換データを格納します。

メモリの切れ目で転送回数が0に戻ります。
AioGetAiTransferLap関数と組み合わせることで、全転送回数を確認できます。
AioSetAiMemoryType関数にて、「メモリへの上書きなし」に設定する場合は、予定転送回数よりも大きなバッファをAioSetAiTransferData関数で確保することにより、転送回数が0に戻ることを回避できます。
デバイス動作中での実行が可能です。
アナログ入力機能を持たないデバイスでは使用できません。

バイス別仕様

AI-1204Z-PE
AI-1204Z-PCI

最適化のため128~512サンプリング毎にPC側へのデータ転送処理を行います。
そのため、クロック入力時にカウントが進まないことがありますが、サンプリングは行われております。
なお、転送完了時は、残りのデータも転送されます。

使用例

ユーザーメモリに転送されたデータ数を取得します。

VB.NET

Dim Ret As Integer
Dim AiTransferCount As Integer
Ret = AioGetAiTransferCount ( Id , AiTransferCount )
 

C, C++

long Ret;
long AiTransferCount;
Ret = AioGetAiTransferCount ( Id , &AiTransferCount );
 

C#

int Ret;
int AiTransferCount;
Ret = aio.GetAiTransferCount ( Id , out AiTransferCount );
 

Python

Ret = ctypes.c_long()
AiTransferCount = ctypes.c_long()
Ret.value = caio.AioGetAiTransferCount ( Id , ctypes.byref(AiTransferCount) )