サンプリング/ジェネレーティングに使用するデータバッファの設定を行います。
Ret = DioDmSetBuffer ( Id , Direction , Buffer , Length , IsRing )
Id
[ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short
]
DioInitで取得したデバイスIDを指定します。
Direction
[ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short
]
転送方向を設定してください。
定義 |
値 [Dec] |
意味 |
DIODM_DIR_IN |
1 |
入力 |
DIODM_DIR_OUT |
2 |
出力 |
Buffer
[ VB.NET: IntPtr ] [ C, C++: unsigned long * ] [ C#: IntPtr ] [ Python:
ctypes.POINTER(ctypes.c_ulong) ]
バッファの先頭アドレスを指定してください。
Length
[ VB.NET: Integer ] [ C, C++: unsigned long ] [ C#: uint ] [ Python: ctypes.c_ulong
]
データ個数を指定してください。1データは4Byteです。
データ個数は、デバイス毎に入力側、出力側それぞれに以下の範囲で指定できます。
デバイス名称 |
設定可能範囲 |
||||||
DIO-32DM3-PE |
設定可能なLengthは1~536870912(2GBytes分)です。
これらのデバイスは、64bitバス幅でバスマスタ転送を実現しています。 64bitバス幅でのバスマスタ転送は、利用OSによるバッファサイズ制限はありません。
|
||||||
PIO-32DM(PCI) |
これらのデバイスは、32bitバス幅でバスマスタ転送を実現しています。 32bitバス幅でのバスマスタ転送は、利用OSよるバッファサイズ制限を受けます。
最大64MByteのバスマスタ転送ができるようにハードウェア設計されています。 しかしながら、OS制限によりLengthは16777216(64MBytes分)まで設定できません。ご注意ください。 詳細は以下の通りです。
|
※物理アドレス空間へのマッピングのされ方によっては、バスマスタ用バッファサイズを最大領域まで設定できない場合があります。
IsRing
[ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short
]
バッファを繰り返して使用するかどうかを設定してください。
定義 |
値 [Dec] |
意味 |
DIODM_WRITE_ONCE |
0 |
1回転送 |
DIODM_WRITE_RING |
1 |
無限回転送 |
Ret [ VB.NET: Integer ] [ C, C++: long ] [ C#: int ] [ Python: ctypes.c_long ]
定義 |
値 [Dec] |
意味 |
DIO_ERR_SUCCESS |
0 |
正常終了 |
DIO_ERR_SYS_RECOVERED_FROM_STANDBY |
7 |
スタンバイモードから復帰したため、DioResetDevice関数を実行してください |
DIO_ERR_DLL_INVALID_ID |
10001 |
無効なIDが指定されました。 |
DIO_ERR_DLL_CALL_DRIVER |
10002 |
ドライバーを呼び出せません(デバイスI/Oコントロールに失敗)。 |
DIO_ERR_DLL_BUFF_ADDRESS |
10100 |
データバッファアドレスが不正です。 |
DIO_ERR_SYS_NOT_SUPPORTED |
20001 |
このデバイスではこの関数は使用できません。 |
DIO_ERR_SYS_IODIRECTION |
20500 |
入出力方向が設定範囲外です。 |
DIO_ERR_DM_BUFFER |
21100 |
バッファが大きすぎて確保できませんでした。 |
DIO_ERR_DM_LOCK_MEMORY |
21101 |
メモリがロックできませんでした。 |
DIO_ERR_DM_SEQUENCE |
21103 |
実行手順エラー |
その他のエラー(参照:エラーコード詳細)
なし
・バッファ設定は、転送開始前に毎回必ず実行してください。
・DIO-32DM3-PE の場合、バッファサイズを2KByte未満に設定し、無限回転送を行う場合、ハードウェアの制限により転送レートが低下します。
・サンプリング/ジェネレーティング中にこの関数を実行した場合、実行手順エラーが発生します。必ず、サンプリング/ジェネレーティングが完了したことを確認してから実行してください。
・入出力設定を、PIO_1616に設定している場合でも、出力データは、PO_32に設定しているときと同様にバッファの0ビット目から設定します。16ビット分左へシフトする必要はありません。
入力転送に対して、10000個のバッファを無限回転送で設定します。
VB.NET |
VisualBasic.NETでご使用の際の注意点
を参照してください。 |
C, C++ |
long Ret; |
C# |
VisualC#.NETでご使用の際の注意点
を参照してください。 |
Python |
Ret = ctypes.c_long() |