機能
サンプリングステータスを取得します。
書式
Ret = CntGetSamplingStatus ( Id , Status , Err )
引数
Id
[ C: short ] [ Python: ctypes.c_short ]
CntInitで取得したデバイスIDを指定します。
Status
[ C: unsigned int * ] [ Python: ctypes.POINTER(ctypes.c_uint) ]
ステータス情報(ステータス、警告)を返します。
いずれの条件も満たしていない場合は「0」となります。
例えば、一度もサンプリングスタートしていない場合や、開始条件でソフトウェアスタート以外を設定して開始条件が満たされない場合など。
定義 |
値 |
意味 |
CNTS_STATUS_BMSTOP |
01H |
サンプリングバッファへのデータの転送が完了したことを示します。 転送完了の判断に使用します。 |
CNTS_STATUS_CNTSTART |
02H |
カウンタサンプリングが開始したことを示します。 |
CNTS_STATUS_CNTSTOP |
04H |
カウンタサンプリングが終了したことを示します。 |
CNTS_STATUS_TRGIN |
08H |
外部スタートでスタート信号が入ったことを示します。 |
CNTS_STATUS_OVERRUN |
10H |
外部スタートでスタート信号が2回以上はいったことを示します。 外部接続信号の仕様上問題がなければ無視してください。 |
Err
[ C: unsigned int * ] [ Python: ctypes.POINTER(ctypes.c_uint) ]
エラー情報を返します。
定義 |
値 |
意味 |
CNTS_STATUS_FIFOFULL |
02H |
FIFOがいっぱいになったことを示します。 主原因は、システムの負荷が高くサンプリングが間に合わないためです。 転送レートを下げる、システムの負荷を下げる等の対策が必要です。 |
CNTS_STATUS_SGOVERIN |
04H |
バッファがオーバーフローしたことを示します。 転送しようとしたデータ数がバッファのサイズを超えています。 バッファサイズを大きくしてください。 |
CNTS_STATUS_TRGERR |
08H |
外部スタートで、スタート信号とストップ信号が同時に入ったことを示します。 このステータスが立った場合、転送は行われません。 外部スタート信号と外部ストップ信号の入り方を確認してください。 |
CNTS_STATUS_CLKERR |
10H |
外部クロックで入力中に次のクロックが入ったことを示します。 このステータスが立った場合、指定のサンプリングクロックではサンプリングできません。 外部クロックの周期を下げることを検討してください。 なお、サンプリング開始時に一度サンプリングが行われることに注意してください。 このサンプリング時に外部クロックが入った場合にもこのエラーが発生します。 |
戻り値
Ret [ C: long ] [ Python: ctypes.c_long ]
定義 |
値 |
意味 |
CNT_ERR_SUCCESS |
0 |
正常終了 |
CNT_ERR_DLL_INVALID_ID |
10001 |
無効なIDが指定されました |
CNT_ERR_DLL_CALL_DRIVER |
10002 |
ドライバを呼び出せません。(ioctlに失敗) |
CNT_ERR_DLL_BUFF_ADDRESS |
10101 |
データバッファアドレスが不正です |
CNT_ERR_SYS_MEMORY |
20000 |
メモリの確保に失敗しました |
CNT_ERR_SYS_USING_OTHER_PROCESS |
20003 |
他のプロセスがデバイスを使用しているため、実行できません |
その他のエラー(参照:エラーコード詳細)
説明
転送完了後は、必ずステータスをチェックするようにしてください。
通常、転送完了の確認にはCntNotifySamplingStop関数を使用しますが、この関数を使用してサンプリングの完了を確認する場合は CNTS_STATUS_BMSTOP のステータスを監視します。
使用例
C |
Ret = CntGetSamplingStatus(Id,
&Status, &Err); |
Python |
Ret = ccnt.CntGetSamplingStatus(Id,
ctypes.byref(Status), ctypes.byref(Err)) |