CntSamplingSetBuffer


機能

サンプリングバッファを設定します。

書式

Ret = CntSamplingSetBuffer ( Id , Buffer , ChNum , ScanNum , IsRing )

引数

Id [ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short ]
CntInitで取得したデバイスIDを指定します。

Buffer [ VB.NET: IntPtr ] [ C, C++: unsigned long * ] [ C#: IntPtr ] [ Python: ctypes.POINTER(ctypes.c_ulong) ]
バッファの先頭アドレスを指定してください。

ChNum [ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short ]
バッファのチャネル数を指定してください。

ScanNum [ VB.NET: Integer ] [ C, C++: unsigned long ] [ C#: uint ] [ Python: ctypes.c_ulong ]
バッファのスキャン回数(データ個数)を指定してください。1データは4Byteです。

「ChNum(チャネル数) × ScanNum(データ個数) 」の値は、デバイス毎にそれぞれに以下の範囲で指定できます。

デバイス名称

設定可能範囲

CNT-3204IN-USB

ChNum(チャネル数) × ScanNum(データ個数) × 4Byte(データ単位) ≦ 64MByte

CNT32-8M(PCI)
CNT32-4MT(LPCI)
CNT-3204MT-LPE
CNT-3208M-PE

これらのデバイスは、32bitバス幅でバスマスタ転送を実現しています。

32bitバス幅でのバスマスタ転送は、利用OSよるバッファサイズ制限を受けます。

 

最大64MByteのバスマスタ転送ができるようにハードウェア設計されています。

しかしながら、OS制限により64MBytesまで設定できません。ご注意ください。

詳細は以下の通りです。

利用OS

設定可能範囲

Windows10 Version 1703 以降
 (Windows 11も含む)

ChNum x ScanNum x 4Byte ≦ 2MByte

Windows10 Version 1607 以前

ChNum x ScanNum x 4Byte ≦ 1MByte

 

※物理アドレス空間へのマッピングのされ方によっては、バスマスタ用バッファサイズを最大領域まで設定できない場合があります。

IsRing [ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short ]
バッファを繰り返して使用するかどうかを設定してください。

定義

意味

CNTS_WRITE_ONCE

0

1回転送

CNTS_WRITE_RING

1

無限回転送

戻り値

Ret [ VB.NET: Integer ] [ C, C++: long ] [ C#: int ] [ Python: ctypes.c_long ]

定義

意味

CNT_ERR_SUCCESS

0

正常終了

CNT_ERR_SYS_RECOVERED_FROM_STANDBY

7

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

CNT_ERR_DLL_INVALID_ID

10001

無効なIDが指定されました

CNT_ERR_DLL_CALL_DRIVER

10002

 ドライバーを呼び出せません。(デバイスI/Oコントロールに失敗)

CNT_ERR_DLL_BUFF_ADDRESS

10101

データバッファアドレスが不正です

CNT_ERR_SYS_MEMORY

20000

メモリの確保に失敗しました

CNT_ERR_SYS_NOT_SUPPORTED

20001

このデバイスではこの関数は使用できません

CNT_ERR_SYS_USING_OTHER_PROCESS

20003

他のプロセスがデバイスを使用しているため、実行できません

CNT_ERR_SYS_BUFFER

21100

バッファが大きすぎて確保できませんでした

CNT_ERR_SYS_LOCK_MEMORY

21101

メモリがロックできませんでした

CNT_ERR_SYS_SEQUENCE

21102

実行手順エラー

その他のエラー(参照:エラーコード詳細

説明

バッファ設定は、転送開始前に毎回必ず実行してください。

USBデバイスの場合も、システムのメモリ状況によっては、64MByteの領域を設定できない場合があります。

サンプリング中にこの関数を実行した場合、実行手順エラーが発生します。
必ず、サンプリングが完了したことを確認してから実行してください。

使用例

チャネル0に対して、10000データ分のバッファを設定します。バッファは無限回転送として使用します。

VB.NET

VisualBasic.NETでご使用の際の注意点を参照してください。
 

C, C++

long Ret;
unsigned long Buffer[10000];
Ret = CntSamplingSetBuffer ( Id , &Buffer[0] , 1 , 10000 , CNTS_WRITE_RING );
 

C#

VisualC#.NETでご使用の際の注意点 を参照してください。
 

Python

Ret = ctypes.c_long()
BufferType = ctypes.c_ulong * 10000
Buffer = BufferType()
Ret.value = ccnt.CntSamplingSetBuffer ( Id , Buffer , 1 , 10000 , ccnt.CNTS_WRITE_RING )
 

関連項目

CntSamplingStart