DioDmGetStatus


機能

転送ステータスの取得を行います。

書式

Ret = DioDmGetStatus ( Id , Dir , &Status , &Err )

引数

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

出力

Status [ C:unsigned long *] [ Python: ctypes.POINTER(ctypes.c_ulong) ]
ステータス情報(ステータス、警告)を返します。
ステータスは、以下に示す値の論理和で表されます。

定義


[Hex]

入出力

意味

DIODM_STATUS_BMSTOP

0x01

入力/出力

バスマスタ転送が完了したことを示します。

DIODM_STATUS_PIOSTART

0x02

入力/出力

PIO入出力がスタートしたことを示します。

DIODM_STATUS_PIOSTOP

0x04

入力/出力

PIO入出力がストップしたことを示します。

DIODM_STATUS_TRGIN

0x08

入力/出力

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

DIODM_STATUS_OVERRUN

0x10

入力/出力

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

転送は問題なく続けられます。

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

 

Err [ C:unsigned long *] [ Python: ctypes.POINTER(ctypes.c_ulong) ]
エラー情報を返します。
エラーは、以下に示す値の論理和で表されます。

定義


[Hex]

入出力

意味

DIODM_STATUS_FIFOEMPTY

0x01

出力のみ

出力でFIFOが空になったことを示します。

主要因は、システムの負荷が高くバスマスタ転送が間に合わないためです。

転送レートを下げる、システム付加を軽くするなどの対策が必要です。

DIODM_STATUS_FIFOFULL

0x02

入力のみ

入力でFIFOが一杯になったことを示します。

主要因は、システムの負荷が高くバスマスタ転送が間に合わないためです。

転送レートを下げる、システム付加を軽くするなどの対策が必要です。

DIODM_STATUS_SGOVERIN

0x04

入力のみ

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

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

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

DIODM_STATUS_TRGERR

0x08

入力/出力

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

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

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

DIODM_STATUS_CLKERR

0x10

入力/出力

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

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

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

DIODM_STATUS_SLAVEHALT

0x20

入力/出力

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

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

DIODM_STATUS_MASTERHALT

0x40

入力/出力

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

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

 

戻り値

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

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

DIO_ERR_DLL_BUFF_ADDRESS

10100

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

DIO_ERR_SYS_DIRECTION

50000

入出力方向が設定範囲外です。

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

初期値

なし

説明

各ステータス、エラーは、入力/出力毎、ボード毎に存在します。転送完了後は、必ずステータスをチェックするようにしてください。

使用例

C

Ret =DioDmGetStatus(Id, DIODM_DIR_IN, &Status, &Err);
 

Python

Ret =cdio.DioDmGetStatus(Id, cdio.DIODM_DIR_IN, ctypes.byref(Status), ctypes.byref(Err))
 

関連項目

なし