From 2e889843b4c171f2d6ad8e0d53084040703d11f6 Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 09 十一月 2026 13:18:21 +0800
Subject: [PATCH] docs: CAN 总线级应答器 + 硬件调试页多标签多会话 设计规格

---
 docs/superpowers/specs/2026-11-09-can-responder-multidebug-design.md |   93 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 93 insertions(+), 0 deletions(-)

diff --git a/docs/superpowers/specs/2026-11-09-can-responder-multidebug-design.md b/docs/superpowers/specs/2026-11-09-can-responder-multidebug-design.md
new file mode 100644
index 0000000..57fb08d
--- /dev/null
+++ b/docs/superpowers/specs/2026-11-09-can-responder-multidebug-design.md
@@ -0,0 +1,93 @@
+# CAN 鍏ㄥ眬搴旂瓟鍣� + 纭欢璋冭瘯椤靛璁惧骞跺彂 鈥� 璁捐瑙勬牸
+
+鏃ユ湡锛�2026-11-09
+鐘舵�侊細宸蹭笌鐢ㄦ埛閫愯妭纭
+鍏宠仈鍩虹嚎锛欳AN 妯℃嫙鍣� TCP 鏈嶅姟鍖� + 缁熶竴 `CanDeviceDriver`锛堝凡瀹屾垚锛�47 鍗曟祴閫氳繃锛�
+
+## 1. 闇�姹�
+
+涓や釜鐙珛鐗规�э細
+- **鐗规�т竴锛堝簲绛斿櫒锛�**锛氬綋鍓�"鑷姩鍝嶅簲"浠呭湪"鏈夌浜屼釜鑺傜偣涓旇鑺傜偣寮�浜嗚嚜鍔ㄥ搷搴�"鏃舵墠鍥炲銆�
+  鐢ㄦ埛闇�瑕侊細瀹㈡埛绔崟鐙彂涓�鏉¤姹傦紝妯℃嫙鍣ㄥ氨鑳借嚜鍔ㄥ洖澶嶏紝鏃犻渶绗簩鑺傜偣銆�
+- **鐗规�т簩锛堝璁惧骞跺彂璋冭瘯锛�**锛氱‖浠惰皟璇曢〉(DeviceDebug)褰撳墠鍗曡澶囧崟浼氳瘽锛�
+  鐢ㄦ埛闇�瑕佸悓鏃跺湪澶氫釜 Tab 閲岃皟璇曞涓� CAN 璁惧锛屽悇鑷嫭绔嬩細璇濅笌缁存姢绉熺害銆�
+
+## 2. 宸茬‘璁ゅ喅绛�
+
+| 鐐� | 缁撹 |
+|---|---|
+| 搴旂瓟鍣ㄨ涔� | 鎬荤嚎绾у紑鍏筹紝鎶婂彂閫佸抚鍥炴樉缁欏彂閫佽�咃紙鍥炴尝锛夛紝鏃犻渶绗簩鑺傜偣 |
+| 搴旂瓟鍐呭 | 鍥炴樉鍚屽抚锛堢浉鍚屽抚ID+鏁版嵁锛夛紝鏉ユ簮鏍囪 `RESPONDER` |
+| 搴旂瓟鍣ㄥ紑鍏冲叆鍙� | 鏈嶅姟绐楀彛姣忔�荤嚎涓�涓閫夋锛涘苟鏀寔鍛戒护 `BUS_ECHO:ON/OFF` |
+| 涓庤妭鐐硅嚜鍔ㄥ搷搴斿叧绯� | 浜岃�呯嫭绔嬪苟瀛橈紝浜掍笉瑙﹀彂銆佷簰涓嶅共鎵帮紝鐢ㄦ埛鎸夐渶寮�鍚� |
+| 澶氳澶囧舰鎬� | DeviceDebug 鏀逛负 TabControl锛屾瘡 Tab 涓�涓� `DeviceDebugTab`锛屽悇鑷嫭绔嬩細璇� |
+| 涓�浼氫竴璁惧 | 璁惧涓嬫媺鍙垪鏈墦寮�璁惧锛涘凡鎵撳紑鍒欒仛鐒﹀叾 Tab锛屼笉閲嶅寮�浼氳瘽 |
+| 浼氳瘽鐢熷懡鍛ㄦ湡 | 鍔犲叆鈫扥penSession(ReadOnly)锛涘叧 Tab鈫扖loseSession(缁� token 缂撳瓨澶嶇敤姝e父閲婃斁缁存姢绉熺害) |
+| 璁惧鑼冨洿 | 閫氱敤锛圕AN/鐢垫簮/PLC 鍚岀粨鏋勶級锛屼富鍦烘櫙澶氫釜 CAN锛涘鐢� `LoadPanel(kind)` |
+
+## 3. 鐗规�т竴璁捐锛氭�荤嚎绾у簲绛斿櫒
+
+### 3.1 CanBusSimulator
+- 鏂板 `public bool EchoResponderToSender { get; set; }`锛堥粯璁� false锛夈��
+- `OnNodeFrameSent` 璺敱鏈熬锛氳嫢 `EchoResponderToSender` 涓旀簮鑺傜偣瀛樺湪锛�
+  澶嶅埗璇ュ抚鎶曢�掑洖**婧愯妭鐐硅嚜韬�**锛坄sourceNode.ReceiveFrame(echoCopy)`锛岀洿鎺ヨ皟鐢ㄧ粫杩�"涓嶅洖婧�"锛夛紝
+  鍥炴樉甯� `SourceNodeId = "RESPONDER"`锛宍Timestamp = now`锛宍FrameId/Data` 鍚屽師甯с��
+- 涓庣幇鏈� `SendAutoResponse`锛堟帴鏀惰妭鐐瑰洖澶嶅埆浜猴級浜掍笉褰卞搷锛氬簲绛斿櫒闈㈠悜"鍙戦�佽�呭洖鐜�"锛�
+  鑺傜偣鑷姩鍝嶅簲闈㈠悜"鎺ユ敹鑰呯瓟澶�"銆�
+
+### 3.2 鍛戒护涓� UI
+- `CanCommandExecutor` 澧炲姞 `BUS_ECHO` 鏌ヨ锛歚BUS_ECHO:ON|OFF` 璁剧疆 `_bus.EchoResponderToSender`锛�
+  瑁� `BUS_ECHO` 鏌ヨ褰撳墠鐘舵�侊紝杩斿洖 `OK:BUS_ECHO:ON|OFF`銆�
+- 鏈嶅姟绐楀彛 `MainWindow` 姣忔�荤嚎鑺傜偣琛�/宸ュ叿鍖哄姞"搴旂瓟鍣�"澶嶉�夋锛岀粦瀹� `CanBusSimulator.EchoResponderToSender`銆�
+- 浼犺緭/椹卞姩灞傞浂鏀瑰姩锛氬懡浠よ蛋鏃㈡湁 `QUERY:` 閫氶亾锛圠ocal 鐩村彂 / Broker 缁� RPC 鍒板涓诲啀杞� TCP锛夈��
+
+### 3.3 鏁版嵁娴�
+```
+瀹㈡埛绔� SEND:0x100:AA 鈫� 鏈嶅姟绔矾鐢� 鈫� (搴旂瓟鍣ㄥ紑) 鍥炴樉甯� EV:RECV:0x100:AA:...:RESPONDER
+   鈫� 鍚屼竴 TCP 杩炴帴鎺ㄩ�佸洖鍙戦�佽妭鐐� 鈫� 瀹㈡埛绔� DriverFrameReceived 涓婂睆锛堟潵婧� RESPONDER锛�
+```
+鏃犻澶栬疆璇紱涓庤妭鐐硅嚜鍔ㄥ搷搴斿悓鐢ㄤ竴璺簨浠舵ā鍨嬶紝涓嶄骇鐢熼噸澶嶈锛堟潵婧愪笉鍚岋級銆�
+
+## 4. 鐗规�т簩璁捐锛欴eviceDebug 澶氭爣绛惧浼氳瘽
+
+### 4.1 缁撴瀯
+```
+DeviceDebug锛堝3锛�
+ 鈹溾攢 椤舵爮锛氳澶囦笅鎷�(浠呮湭鎵撳紑璁惧) + [鍔犲叆璋冭瘯] + [鍏抽棴褰撳墠椤礭
+ 鈹斺攢 TabControl
+     鈹斺攢 DeviceDebugTab 脳 N锛堟柊 UserControl锛岃嚜甯︾嫭绔嬩細璇濓級
+          路 缁戝畾鑷韩 CurrentDeviceId / ConnectionState / SessionState / Reservation / CanEnter|ExitMaintenance
+          路 panelContainer锛歀oadPanel(kind)锛圕AN鈫扖anDebugPanel 澹筹紱PowerSupply锛汸LC锛�
+          路 鑷韩鎿嶄綔鏃ュ織
+          路 杩涘叆/閫�鍑虹淮鎶ゅ彧浣滅敤浜庢湰璁惧浼氳瘽锛坰essionId 澶嶇敤 token锛岄�昏緫娌跨敤 DebugSessionManager锛�
+```
+
+### 4.2 浼氳瘽涓庣绾�
+- `DebugSessionManager` **涓嶆敼**锛歚_activeSessions` 宸叉寜 sessionId銆乣GetActiveSessionByDevice`
+  鎸夎澶囨敮鎸佸璁惧骞跺彂浼氳瘽銆�
+- 姣� `DeviceDebugTab` 鎸佹湁涓�涓� sessionId锛岃皟鐢� `OpenSession/RequestMaintenance/ActivateMaintenance/
+  CloseSession`锛屽悇鑷祫婧愰敭涓鸿嚜韬� deviceId 鈫� 涓嶅悓璁惧绉熺害澶╃劧鐙珛銆佹棤鍐茬獊銆�
+- 鍏抽棴 Tab 蹇呴』 `CloseSession`锛堟甯搁噴鏀剧淮鎶ょ绾︼紝鏉滅粷 Token 娉勬紡鍨�"绗簩娆¤繘缁存姢澶辫触"锛夈��
+- 鍚岃澶囦笉鍙兘鍑虹幇涓や釜 Tab锛堜笅鎷夎繃婊� + 鑱氱劍鏃㈡湁 Tab 鎷︽埅锛夈��
+
+### 4.3 杩佺Щ涓庡奖鍝嶉潰
+- `DeviceDebug.xaml`锛氭妸鐜�"淇℃伅鏍�+缁存姢鎸夐挳+panelContainer+鎿嶄綔鏃ュ織"鏁翠綋绉诲叆 `DeviceDebugTab`锛�
+  DeviceDebug 椤跺眰鏀逛负 椤舵爮 + TabControl銆�
+- `DeviceDebug.xaml.cs`锛氭媶鍒嗏�斺�斿3璐熻矗璁惧鍒楄〃/鍔犲叆/鍏抽棴 Tab 璺敱锛�
+  鍘熷崟浼氳瘽鐘舵�佹満鏂规硶杩佸叆 `DeviceDebugTab.xaml.cs`锛堟瘡涓� Tab 涓�涓疄渚嬶級銆�
+- 瀵瑰濂戠害锛堟彃浠跺叆鍙� `InitFinish`銆乣ForceRefreshForTest`锛変繚鐣欏湪澹充笂锛岃涓轰笉鍙樸��
+- 鐜版湁 CAN 閫氶亾浜嬩欢鎺ユ敹銆佸簲绛斿櫒銆丅roker 浠g悊鍧囧鐢紝鏃犲洖閫�銆�
+
+## 5. 娴嬭瘯绛栫暐
+- 鍗曟祴锛堝簲绛斿櫒锛夛細`SimulatorServerCoreTests` 澧炰緥鈥斺�斿紑 `BUS_ECHO:ON` 鍚庡崟鑺傜偣 `SEND` 鏀跺埌
+  鏉ユ簮 `RESPONDER` 鐨勫洖鏄撅紱鍏冲悗鏃犲洖鏄撅紱涓庤妭鐐硅嚜鍔ㄥ搷搴斿苟瀛樻椂鏉ユ簮鍖哄垎姝g‘銆佹棤閲嶅甯с��
+- 鍗曟祴锛堝懡浠わ級锛歚BUS_ECHO:ON/OFF/鏌ヨ` 璧伴�� `CanCommandExecutor`锛汢roker 缁� RPC 浜︾敓鏁堛��
+- DeviceDebug 澶氫細璇濅负 UI 閲嶆瀯锛屼互 MSBuild 缂栬瘧 + 鎵嬪姩楠屾敹瑕嗙洊锛�
+  鍚屾椂寮� CAN-001/002/003 涓変釜 Tab锛屽悇鑷繘鍏ョ淮鎶や簰涓嶉樆濉烇紱鍏抽棴鏌� Tab 鍚庡叾璁惧鍙啀娆¤繘鍏ョ淮鎶�
+  锛堣瘉鏄庣绾︽纭噴鏀撅級锛涘簲绛斿櫒寮�鍚悗浠讳竴 Tab 鍗曠嫭鍙戝抚鍗虫敹鍒板洖鏄� RX銆�
+- 鍥炲綊锛氱幇鏈� 47 鍗曟祴淇濇寔鍏ㄧ豢銆�
+
+## 6. 鏋勫缓涓庣害鏉�
+- 娌跨敤 VS 瀹屾暣鐗� MSBuild 缂栬瘧 WPF 閾捐矾锛堜笉鍔� /p:Platform=x64锛夛紱
+  鏈嶅姟绔牳蹇冨彲鐢� dotnet銆�
+- 涓嶅紩鍏ユ柊澶栭儴渚濊禆锛涘簲绛斿櫒浠呭湪 CanSimulator 搴撲笌鎵ц鍣ㄥ唴鎵╁睍锛孊roker/椹卞姩灞備笉鍔ㄣ��

--
Gitblit v1.9.1