エラー処理

このセクションでは、本ライブラリにおけるエラー処理について説明します。詳細...

列挙

enum   IC4_ERROR {
  IC4_ERROR_NOERROR = 0 , IC4_ERROR_UNKNOWN = 1 , IC4_ERROR_INTERNAL = 2 , IC4_ERROR_INVALID_OPERATION = 3 ,
  IC4_ERROR_OUT_OF_MEMORY = 4 , IC4_ERROR_LIBRARY_NOT_INITIALIZED = 5 , IC4_ERROR_DRIVER_ERROR = 6 , IC4_ERROR_INVALID_PARAM_VAL = 7 ,
  IC4_ERROR_CONVERSION_NOT_SUPPORTED = 8 , IC4_ERROR_NO_DATA = 9 , IC4_ERROR_GENICAM_FEATURE_NOT_FOUND = 101 , IC4_ERROR_GENICAM_DEVICE_ERROR = 102 ,
  IC4_ERROR_GENICAM_TYPE_MISMATCH = 103 , IC4_ERROR_GENICAM_ACCESS_DENIED = 106 , IC4_ERROR_GENICAM_NOT_IMPLEMENTED = 107 , IC4_ERROR_GENICAM_VALUE_ERROR = 108 ,
  IC4_ERROR_GENICAM_CHUNKDATA_NOT_CONNECTED = 109 , IC4_ERROR_BUFFER_TOO_SMALL = 50 , IC4_ERROR_SINK_TYPE_MISMATCH = 52 , IC4_ERROR_SNAP_ABORTED = 53 ,
  IC4_ERROR_FILE_FAILED_TO_WRITE_DATA = 201 , IC4_ERROR_FILE_ACCESS_DENIED = 202 , IC4_ERROR_FILE_PATH_NOT_FOUND = 203 , IC4_ERROR_FILE_FAILED_TO_READ_DATA = 204 ,
  IC4_ERROR_DEVICE_INVALID = 13 , IC4_ERROR_DEVICE_NOT_FOUND = 16 , IC4_ERROR_DEVICE_ERROR = 17 , IC4_ERROR_AMBIGUOUS = 18 ,
  IC4_ERROR_PARSE_ERROR = 21 , IC4_ERROR_TIMEOUT = 27 , IC4_ERROR_INCOMPLETE = 34 , IC4_ERROR_SINK_NOT_CONNECTED = 38 ,
  IC4_ERROR_IMAGETYPE_MISMATCH = 39 , IC4_ERROR_SINK_ALREADY_ATTACHED = 40 , IC4_ERROR_SINK_CONNECT_ABORTED = 41 , IC4_ERROR_HANDLER_ALREADY_REGISTERED = 60 ,
  IC4_ERROR_HANDLER_NOT_FOUND = 61
}

発生しうるエラーコードを格納します。 詳細...

関数

bool  ic4_get_last_error (enum IC4_ERROR *pError, char *message, size_t *message_length)

直前のライブラリ関数呼び出しで発生したエラーに関する情報を問い合わせます。

詳細説明

このセクションでは、本ライブラリにおけるエラー処理について説明します。

本ライブラリのほとんどの関数は、成功したかどうかを示す bool を返します。一部の関数は、列挙型の一部などとして専用のエラー戻り値を持ちます。

関数が失敗すると、スレッドローカルなエラー値とエラーメッセージが設定されます。エラー値とエラーメッセージは、ic4_get_last_error() 関数を呼び出すことで取得できます。

関数が成功すると、エラー値とメッセージはクリアされます。

列挙型ドキュメント

◆ IC4_ERROR

enum IC4_ERROR

発生しうるエラーコードを格納します。

列挙子
IC4_ERROR_NOERROR 

エラーは発生せず、操作は成功しました。

IC4_ERROR_UNKNOWN 

不明なエラーが発生しました。

IC4_ERROR_INTERNAL 

内部エラー(バグ)が発生しました。

IC4_ERROR_INVALID_OPERATION 

現在の状態ではこの操作は無効です。

IC4_ERROR_OUT_OF_MEMORY 

メモリ不足です。

IC4_ERROR_LIBRARY_NOT_INITIALIZED 

InitLibrary が呼び出されていません。

IC4_ERROR_DRIVER_ERROR 

デバイスドライバが予期しない動作をしました。

IC4_ERROR_INVALID_PARAM_VAL 

無効なパラメータが渡されました。

IC4_ERROR_CONVERSION_NOT_SUPPORTED 

この操作には、サポートされていない画像フォーマット変換が必要です。

IC4_ERROR_NO_DATA 

要求されたデータは利用できません。

IC4_ERROR_GENICAM_FEATURE_NOT_FOUND 

一致する GenICam 機能が見つかりませんでした。

IC4_ERROR_GENICAM_DEVICE_ERROR 

デバイスへの書き込み中にエラーが発生しました。

IC4_ERROR_GENICAM_TYPE_MISMATCH 

誤ったノード型に対して操作を試みました(例: integer に対する command_execute)。

IC4_ERROR_GENICAM_ACCESS_DENIED 

現在アクセスできないカメラ機能へのアクセスを試みました。

IC4_ERROR_GENICAM_NOT_IMPLEMENTED 

現在のカメラに実装されていない機能へのアクセスを試みました。

IC4_ERROR_GENICAM_VALUE_ERROR 

無効な値(範囲外など)を設定しようとしました。

IC4_ERROR_GENICAM_CHUNKDATA_NOT_CONNECTED 

チャンクデータがPropertyMapに接続されている場合にのみ利用可能な値の読み取りを試みました。

IC4_ERROR_BUFFER_TOO_SMALL 

渡されたバッファが、利用可能なすべてのデータを受け取るには小さすぎました。

IC4_ERROR_SINK_TYPE_MISMATCH 

Sink型固有の関数を、異なるSink型のインスタンスに対して呼び出そうとしました。

IC4_ERROR_SNAP_ABORTED 

要求されたすべてのフレームをキャプチャする前にカメラが停止したため、スナップ操作が完了しませんでした。

IC4_ERROR_FILE_FAILED_TO_WRITE_DATA 

ファイルへのデータ書き込みに失敗しました。

IC4_ERROR_FILE_ACCESS_DENIED 

保存先が書き込み可能でなかったため、ファイルへの書き込みに失敗しました。

IC4_ERROR_FILE_PATH_NOT_FOUND 

パスが無効だったため、ファイルへの書き込みに失敗しました。

IC4_ERROR_FILE_FAILED_TO_READ_DATA 

ファイルからのデータ読み取りに失敗しました。

IC4_ERROR_DEVICE_INVALID 

デバイスが無効になりました(例: 取り外された)。

IC4_ERROR_DEVICE_NOT_FOUND 

デバイスが見つかりませんでした。

IC4_ERROR_DEVICE_ERROR 

デバイスが予期しない動作をしました。

IC4_ERROR_AMBIGUOUS 

パラメータが項目を一意に特定できませんでした。

IC4_ERROR_PARSE_ERROR 

パラメータまたはファイルの解析中にエラーが発生しました。

IC4_ERROR_TIMEOUT 

タイムアウトが切れる前に、要求された操作を完了できませんでした。

IC4_ERROR_INCOMPLETE 

操作は一部のみ成功しました(例: Grabber のすべてのプロパティを復元できなかった)。

IC4_ERROR_SINK_NOT_CONNECTED 

Sinkがまだ接続されていません。

IC4_ERROR_IMAGETYPE_MISMATCH 

渡されたバッファが、想定される ImageType を持っていません。

IC4_ERROR_SINK_ALREADY_ATTACHED 

渡されたSinkは、すでに別のグラフにアタッチされています。

IC4_ERROR_SINK_CONNECT_ABORTED 

Sinkの接続ハンドラがエラーを通知しました。

IC4_ERROR_HANDLER_ALREADY_REGISTERED 

同じ通知ハンドラを2回登録しようとしました。

IC4_ERROR_HANDLER_NOT_FOUND 

存在しない通知ハンドラを使用しようとしました。

関数ドキュメント

◆ ic4_get_last_error()

bool ic4_get_last_error ( enum IC4_ERROR *  pError,
char *  message,
size_t *  message_length 
)

直前のライブラリ関数呼び出しで発生したエラーに関する情報を問い合わせます。

パラメータ
[out]pErrorエラーコードを受け取る IC4_ERROR 値へのポインタです。
[out]messageエラーメッセージを受け取る文字配列へのポインタです。
このパラメータは省略可能で、NULL でもかまいません。
[in,out]message_lengthmessage が指す配列の長さを示す size_t へのポインタです。
message が NULL でない場合、このパラメータは必須です。
この関数は常に、エラーメッセージの格納に実際に必要な文字数を書き込みます。
戻り値
成功した場合は true を返します。
pError が NULL の場合、関数は失敗し false を返します。
message が NULL でなく、かつ message_length が NULL の場合、関数は失敗し false を返します。
*message_length がエラーメッセージの格納に必要な文字数より小さい場合、関数は失敗し false を返します。
注意
直前のエラー情報はスレッドローカルな方法で格納されます。ic4_get_last_error の呼び出しは、ic4_get_last_error が呼び出されたのと同じスレッドで発生した直前の関数呼び出しに関するエラー情報を返します。
ic4_get_last_error の呼び出し中にエラーが発生しても、内部に格納されている直前のエラーは更新されません。