DioDmSetBuff


機能

サンプリング/ジェネレーティングに使用するデータバッファの設定を行います。

書式

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)
DIO-32DM2-PE

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)
 

関連項目

なし