# 戻り値・通信異常・アラーム判定の実装照合 このページは `source_reference/dobot_core/dobot_ctrl.py`、`dobot_tcp.py`、`dobot_error.py` の静的照合結果である。実機での動作保証ではない。 ## 戻り値の意味 | API | 正常系 | 異常系・注意点 | | --- | --- | --- | | `get_digital_input(index)` | DIがHIGHなら `True`、LOWなら `False` | Dashboardの非正常応答、解析失敗、値なし、例外も `False`。LOWと障害を戻り値だけで区別できない。 | | `get_IO(id_num)` | Feedbackの `digital_outputs` の指定ビットを `1` または `0` で返す | `id_num < 1` は `ValueError`。`_state()` が初回Feedbackを取得できなければ `RuntimeError`。初回受信後の鮮度は検査しない。 | | `set_IO(id_num, value)` | Dashboard `DO` 応答コードが0なら `True` | それ以外は `False`。出力の実際の切替やreadbackの一致を確認する処理ではない。 | | `reset_error()` | `ClearError` 応答コードが0なら `True` | それ以外は `False`。アラーム原因の解消は保証しない。 | | `get_motion_complete()` | `busy_status` が偽なら `True` | `busy_status` は `RunningStatus` と `JogStatus` を使用し、初回Feedback未取得では `RuntimeError` が伝播する。`True` は目標到達・アラームなしを保証しない。 | | `wait_for_complete()` | `Sync()` の正常応答後、検出されたアラームがなければ `True` | Sync応答失敗または検出アラームで `False`。通信・アラーム取得失敗をすべて検出するわけではない。公開 `DobotCtrl` は引数なし。 | | `get_error()` | アラームIDのリスト | Dashboard不在、GetErrorIDの異常応答、空・解析不能データは `[]` になり得る。 | | `get_error_code()` / `get_error_count()` | 先頭ID / 件数 | 上記の障害時にも `0` になり得る。 | | `check_error()` | `get_error_count() == 0` | GetErrorID取得失敗でも `True` となり得るため、通信健全性の判定に用いない。 | ## Feedbackとアラーム取得の境界 `_state()` は初回の有効なFeedback到着をEventで待ち、タイムアウト時に `RuntimeError` を送出する。ただし、初回受信後のタイムスタンプや最終更新からの経過時間は判定しない。`motion_error_active()` は `_state_getter("ErrorStatus", timeout=0.1)` の `RuntimeError` を捕捉して `error_status=False` とする。`GetErrorID()` が取得できず空のアラーム一覧になった場合、実際には確認できていないのに「アラームなし」と同じ判定に到達する経路がある。 **運用上の帰結:** `False` / `0` / `[]` / `True` を単独で通信健全性や動作安全の証明として扱わない。これは実装上の制約の記録であり、APIの動作を変更したものではない。 ## 照合範囲と未検証事項 確認したのは提供されたPythonソースコードの分岐と戻り値である。実機のアラーム発生、通信断、I/O配線、TCPタイムアウト、Sphinx HTML生成の動作試験は実施していない。