1. 背景
在 IoT 和工业通信领域,二进制协议的调试一直是开发效率的瓶颈:
- 手动拼装 Hex 帧容易出错
- CRC/校验和计算繁琐
- 缺少可视化的协议结构映射
- 团队协作时协议知识难以传递
OptiByte 操练场 是一个 Web 端的协议调试环境,旨在解决上述问题。
2. 功能架构
┌──────────────────────────────────┐
│ 操练场 (Playground) │
├──────────────────────────────────┤
│ │
┌─────────────┐ │ ┌──────────┐ ┌──────────────┐ │
│ 协议实例列表 │──→│ │ 配置面板 │ │ Hex 查看器 │ │
│ (Instance) │ │ │ (Config) │ │ (HexViewer) │ │
└─────────────┘ │ └──────────┘ └──────────────┘ │
│ ↕ ↕ │
│ ┌──────────┐ ┌──────────────┐ │
│ │ 生成引擎 │ │ 解析引擎 │ │
│ │(Generator)│ │ (Parser) │ │
│ └──────────┘ └──────────────┘ │
│ ↕ │
│ ┌──────────────────────────────┐│
│ │ 硬件通道 (Channel) ││
│ │ Serial | MQTT | TCP | UDP ││
│ └──────────────────────────────┘│
└──────────────────────────────────┘
3. 核心功能
3.1 二进制生成引擎
支持的数据类型:
| 类别 | 类型 |
|---|---|
| 整型 | u8, u16, u32, u64, i8, i16, i32, i64 |
| 浮点 | f32, f64 |
| 布尔 | bool |
| 复合 | enum, struct, fixedArray, dynamicArray |
| 约束 | subrange (值域限制), bitFlags (位标志) |
| 泛型 | typeParam (类型参数) |
生成流程:
- 遍历协议框架字段
- 按语义处理:Fixed → 写入固定值,Checksum → 占位延迟计算,Parameter → 按用户配置生成
- 递归展开嵌套类型(struct/array 深度嵌套)
- 全部字段写入后,统一计算 CRC/校验和
- 输出
Uint8Array
内置校验算法:
CRC8, CRC8/MAXIM
CRC16: MODBUS, CCITT, IBM, MAXIM, USB, X25, XMODEM, DNP
CRC32
XOR-8, SUM-8, SUM-16, SUM-16/COMPLEMENT
LRC, Fletcher-16, Adler-32
截图: hex-viewer.png
3.2 解析引擎
输入 Hex 字符串,输出解析树 ParseTreeNode[]:
typescript
interface ParseTreeNode {
key: string; // 唯一标识
label: string; // 字段名
type: string; // 类型描述
value?: unknown; // 原始值
displayValue?: string | number | bigint;
offset: number; // 字节偏移
size: number; // 占用字节数
warning?: string; // 范围违反警告
children?: ParseTreeNode[];
}
支持枚举自动映射、子区间范围校验、位标志逐位展开。
截图: parse-tree.png
3.3 字段配置与预设
每个字段支持两种生成模式:
- Fixed:手动指定确切值
- Random:指定范围随机生成
预设系统支持多套配置方案的保存、切换、克隆和删除。预设数据通过 SyncQueue 异步保存到后端。
3.4 Request/Response 联动
双栏视图 + 往返捕获 (Round-Trip Capture):
- 在 Request 栏生成并发送帧
- 系统自动等待 Response(可配置超时时间)
- 收到响应后自动填入 Response 栏并解析
- 超时提示诊断建议

3.5 硬件通道
通过 EdgaAgent (WebSocket 代理) 连接硬件:
| Provider | 协议 | 说明 |
|---|---|---|
| SerialProvider | RS-232/485/UART | 物理资源独占 |
| MqttProvider | MQTT 3.1.1/5.0 | 逻辑资源独占 |
| TcpProvider | TCP | Server/Client |
| UdpProvider | UDP | 无连接 |
3.6 测试套件
- 录制/回放:记录完整通信帧序列,支持导入导出
- 压力测试:可配置发送次数/间隔,实时统计响应率
3.7 公开发布
支持将操练场快照发布为公开链接,访问者可以:
- 生成和解析数据(只读或可编辑模式)
- Fork 到自己的项目继续开发
4. 使用方式
- 注册 OptiByte 账号:https://platform.optibyte.cn
- 创建项目 → 在编辑器中定义协议结构
- 点击「操练场」进入调试环境
- 选择协议实例 → 配置字段 → 生成/解析
免费版包含完整操练场功能。