エラー取得・状態判定の多段呼び出し検証
対象は同梱 source_reference/dobot_core/dobot_tcp.py と dobot_error.py の静的ソース照合です。実機・通信試験ではありません。
呼び出し経路
公開API( |
|
|
取得・判定処理 |
|---|---|---|---|
|
|
|
|
|
|
|
先頭ID、レコードなしなら |
|
|
|
レコード件数 |
|
|
|
件数が0なら |
|
|
|
範囲外なら |
|
同名 |
同名 → |
説明付きレコード一覧 |
|
同名プロパティ |
同名プロパティ → |
レコードなしなら空文字 |
通信異常と正常値が合流する箇所
_get_error_records()は Dashboard オブジェクトがNoneの場合に[]を返す。GetErrorID()の先頭リターンコードが0以外(または解析不能)の場合、ログを出して[]を返す。_parse_error_groups()は空応答、括弧構造の不整合、JSON解析失敗、リスト以外の値で[]を返す。したがって
get_error()の[]、get_error_count()の0、get_error_code()の0、check_error()のTrueは、アラームが存在しないことを一意には表さない。ただし
dashboard.GetErrorID()自体が例外を送出した場合は_get_error_records()に捕捉節がなく、その例外が伝播し得る。あらゆる通信障害が空リストになるわけではない。
Feedbackを利用するモーションエラー判定
motion_error_active() は _state_getter("ErrorStatus", timeout=0.1) の RuntimeError を捕捉し、error_status=False に置き換える。query_error_id=False の場合、Feedbackからエラーを検出できなければ GetErrorID() を照会しない。query_error_id=True または ErrorStatus=True の場合は _get_error_records() を照会する。
wait_motion_start_or_error() は既定0.25秒の監視後、query_error_id=True で再判定する。これは受付直後の限定的な監視であり、移動全期間の成功確認ではない。
利用上の結論
check_error()の真偽だけで通信正常を判断しない。エラーID取得失敗を確実に区別するには、現在の公開APIの戻り値だけでは不十分な経路がある。
例外の発生範囲は外部Dashboard実装に依存するため、ここでは保証しない。
この資料は既存実装の観測可能な仕様を記録するもので、実装の修正は行っていない。