Skip to content

Drain 8CH inventory responses before antenna restore#70

Merged
TamaruNorio merged 1 commit into
mainfrom
fix/drain-8ch-restore-buffer
Jun 22, 2026
Merged

Drain 8CH inventory responses before antenna restore#70
TamaruNorio merged 1 commit into
mainfrom
fix/drain-8ch-restore-buffer

Conversation

@TamaruNorio

Copy link
Copy Markdown
Owner

概要

8CH順次Inventory中にCtrl+Cした場合、復元コマンド送信前に受信バッファへ残ったInventory応答をクリアする処理を追加しました。

背景

実機確認で、ANT3 Inventory中にCtrl+Cした場合、finally側の自動復元は呼び出されましたが、復元コマンドの応答としてInventory残留データを読んでしまい、ACK/NACKなし扱いになりました。

実機ログ例:

finally: 使用アンテナ番号の自動復元を試みます。
送信フレーム: 02 00 55 04 38 00 02 04 03 9C 0D
自動復元失敗: ACK/NACKなし
Raw: 02406C...

これは復元コマンド自体の不正というより、Ctrl+C直前のInventory応答がシリアル受信バッファに残っていた可能性が高いです。

変更内容

  • src/utr_8ch_sequential_inventory_cli.py
    • _drain_serial_input_before_restore() を追加
    • 復元コマンド送信前に受信バッファを一定時間クリア
    • 復元応答がACK/NACKなしの場合、残留Inventory応答の可能性として受信バッファを再クリアし、1回だけ復元コマンドを再試行

安全ガード

  • FLASH書き込みなし
  • 送信出力変更なし
  • 周波数変更なし
  • UHF_SET_INVENTORY_PARAM 送信なし
  • 復元コマンドは開始前に読み取ったコマンドモード用使用アンテナ番号への復元のみ
  • 再試行は同じ復元フレームを1回だけ送信

実機確認観点

  1. ANT3 Inventory中にCtrl+Cする
  2. finally: 使用アンテナ番号の自動復元を試みます。 が出る
  3. 復元前に受信バッファをクリアしました: ... bytes が出る場合がある
  4. 自動復元完了: ANT3/EXT5 / 使用アンテナ番号 44h が出る
  5. 接続を閉じました。 が出る

備考

PR #69 のREADME更新は別PRとして維持しています。このPRは実機で見つかったCtrl+C時の復元失敗対策に絞っています。

@TamaruNorio TamaruNorio merged commit fa34b0b into main Jun 22, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant