> ## Documentation Index
> Fetch the complete documentation index at: https://motorbridge.seeedstudio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Web 上位机示例

CAN 联调与排障文档： [../../docs/zh/can\_debugging.md](/zh/source/project/can-debugging)

> v0.4.1 状态：浏览器/WebSocket 场景推荐优先使用 `ws_gateway`。本地调试保持 `127.0.0.1` 绑定；若绑定到非回环地址，请设置 `MOTORBRIDGE_WS_TOKEN` 并让客户端在握手中携带 token。Damiao `dm-serial` 整臂扫描和多关节状态同步已对齐 `damiao_state_many`。

## 稳定性建议

* 一个电机同时只保留一个主动控制 owner，避免多个页面或脚本同时持续下发目标。
* 多会话控制时提高网关 `--dt-ms` 或页面发送周期，可以降低现场总线瞬时压力。
* Python binding 直连仍适合脚本化联调；浏览器/远程控制入口则推荐走 `ws_gateway`。

## ws\_quad\_sync\_hmi.html

基于 `ws_gateway` 的单拖杆四电机同角度同步控制页面。

默认目标设备：

* Damiao `0x01`（`4340P`，反馈 `0x11`）
* Damiao `0x07`（`4310`，反馈 `0x17`）
* MyActuator `1`（`X8`，反馈 `0x241`）
* HighTorque `1`（`hightorque`，反馈 `0x01`）

### 运行

```bash theme={null}
# 终端 A：启动网关
cargo run -p ws_gateway --release -- --bind 127.0.0.1:9002 --vendor damiao --channel can0 --model 4340P --motor-id 0x01 --feedback-id 0x11 --dt-ms 20

# 终端 B：在仓库根目录启动静态服务
python3 -m http.server 18080

# 浏览器打开
http://127.0.0.1:18080/examples/web/ws_quad_sync_hmi.html
```

### 稳定性建议

* 页面采用每个电机一个 WS 会话，减少频繁 `set_target` 的切换开销。
* 位置命令默认 `continuous=true`，发送一次后网关会持续保位；需要释放时请点“停止全部”或“失能全部”。
* 若某一路偶发断连：
  * 将网关 `--dt-ms` 从 `20` 提高到 `50`
  * 页面 `发送周期(ms)` 设为 `60~100`
  * 页面 `错峰(ms)` 设为 `8~20`

## ws\_quad\_sync\_hmi\_rs.html

在 `ws_quad_sync_hmi.html` 基础上，仅将第 4 路从 HighTorque 替换为 RobStride，其它三路保持不变。

默认目标设备：

* Damiao `0x01`（`4340P`，反馈 `0x11`）
* Damiao `0x07`（`4310`，反馈 `0x17`）
* MyActuator `1`（`X8`，反馈 `0x241`）
* RobStride `127`（`rs-06`，反馈 `0xFE`）

### 运行

```bash theme={null}
# 终端 A：启动网关
cargo run -p ws_gateway --release -- --bind 127.0.0.1:9002 --vendor damiao --channel can0 --model 4340P --motor-id 0x01 --feedback-id 0x11 --dt-ms 20

# 终端 B：在仓库根目录启动静态服务
python3 -m http.server 18080

# 浏览器打开（RobStride 版本）
http://127.0.0.1:18080/examples/web/ws_quad_sync_hmi_rs.html
```
