AioSetAiTransferSize


機能

ユーザーバッファモードの転送サイズを設定します。

書式

Ret = AioSetAiTransferSize ( Id, AutoMode, TransferSize )

引数

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

AutoMode [ C, C++ : short ][ Python : ctypes.c_short ]
転送サイズの設定方法を以下の範囲から指定します

マクロ

 

AI_TRANSFERSIZE_MANUAL

0

転送サイズを手動設定

AI_TRANSFERSIZE_AUTO

1

転送サイズを自動設定

TransferSize [ C, C++ : long ][Python : ctypes.c_long]
転送サイズの設定方法が手動設定の場合の転送サイズを指定します。
転送サイズはパケット数で指定します。

転送サイズの設定方法が自動設定の場合は0を指定してください。

戻り値

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

戻り値

内容

0

正常終了

7

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

10001

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

10002

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

20001

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

20002

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

20003

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

22520

ドライバ内部エラーが発生しました。

22521

AutoModeの値が使用しているデバイスの範囲外です。

22522

TransferSizeの値が使用しているデバイスの範囲外です。

初期値

すべてのデバイスで以下となります
AutoMode = 1
TransferSize = 転送サイズを自動で設定のためデバイスによって異なります。

AI-1664UG-PE
AIO-163202G-PE
AIO-163202UG-PE
AIO-123202G-PE
AIO-123202UG-PE

1

説明

ユーザーバッファモードで1回に転送する転送サイズを設定します。

転送サイズを自動設定の場合、クロックの種類に応じてデバイスドライバが自動的に設定する転送サイズが異なります。

内部クロックの場合

サンプリングクロック周期に応じた転送サイズが設定されます。

外部クロックの場合

転送サイズはデバイス毎に固定です。

利用デバイス

転送サイズ

AIO-163202G-PE
AIO-123202G-PE

5

AI-1664UG-PE
AIO-163202UG-PE
AIO-123202UG-PE

50

 

転送サイズを手動設定の場合、任意の転送サイズをパケット数で設定できます。
転送サイズを大きくするとCPU使用率が減少し動作が安定しますが、データの転送間隔が長くなります。
転送サイズを小さくするとデータの転送間隔を短くできますが、CPU使用率が上昇し動作が不安定になる場合があります。

転送サイズによってはクロック入力時に転送データ数が進まないことがありますが、サンプリングは行われております。
なお、転送完了時は、残りのデータも転送されます。

サンプリング動作中は設定不可
自動設定の場合、転送サイズはAioStartAi関数を実行したタイミングで固定されます。
サンプリング動作中にサンプリングクロック周期を変更しても転送サイズは変更されません。

設定された転送サイズはAioGetAiTransferSize関数で取得できます。

使用例

転送サイズを自動設定に設定します。

C, C++

long Ret;
Ret = AioSetAiTransferSize ( Id , AI_TRANSFERSIZE_AUTO , 0 );
 

Python

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