エラー処理
このセクションでは、本ライブラリにおけるエラー処理について説明します。詳細...
| 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() 関数を呼び出すことで取得できます。
関数が成功すると、エラー値とメッセージはクリアされます。
◆ 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_length | message が指す配列の長さを示す 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 の呼び出し中にエラーが発生しても、内部に格納されている直前のエラーは更新されません。