AioGetAiSamplingData


機能

デバイスメモリ(ソフトウェアメモリ)から指定サンプリング分のデータを読み込みます。
この関数はAioSetAiTransferMode関数で変換データ転送方式をデバイスバッファモードに設定した場合のみ使用できます。
変換データ転送方式がユーザーバッファの場合には使用できません。

書式

Ret = AioGetAiSamplingData ( Id , AiSamplingTimes , AiData )

引数

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

AiSamplingTimes [ C, C++: long * ] [ Python: ctypes.POINTER(ctypes.c_long) ]
取得するデータ
のサンプリング回数を格納した変数のアドレスを指定します。
関数実行後、実際に読み込まれたサンプリング数を返します。

AiData [ C, C++: long * ] [ Python: ctypes.POINTER(ctypes.c_long) ]
変換データを格納する配列のアドレスを指定します。変換データはバイナリ値で格納されます。

12ビット分解能のデバイス

0~4095

16ビット分解能のデバイス

0~65535

戻り値

Ret [ C, C++: long ] [ Python: ctypes.c_long ]

戻り値

内容

0

正常終了

7

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

10001

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

10002

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

11580

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

11581

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

11582

AiSamplingTimesの値が関数の指定範囲外です

20001

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

20003

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

21580

変換されたデータ数を超えるデータを取得しようとしました。
 AiSamplingTimesを最大サンプリング数に変更してデータを取得します。

21584

FIFOが空です

21585

メモリサイズを超えるデータを取得しようとしました、AiSamplingTimesを最大値に変更してデータを取得します

説明

AioStartAiで使用したチャネル分のデータを格納します。

メモリ形式により使用方法が異なります。

・FIFOメモリの場合
常に古いデータから読み込みを行います。
一度読み込んだデータを再度読み込むことはできません。
デバイスが動作中に使用可能です。

・RINGメモリの場合
最新のデータから、指定したサンプリング数のデータを取得します。
同じデータを繰り返し取得することができます。
デバイス動作中には使用できません。

この関数と簡易関数とを併用する場合は、「簡易関数と連続関数の混合使用について」の注意事項を参照ください。

アナログ入力機能を持たないデバイスでは使用できません。

 

使用例

1000サンプリング分のデータを読み込みます。

C, C++

long Ret;
long AiSamplingTimes;
long AiData[1000];
AiSamplingTimes = 1000;
Ret = AioGetAiSamplingData ( Id , &AiSamplingTimes , &AiData[0] );
 

Python

Ret = ctypes.c_long()
AiSamplingTimes = ctypes.c_long()
AiDataType = ctypes.c_long * 1000
AiData = AiDataType()
AiSamplingTimes.value = 1000
Ret.value = caio.AioGetAiSamplingData ( Id , ctypes.byref(AiSamplingTimes) , AiData )
 

関連項目

AioSetAiMemoryType AioGetAiMemoryType