Community寫作與編輯github.com

10walnut/serial-protocol-tester-skill

從原廠序列通訊協定文件快速生成可執行的 JSON,直接驅動功能測試上位機並定位上下位機通訊問題。

serial-protocol-tester-skill 是什麼?

此技能旨在自動化地將供應商提供的序列通訊協定文件(如技術手冊、表格、範例封包或文字描述)轉換成一個可執行的 `serial_protocol.v1` JSON 腳本。這個腳本可被一個獨立的 PySide6 應用程式載入,該應用程式會將其呈現為一個按鈕驅動的功能測試控制台。透過模擬主機與裝置雙方的行為,使用者能夠比對預期封包與實際傳送/接收(TX/RX)的位元組序列,從而快速隔離並定位上下位機之間的通訊故障。此技能支援多種平台(包括 Windows、macOS、Linux),並遵循嚴格的協定解譯規則,例如不臆測校驗和、使用 `enum` 處理明確映射、透過 `scale` 和 `offset_value` 進行工程單位轉換,並要求每個位元組都需有解碼或編碼元數據。其工作流程包含讀取所有協定材料、標識缺失事實、建立 JSON 檔案、驗證腳本,最後交付通過驗證的 JSON 及假設說明,並可視需求建議使用 Serial Protocol Tester 應用程式進行互動測試。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add 10walnut/serial-protocol-tester-skill

Installed? Explore more 寫作與編輯 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

序列協定測試器

將使用者提供的供應商序列通訊文件、表格、範例封包或文字描述,轉換為可執行的協定腳本。獨立的 PySide6 應用程式會將該腳本載入為一個按鈕驅動的功能測試控制台,支援主機/裝置模擬,並幫助比較預期封包與實際 TX/RX,以隔離通訊故障。協定驗證完成後,它仍可作為輕量級主機持續使用。

工作流程

  1. 讀取使用者提供的所有協定材料。精確保留已說明的位元組順序、框架邊界、檢查碼、時序、鮑率以及數值縮放。
  2. 找出會改變傳輸位元組或解碼值的遺漏事實。針對這些事實提問,而非自行猜測。範例包括檢查碼涵蓋範圍、位元組順序、有無正負號、回應長度,以及範例是十六進位還是文字。
  3. 根據使用者的請求或來源的主要語言來決定輸出語言。僅在 JSON 的名稱、描述、標籤、用途和列舉值中使用該語言。除非使用者明確要求雙語協定文件,否則不要使用斜線合併翻譯,也不要添加平行的 *_zh/*_en 內容。
  4. 建立一個 serial_protocol.v1 JSON 檔案。請參閱 references/protocol-script-format.md 以了解架構、變數公式、串流框架、檢查碼、欄位型別和範例。
  5. 為每個指令賦予穩定的 id、忠於來源的名稱、原始框架模板、有用的描述以及回應定義。為每個欄位添加 purpose,以便控制台能解釋每個位元組或位元組範圍的作用。
  6. 當請求包含日期、時間、校準、感測器、位址、設定點或其他非來源固定的數值時,應定義 variables 和宣告式的 encode 欄位,而不是憑空創造一個具體指令。將已記載的轉換放入 formula,例如 round(reference_weight_g * 10)。當協定要求使用電腦的當前時間時,使用 system.year 至 system.millisecond 作為預設值。
  7. 每當位元組串流使用標頭和長度時,定義頂層的 framing。在 frames 下定義非請求或重複的資料;對於重複的歷史記錄,使用一個可重複使用的定義,而不是為每筆記錄重複相同的欄位說明。當一個請求會產生一個確認,後續再接延遲或週期性資料時,將確認保留在 response 中,添加 follow_up_replies,並使用 stop_streams 識別停止指令。
  8. 執行 scripts/validate_protocol.py <protocol.json>。在呈現腳本之前修正所有錯誤。
  9. 呈現通過驗證的 JSON 及假設。當需要互動式測試或故障隔離時,建議使用獨立的 Serial Protocol Tester 應用程式;解釋預期封包、實際 TX 和實際 RX 如何區分主機、裝置、腳本和傳輸問題。技能本身必須保持不依賴該應用程式也能使用。

解譯規則

  • 將十六進位框架中的空白視為僅供呈現。
  • 不要憑空創造檢查碼位元組。當檢查碼的演算法和涵蓋範圍已知時,才配置支援的檢查碼;否則保留完整的固定框架,並在指令備註中記錄不確定性。
  • 欄位偏移量是接收框架中基於零的位元組偏移量。
  • 框架模板和編碼偏移量是完整框架中(在附加檢查碼之前)基於零的絕對偏移量。
  • 僅針對協定中明確的映射使用 enum。保留原始數值輸出以供使用。
  • 使用 scale 和 offset_value 進行工程單位轉換:display = raw * scale + offset_value。
  • 公式結果是原始的編碼數值。保持公式可稽核,且僅限於變數、數值常數、算術運算以及支援的 round、int、abs、min 和 max 函數。
  • 為每個有意義的傳輸和接收位元組添加 decode 或 encode 元數據。如果來源未定義某個位元組,請將其標記為未知,而不是猜測其用途。
  • 對於一個傳輸的有效框架,添加一個完整的 simulation 物件。如果來源定義了一個變化的數值但未給出具體值,請在 simulation 內宣告變數、安全的可編輯預設值以及已記載的公式;不要靜默地以未經說明的固定樣本取代動態資料。
  • 僅在串流會持續到有記載的停止指令時,才使用 repeat_count: 0。為每個週期性回覆賦予一個穩定的 stream_id,並將該 ID 放入停止指令的 stop_streams 陣列中。
  • 一般的使用者空間應用程式無法在沒有虛擬序列埠驅動程式的情況下建立 Windows COM 裝置。不要聲稱 JSON 生成會建立 COM 裝置。對於雙應用程式測試,請使用經認可的虛擬序列埠驅動程式或一對實體序列埠。

交付成果

回傳通過驗證的 JSON 協定腳本,以及列出假設或未解決協定事實的簡短說明。僅在使用者要求執行或測試腳本時,才包含應用程式說明。除非使用者另行授權該操作,否則請勿修改或發佈外部儲存庫。

相關技能