DioDmGetStatus


機能

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

書式

Ret = DioDmGetStatus ( Id , Direction , Status , Err )

引数

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

出力

Status [ VB.NET: Integer ] [ C, C++: unsigned long * ] [ C#: out uint ] [ 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 [ VB.NET: Integer ] [ C, C++: unsigned long * ] [ C#: out uint ] [ 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 [ 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

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

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

初期値

なし

説明

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

通常、転送完了の確認にはDioDmSetStopEvent関数を使用しますが、この関数を使用して転送完了を確認する場合、バスマスタ転送機能の使用(転送完了)をご参照ください。

使用例

入力転送ステータスを取得します。

VB.NET

Dim Ret As Integer
Dim Status As Integer
Dim Err As Integer
Ret = DioDmGetStatus ( Id , DIODM_DIR_IN , Status , Err )
 

C, C++

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

C#

int Ret;
uint Status;
uint Err;
Ret = dio.DmGetStatus ( Id , (short)CdioConst.DIODM_DIR_IN , out Status , out Err );
 

Python

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

関連項目

DioDmTransferStart