AioSetAiMemoryType


機能

データ格納用メモリ形式の設定を行います。

書式

Ret = AioSetAiMemoryType ( Id , AiMemoryType )

引数

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

AiMemoryType [ C, C++: short ] [ Python: ctypes.c_short ]
データ格納用メモリ形式を以下の範囲から指定します。

デバイスバッファ使用時

0

FIFO

1

RING

ユーザーバッファ使用時

0

メモリへの上書きなし

1

メモリへの上書きあり

戻り値

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

戻り値

内容

0

正常終了

7

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

10001

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

10002

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

11080

AiMemoryTypeの値が関数の指定範囲外です
AiMemoryTypeは0(FIFO)か1(RING)を設定してください。

20001

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

20002

デバイスが動作中のため実行できません
この関数を使用するには、アナログ入力動作が停止している必要があります。

20003

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

21080

AiMemoryTypeの値が使用しているデバイスの指定範囲外です

初期値

すべてのデバイスで、デバイスバッファ使用時FIFO、ユーザーバッファ使用時上書きなし

説明

デバイスバッファのメモリ形式

1.FIFO

FIFO(First In First Out)形式では、メモリへの変換データ書き込みは常に最新のデータの後に続いて行われ、メモリからのデータ読み込みは常に一番古いデータから行われます。

メモリのすべてに変換データが格納された状態でさらに変換データを格納しようとすると、オーバーフローエラーが発生し変換は停止します。

FIFOではAD変換中にデータを読み込むことができます。メモリがオーバーフローしないように定期的にデータの読み込みを行うことで、メモリ容量以上の長時間サンプリングが可能です。

FIFO形式は、全ての変換データを取得する場合に使用します。指定回数のサンプリングから、無限サンプリングまで様々な条件でのアナログ入力に使用することができます。

2.RING

RING形式では、変換データは順次書き込まれていき、メモリの上限を超えて格納するときは古い変換データに上書きして格納していきます。メモリからのデータの読み込みは任意の場所で行うことができます。データの読み込みは、現在のデータ書き込み位置を基準にして行われます。

RING形式は、ある特定条件におけるデータを取得する場合に使用します。例えば、外部トリガ停止前後のデータが必要な場合や、コマンド(AioStopAi)を実行した瞬間のデータを取得する場合などはRINGメモリを使用します。

ユーザーバッファのメモリ形式

1.上書きなし

変換データの転送がユーザーバッファの最後まで行われると転送が停止します。
サンプリング回数があらかじめ確定している場合に有効なメモリ形式です。

2.上書きあり

変換データの転送がユーザーバッファの最後まで行われても転送は停止しません。
変換停止条件が成立するまで、メモリは上書きされ転送が行われます。
長時間のモニタリングや、全てのデータを必要とする無限サンプリングにも使用できます。

 

アナログ入力機能を持たないデバイスでは使用できません。
デバイスが動作中の場合、この関数は実行できません。

使用例

データ格納用メモリをFIFOに設定します。

C, C++

long Ret;
Ret = AioSetAiMemoryType ( Id , 0 );
 

Python

Ret = ctypes.c_long()
Ret.value = caio.AioSetAiMemoryType ( Id , 0 )
 

関連項目

AioGetAiMemoryType