AioGetAiTransferSamplingCount


機能

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

書式

Ret = AioGetAiTransferSamplingCount ( Id , AiTransferCount , LapCount , LapCarry , ScanCount , ScanCarry )

引数

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

AiTransferCount [ VB: Long ] [ VB.NET: Integer ] [ C, C++: unsigned long * ] [ C++/CLI: unsigned long * ] [ C#: out unsigned int ] [ Delphi: PLongint ]
転送されたデータ位置を格納する変数のアドレスを指定します。

LapCount [ VB: ULong ] [ VB.NET: UInteger ] [ C, C++: unsigned long * ] [ C++/CLI: unsigned long * ] [ C#: out unsigned int ] [ Delphi: PLongint ]
ラップカウントを格納する変数のアドレスを指定します。

LapCarry [ VB: ULong ] [ VB.NET: UInteger ] [ C, C++: unsigned long * ] [ C++/CLI: unsigned long * ] [ C#: out unsigned int ] [ Delphi: PLongint ]
ラップキャリーを格納する変数のアドレスを指定します。

ScanCount [ VB: Long ] [ VB.NET: UInteger ] [ C, C++: unsigned long * ] [ C++/CLI: unsigned long * ] [ C#: out unsigned int ] [ Delphi: PLongint ]
スキャンカウントを格納する変数のアドレスを指定します。

ScanCarry [ VB: ULong ] [ VB.NET: UInteger ] [ C, C++: unsigned long * ] [ C++/CLI: unsigned long * ] [ C#: out unsigned int ] [ Delphi: PLongint ]
スキャンキャリーを格納する変数のアドレスを指定します。

戻り値

Ret [ VB: Long ] [ VB.NET: Integer ] [ C, C++: long ] [ C++/CLI: long ] [ C#: int ] [ Delphi: Longint ]

戻り値

内容

0

正常終了

7

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

10001

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

10002

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

18210

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

18211

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

18212

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

20001

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

20003

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

初期値

全てのデバイスでAiTransferCount = LapCount = LapCarry = ScanCount = ScanCarry = 0

説明

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

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

上書き回数、総転送データ数はそれぞれ64bitカウンタになっています。
上書き回数はLapCarryが上位32bit、LapCountが下位32bitとなります。
総転送データ数はScanCarryが上位32bit、ScanCountが下位32bitとなります。

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

使用例

ユーザーメモリに転送されたデータ位置、上書き回数、総転送データ数を取得します。

VB

Dim Ret As Long
Dim AiTransferCount As Long
Dim LapCount As ULong
Dim LapCarry As ULong
Dim ScanCount As ULong
Dim ScanCarry As ULong
Ret = AioGetAiTransferCount ( Id , AiTransferCount , LapCount , LapCarry , ScanCount , ScanCarry )
 

VB.NET

Dim Ret As Integer
Dim AiTransferCount As Integer
Dim LapCount As UInteger
Dim LapCarry As UInteger
Dim ScanCount As UInteger
Dim ScanCarry As UInteger
Ret = AioGetAiTransferCount ( Id , AiTransferCount , LapCount , LapCarry , ScanCount , ScanCarry )
 

C, C++

long Ret;
long AiTransferCount;
unsigned long LapCount;
unsigned long LapCarry;
unsigned long ScanCount;
unsigned long ScanCarry;
Ret = AioGetAiTransferCount ( Id , &AiTransferCount , &LapCount , &LapCarry , &ScanCount , &ScanCarry );
 

C++/CLI

long Ret;
long AiTransferCount;
unsigned long LapCount;
unsigned long LapCarry;
unsigned long ScanCount;
unsigned long ScanCarry;
Ret = AioGetAiTransferCount ( Id , &AiTransferCount , &LapCount , &LapCarry , &ScanCount , &ScanCarry );
 

C#

int Ret;
int AiTransferCount;
unsigned int LapCount;
unsigned int LapCarry;
unsigned int ScanCount;
unsigned int ScanCarry;
Ret = aio.GetAiTransferCount ( Id , out AiTransferCount , out LapCount , out LapCarry , out ScanCount , out ScanCarry );
 

Delphi

Ret: Longint;
AiTransferCount: Longint;
LapCount: Longint;
LapCarry: Longint;
ScanCount: Longint;
ScanCarry: Longint;
Ret := AioGetAiTransferCount ( Id , @AiTransferCount , @LapCount , @LapCarry , @ScanCount , @ScanCarry );