デバイスバッファ、ユーザーバッファのそれぞれの転送モードで使用するメモリ形式を選択する事ができます。
デバイスバッファのメモリ形式
1. FIFO
FIFO(First In First Out)形式では、メモリへの変換データ書き込みは常に最新のデータの後に続いて行われ、メモリからのデータ出力は常に一番古いデータから行われます。
メモリの容量以上のデータが追加されると、AioSetAoSamplingData関数、または、AioSetAoSamplingDataEx関数でエラーが返ります。
ただし、関数でエラーが発生しても、変換動作には影響しません。
変換中の場合、出力データは出力を継続します。
FIFOではDA変換中にデータを追加設定することができます。
出力データが空にならないように定期的にデータの書き込みを行うことで、メモリ容量以上の長時間ジェネレーティングが可能です。
2. RING
RING形式では、出力するチャネル数やジェネレーティング回数に応じてメモリ容量が決まります。
設定されたデータは繰り返し出力されます。繰り返しの数を任意に設定でき、無限に出力することも可能です。
一定波形を無限に出力するような、ファンクションジェネレータ的な使い方ができます。
ユーザーバッファのメモリ形式
1.上書きなし
出力データの転送がユーザーバッファの最後まで行われると転送が停止します。
ジェネレーティング回数があらかじめ確定している場合に有効なメモリ形式です。
2.上書きあり
出力データの転送がユーザーバッファの最後まで行われても転送は停止しません。
変換停止条件が成立するまで、繰り返し転送が行われます。
一定波形を無限に出力するような、ファンクションジェネレータ的な使い方ができます。
メモリ形式の設定
メモリ形式を設定するにはAioSetAoMemoryType関数を使用します。
Ret = AioSetAoMemoryType ( Id , AoMemoryType )
デバイスバッファを使用する場合、FIFOでAiMemoryType = 0、RINGでMemoryType
= 1を設定します。
ユーザーバッファを使用する場合、繰り返し出力無しでAiMemoryType = 0、繰り返し出力ありでMemoryType = 1を設定します。