機能
サンプリング/ジェネレーティングに使用するデータバッファの設定を行います。
書式
Ret = DioDmSetBuff ( Id , Dir , Buff , Len , IsRing )
引数
Id
[ C: short ] [ Python: ctypes.c_short ]
DioInitで取得したデバイスIDを指定します。
Dir[C:unsigned
long] [Python: ctypes.c_ulong]
転送方向を設定してください。
定義 |
値 [Dec] |
意味 |
DIODM_DIR_IN |
1 |
入力 |
DIODM_DIR_OUT |
2 |
出力 |
Buff
[C:unsigned long *] [ Python: ctypes.POINTER(ctypes.c_ulong) ]
バッファの先頭アドレスを指定してください。64bitOSをご使用の場合、バッファはunsigned int型で宣言し、先頭アドレスをunsigned
long *型にキャストして渡してください。
Len
[ C:unsigned long ] [ Python: ctypes.c_ulong ]
データ個数を指定してください。
デバイス名称 |
OS |
設定可能範囲 |
DIO-32DM3-PE |
64ビットOS |
Length(データ個数)×4Byte(データ単位)≦2GByte |
PIO-32DM(PCI) |
32ビットOS |
Length(データ個数)×4Byte(データ単位)≦64MByte |
IsRing
[C:unsigned long] [Python: ctypes.c_ulong]
バッファを繰り返して使用するかどうかを設定してください。
定義 |
値 [Dec] |
意味 |
DIODM_WRITE_ONCE |
1 |
1回転送 |
DIODM_WRITE_RING |
2 |
無限回転送 |
戻り値
Ret [ C: long ] [ Python: ctypes.c_long ]
定義 |
値 [Dec] |
意味 |
DIO_ERR_SUCCESS |
0 |
正常終了 |
DIO_ERR_DLL_INVALID_ID |
10001 |
無効なIDが指定されました。 |
DIO_ERR_DLL_CALL_DRIVER |
10002 |
ドライバを呼び出せません(ioctlに失敗)。 |
DIO_ERR_DLL_BUFF_ADDRESS |
10100 |
データバッファアドレスが不正です。 |
DIO_ERR_SYS_MEMORY |
20000 |
メモリが確保できなかった |
DIO_ERR_SYS_DIRECTION |
50000 |
入出力方向が設定範囲外です。 |
DIO_ERR_DM_BUFFER |
50100 |
バッファが大きすぎて確保できませんでした。 |
DIO_ERR_DM_LOCK_MEMORY |
50101 |
メモリがロックできませんでした。 |
DIO_ERR_DM_SEQUENCE |
50103 |
実行手順エラー |
その他のエラー(参照:エラーコード詳細)
初期値
なし
説明
・バッファ設定は、転送開始前に毎回必ず実行してください。
・バッファ領域の物理アドレス空間へのマッピングのされ方によっては、バッファサイズを最大領域まで設定できない場合があります。
・DIO-32DM3-PE の場合、バッファサイズを2KByte未満に設定し、無限回転送を行う場合、ハードウェアの制限により転送レートが低下します。
・サンプリング/ジェネレーティング中にこの関数を実行した場合、実行手順エラーが発生します。必ず、サンプリング/ジェネレーティングが完了したことを確認してから実行してください。
・入出力設定を、PIO_1616に設定している場合でも、出力データは、PO_32に設定しているときと同様にバッファの0ビット目から設定します。16ビット分左へシフトする必要はありません。
使用例
C |
Ret =DioDmSetBuff(Id,
DIODM_DIR_IN, Buff, 1000, DIODM_WRITE_ONCE); |
Python |
Ret =cdio.DioDmSetBuff(Id,
cdio.DIODM_DIR_IN, Buff, 1000, cdio.DIODM_WRITE_ONCE) |
関連項目
なし