CntGetSamplingStatus


機能

サンプリングステータスを取得します。

書式

Ret = CntGetSamplingStatus ( Id , Status , Err )

引数

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

Status [ VB.NET: Integer ] [ C, C++: unsigned long * ] [ C#: out uint ] [ Python: ctypes.POINTER(ctypes.c_ulong) ]
ステータス情報(ステータス、警告)を返します。

いずれの条件も満たしていない場合は「0」となります。
例えば、一度もサンプリングスタートしていない場合や、開始条件でソフトウェアスタート以外を設定して開始条件が満たされない場合など。

定義

意味

CNTS_STATUS_BMSTOP

01H

サンプリングバッファへのデータの転送が完了したことを示します。
転送完了の判断に使用します。

CNTS_STATUS_CNTSTART

02H

カウンタサンプリングが開始したことを示します。

CNTS_STATUS_CNTSTOP

04H

カウンタサンプリングが終了したことを示します。

CNTS_STATUS_TRGIN

08H

外部スタートでスタート信号が入ったことを示します。

CNTS_STATUS_OVERRUN

10H

外部スタートでスタート信号が2回以上はいったことを示します。

外部接続信号の仕様上問題がなければ無視してください。

 

Err [ VB.NET: Integer ] [ C, C++: unsigned long * ] [ C#: out uint ] [ Python: ctypes.POINTER(ctypes.c_ulong) ]
エラー情報を返します。

定義

意味

CNTS_STATUS_FIFOFULL

02H

FIFOがいっぱいになったことを示します。

主原因は、システムの負荷が高くサンプリングが間に合わないためです。

転送レートを下げる、システムの負荷を下げる等の対策が必要です。

CNTS_STATUS_SGOVERIN

04H

バッファがオーバーフローしたことを示します。

転送しようとしたデータ数がバッファのサイズを超えています。

バッファサイズを大きくしてください。

CNTS_STATUS_TRGERR

08H

外部スタートで、スタート信号とストップ信号が同時に入ったことを示します。

このステータスが立った場合、転送は行われません。

外部スタート信号と外部ストップ信号の入り方を確認してください。

CNTS_STATUS_CLKERR

10H

外部クロックで入力中に次のクロックが入ったことを示します。

このステータスが立った場合、指定のサンプリングクロックではサンプリングできません。

外部クロックの周期を下げることを検討してください。

なお、サンプリング開始時に一度サンプリングが行われることに注意してください。

このサンプリング時に外部クロックが入った場合にもこのエラーが発生します。

CNTS_STATUS_SLAVEHALT

20H

スレーブからの停止要因で強制停止したことを示します。

スレーブ側のエラーを確認してください。

CNTS_STATUS_MASTERHALT

40H

マスターからの停止要因で強制停止したことを示します。

マスター側のエラーを確認してください。

 

戻り値

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

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

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

説明

転送完了後は、必ずステータスをチェックするようにしてください。

通常、転送完了の確認にはCntNotifySamplingStop関数を使用しますが、この関数を使用してサンプリングの完了を確認する場合はCNTS_STATUS_BMSTOP のステータスを監視します。

使用例

サンプリングステータスを取得します。

VB.NET

Dim Ret As Integer
Dim Status As Integer
Dim Err As Integer
Ret = CntGetSamplingStatus ( Id , Status , Err )
 

C, C++

long Ret;
unsigned long Status;
unsigned long Err;
Ret = CntGetSamplingStatus ( Id , &Status , &Err );
 

C#

int Ret;
uint Status;
uint Err;
Ret = cnt.GetSamplingStatus ( Id , out Status , out Err );
 

Python

Ret = ctypes.c_long()
Status = ctypes.c_ulong()
Err = ctypes.c_ulong()
Ret.value = ccnt.CntGetSamplingStatus ( Id , ctypes.byref(Status) , ctypes.byref(Err) )