アナログ入力用ユーザーバッファは、利用デバイスによってデータ形式は異なります。
デバイス別のデータ形式を、以下に示します。
G-シリーズまたは、F-シリーズ(AIO-163202FX-USBを除く)の場合
Gシリーズ、または、Fシリーズ(AIO-163202FX-USBを除く)では、変換データは以下の形式でユーザーバッファに転送されます。
上図は0、1、計2チャネルを使用した場合のユーザーバッファへの転送方法を表したものです。
データ転送は、サイズが4バイトの転送パケットを最小単位に行われます。
1パケット中には、2個のAD変換データがバイナリ値で格納されます。
上図の例では1パケット中の下位2バイトに0チャネルのデータ、上位2バイトに1チャネルのデータが格納されます。
2チャネルを使用する場合では、1パケット(1転送回数)=1サンプリングとなります。
上図は0、1、2、計3チャネルを使用した場合のユーザーバッファへの転送方法を表したものです。
基本的には2個の変換データで1パケットを使用しますが、上図のように奇数チャネルを使用する場合、パケットの上位2バイトが未使用になります。
3チャネルを使用する場合では、2パケット(2転送回数)=1サンプリングとなります。
AIO-163202FX-USBの場合
AIO-163202FX-USBは、ユーザーバッファに対応していません。
Z-シリーズの場合
AI-1204Z-PCIなどのZ-シリーズデバイスでは、データの格納方法がFシリーズとは異なります。
データ転送は、サイズが4バイトの転送パケットを最小単位に行われます。
1パケット中には、2個のAD変換データがバイナリ値で格納されるのはFシリーズデバイスと同じですが、データ1個分は以下のように格納されます。
1データ(1パケットの半分のデータ)は16bitデータとなっています。
そのうち、下位12bitが実際のデータになっています。
上位4bitデータのうち、上の図の斜線部である下位3bit分のデータはデバイス内の計算で使用する為のデータで、ユーザ様にとっては不要のデータとなってます。
よってここのデータは無視するようにアプリケーションを作成して頂く必要があります。
最上位1bitが12bitデータが有効であるか無効であるかを判別するためのビットです。
このビットが1の時はデータは無効データ、0の時は有効データとなります。
よって、ユーザーバッファを使用するときは、最下位ビットが0であるか1であるかの判別をして有効データであるか無効データであるかを判別する必要があります。
データの転送方法はFシリーズと同様パケット単位で行われます。
詳しくはAioSetAiTransferDataやAioSetAiStopTimesをご覧下さい。
使用チャネルの数、及び転送回数が偶数の場合と奇数の場合ではパケット単位でのデータの格納方法がFシリーズとは違いますので注意してください。
以下、1パケットをと表現します。
使用チャネル数1の場合(例:0chのみ使用)
使用チャネルが1chの場合で転送回数設定が偶数の場合はデータは1パケット毎に隙間無く格納されますので、転送回数設定による注意点はありません。
転送回数設定が奇数の場合は最後のパケットの上位2バイトに無効データが格納されます。
下位パケットの最上位1ビット目に1が立っており、このビットが立っている場合はアプリケーション上で無視するようにプログラミングする必要があります。
使用チャネル数2の場合(例:0ch,
1ch)
使用チャネルが2chの場合、データは1パケット毎に隙間無く格納されますので、転送回数設定による注意点はありません。
使用チャネル数3の場合(例:0ch, 1ch, 2ch)
使用チャネルが3chの場合は転送回数設定によらず、偶数パケットのデータパケットの上位2バイトに無効データが格納されます。
上位パケットの最上位ビットに1が立っており、このデータはアプリケーション上で無視するようにプログラミングする必要があります。
使用チャネル数4の場合(例:0ch, 1ch,
2ch, 3ch)
使用チャネルが4chの場合は2パケット毎にデータが隙間無く格納されますので、転送回数設定による注意点はありません。