简体中文 | English
基于浏览器的森海克斯 SHX8800 系列对讲机编程工具(及兼容机型)。通过 Web Bluetooth 无线连接或 USB Serial 有线连接,完成读频、编辑、写频——无需安装任何桌面软件。
- BLE 连接 — 使用 Web Bluetooth 无线连接对讲机(需 Chromium 内核浏览器)
- USB Serial 连接 — 使用 Web Serial API 通过 USB 线连接(Chrome、Edge、Firefox 151+、Opera)
- 读取对讲机 — 完整读取信道、VFO 设置、DTMF/MDC 联系人、功能设置、FM 预设及开机图片
- 信道编辑 — 电子表格风格编辑器,支持 512 个信道(8 区 × 64 个),可编辑频率/亚音/功率/带宽/扫描/PTT ID,支持复制/剪切/粘贴/复制/重排序
- CSV 导入/导出 — 通过 CSV 文件批量管理信道
- 写频 — 将修改后的配置写回设备
- 备份与还原 — 以 JSON 格式保存/加载完整对讲机镜像
- 差异对比 — 写频前审查变更内容
- 开机图片 — 支持读取/写入 OLED 开机画面(128×128 RGB565),参考 senhaix-freq-writer-enhanced 实现,支持 8x00 流式协议与 Pro 0xA5 帧协议
- 多语言 — 英文与中文界面
- 信道分享 — 分享信道配置
- SHX8800
- SHX8600
- SHX8800 Pro
- SHX8600 Pro
npm install
npm run dev在 Chromium 内核浏览器(Chrome、Edge 等)中打开 http://localhost:8800。Web Bluetooth 和 Web Serial 需要 HTTPS 或 localhost 环境。
| 方式 | 浏览器支持 | 适用场景 |
|---|---|---|
| Web Bluetooth | Chrome、Edge、Opera | 通过 BLE 无线连接 |
| Web Serial | Chrome、Edge、Firefox 151+、Opera | USB 有线连接(更快、更稳定) |
注: Safari 和 iOS 浏览器不受支持。详见浏览器兼容性。
| 命令 | 说明 |
|---|---|
npm run dev |
启动开发服务器(端口 8800) |
npm run build |
生产构建到 dist/ |
npm run preview |
预览生产构建 |
npm test |
运行测试(Node.js 内置测试运行器) |
npm run lint |
使用 ESLint 检查代码 |
- React 19 + React Router 7
- Vite 8 — 构建工具
- Tailwind CSS 4 — 样式
- Ant Design 5 (部分使用,正迁移至自定义组件)
- lucide-react — 图标
- i18next — 国际化
- gbk.js — 中文文本编码(GBK/GB2312)
- Web Bluetooth API — BLE 对讲机连接
- Web Serial API — USB 串口对讲机连接
┌─────────────────────────────────────────────────────────────┐
│ 应用层 │
│ (Shx8800Session) │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ TransportFactory │
│ (动态传输选择) │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────┴─────────────────┐
▼ ▼
┌───────────────────────┐ ┌───────────────────────┐
│ WebSerialTransport │ │ WebBluetoothTransport │
│ (USB/串口) │ │ (BLE) │
└───────────────────────┘ └───────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ TransportInterface │
│ (抽象基类) │
└─────────────────────────────────────────────────────────────┘
应用使用传输抽象层,支持多种连接方式:
- TransportInterface — 定义传输契约的抽象基类
- WebBluetoothTransport — 基于 Web Bluetooth API 的 BLE 实现
- WebSerialTransport — 基于 Web Serial API 的 USB 串口实现
- TransportFactory — 用于创建和选择传输的工厂
- SerialProtocolAdapter — 串口通信协议适配器,带 CRC-16 组帧
详见串口传输文档(英文)。
Web Bluetooth / Web Serial ← 传输层(可选)
↓
WebBluetoothTransport ← BLE 连接(service 0xFFE0, characteristic 0xFFE1)
WebSerialTransport ← USB 串口连接(可配置波特率)
↓
Shx8800Session ← 会话协议(握手、块读写)
↓
BootImageSession ← 开机图片写频协议(8x00 + Pro)
↓
shx8800.js ← 二进制协议编解码
↓
bootImage.js ← RGB565、CRC-16、图像转换
↓
AppContext (React) ← 全局状态(对讲机镜像、连接状态)
↓
Pages ← UI 视图(信道、设置、备份等)
参考 senhaix-freq-writer-enhanced 项目实现,支持两种协议:
- 握手:
PROGROMSHXU→ 等待 0x06 ACK → 发送0x46→ 等待就绪响应 - 首包(68 字节):头部
[0x17, 0x09, 0x22, 0x30],图像数据 48 字节(偏移 16) - 后续包(68 字节):头部
[0x49, 计数器高, 计数器低, 0x40],图像数据 64 字节(偏移 4) - 每包发送后等待 0x06 ACK 确认
- 握手:同上,发送
0x44进入 Pro 模式 - 使用
0xA5帧头 + CRC-16(CRC-CCITT 0x1021)打包 - 命令:握手(0x02) → 设置地址(0x03, Flash 0x10000) → 擦除(0x04) → 写入(0x57, 1024 字节块) → 结束(0x06)
- 每包带有 CRC-16 校验,确保数据完整性
- 分辨率:128 × 128 像素
- 颜色格式:RGB565(16 位,5R + 6G + 5B)
- 数据大小:32,768 字节
- 支持拖拽上传 PNG/JPEG/GIF/WebP/BMP,自动缩放至 128×128
测试使用 Node.js 内置测试运行器,覆盖协议编解码、握手、开机图片探测、开机图片写入、信道编辑、备份往返及机型元数据。
npm test共 30 个测试用例:
shx8800.js:协议编解码、信道解析、备份导入导出bootImage.js:RGB565 编解码、CRC-16、Pro 数据包构建与解析BootImageSession.js:8x00 数据包构建、Pro 机型检测BootImageProbeSession.js:握手探测、响应解析
当前版本参考 K5Web 的后台结构,用纯 Web Bluetooth 打通 SHX8800 的连接、自动握手、读频、写频、备份恢复和信道编辑主流程。
- Safari 和 iOS 浏览器不支持 Web Serial 或 Web Bluetooth
- Pro 协议在 BLE 环境下跳过波特率切换步骤
- 开机图片写入功能需结合实际设备进行验证
- 建议先导出 JSON 备份,便于异常时恢复
| 浏览器 | 版本 | Web Bluetooth | Web Serial | 备注 |
|---|---|---|---|---|
| Chrome | 89+ | 是 | 是 | 推荐 |
| Edge | 89+ | 是 | 是 | 基于 Chromium |
| Firefox | 151+ | 否 | 是 | 仅串口 |
| Opera | 76+ | 是 | 是 | 基于 Chromium |
| Safari | 全部 | 否 | 否 | 不支持 |
| Chrome Android | 149+ | 是 | 是 | 移动端支持 |
| Safari iOS | 全部 | 否 | 否 | 不支持 |
要求:
- HTTPS 或 localhost(安全上下文)
- 需要用户手势触发连接
详见 Web Serial API 调研(英文)。
- 串口传输架构(英文)— 传输层开发者文档
- 串口故障排除指南(英文)— 常见问题与解决方案
- Web Serial API 调研(英文)— 浏览器兼容性调研
MIT License
- senhaix-freq-writer-enhanced — 开机图片协议参考
- 8800Pro-Web — SHX8800 Pro 网页编程工具
- K5Web — 架构参考
- Shx8800Session — 会话协议参考