ステップ6:メモリ形式の設定

デバイスバッファ、ユーザーバッファのそれぞれの転送モードで使用するメモリ形式を選択する事ができます。

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

1.FIFO

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

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

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

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

 

2.RING

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

この際、データの読み込みは、現在のデータ書き込み位置を基準にして行われます。

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

 

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

1.上書きなし

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

 

2.上書きあり

変換データの転送がユーザーバッファの最後まで行われても転送は停止しません。

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

 

メモリ形式の設定

メモリ形式を設定するにはAioSetAiMemoryType関数を使用します。

Ret = AioSetAiMemoryType ( Id , AiMemoryType )

デバイスバッファを使用する場合、FIFOでAiMemoryType = 0、RINGでMemoryType = 1を設定します。
ユーザーバッファを使用する場合、上書き無しでAiMemoryType = 0、上書きありでMemoryType = 1を設定します。