159 lines
4.6 KiB
Markdown
159 lines
4.6 KiB
Markdown
|
|
| **DCS ****项目****串口通信协议说明书** | |
|
|||
|
|
| --- | --- |
|
|||
|
|
|
|||
|
|
| **版本** | **日期** | **负责人** | **主要内容** |
|
|||
|
|
| --- | --- | --- | --- |
|
|||
|
|
| Version v1.0.0v1.0.0 | 2025-10-17 | 开发部/覃陆孙 | 通信协议与示例帧 |
|
|||
|
|
|
|||
|
|
| **1. ****通信参数** | |
|
|||
|
|
| --- | --- |
|
|||
|
|
|
|||
|
|
| **项目** | **参数** |
|
|||
|
|
| --- | --- |
|
|||
|
|
| 通信方式 | UART(RS232/TTL 兼容) |
|
|||
|
|
| 波特率 | 115200 bps |
|
|||
|
|
| 数据位 | 8 |
|
|||
|
|
| 停止位 | 1 |
|
|||
|
|
| 校验位 | None |
|
|||
|
|
| 流控 | None |
|
|||
|
|
| 通信方向 | 双向(嵌入式主控 ↔ 安卓上位机) |
|
|||
|
|
| 字节序 | Little Endian |
|
|||
|
|
|
|||
|
|
| **2. ****通信帧格式** | |
|
|||
|
|
| --- | --- |
|
|||
|
|
|
|||
|
|
| **字段** | **长度****(Byte)** | **说明** |
|
|||
|
|
| --- | --- | --- |
|
|||
|
|
| 帧头 | 2 | 固定: 0xAA 0x55 |
|
|||
|
|
| 命令字 | 1 | 指令类型(握手/心跳/上报/报警等) |
|
|||
|
|
| 数据长度 | 1 | 数据区字节数 |
|
|||
|
|
| 数据区 | N | 实际数据内容 |
|
|||
|
|
| 校验 | 1 | 从“命令字”到“数据区最后字节”的异或校验 |
|
|||
|
|
| 帧尾 | 2 | 固定: 0x0D 0x0A |
|
|||
|
|
|
|||
|
|
| **3. ****命令字定义** | |
|
|||
|
|
| --- | --- |
|
|||
|
|
|
|||
|
|
| **命令字** | **方向** | **含义** |
|
|||
|
|
| --- | --- | --- |
|
|||
|
|
| 0x01 | 下→上 | 握手应答 + 时间同步 |
|
|||
|
|
| 0x02 | 上→下 | 握手请求 |
|
|||
|
|
| 0x03 | 上→下 | 心跳上报(含状态) |
|
|||
|
|
| 0x04 | 下→上 | 心跳应答 |
|
|||
|
|
| 0x05 | 下→上 | 报警控制命令(开启/关闭/等级) |
|
|||
|
|
| 0x06 | 上→下 | 数据上报(BFI、电量、温度等) |
|
|||
|
|
| 0x07 | 下→上 | 参数查询或设置命令 |
|
|||
|
|
| 0x08 | 上→下 | 告警状态反馈 |
|
|||
|
|
| 0x09 | 下→上 | 时间同步命令(可选) |
|
|||
|
|
|
|||
|
|
| **4. ****协议说明** **4.1 ****握手流程(上电后)** | |
|
|||
|
|
| --- | --- |
|
|||
|
|
**嵌入式上电后主动发送握手请求:**
|
|||
|
|
|
|||
|
|
| **字段** | **示例值** | **说明** |
|
|||
|
|
| --- | --- | --- |
|
|||
|
|
| 帧头 | AA 55 | 固定 |
|
|||
|
|
| 命令字 | 0x02 | 握手请求 |
|
|||
|
|
| 数据长度 | 1 | 固件版本号长度 |
|
|||
|
|
| 数据 | 0x01 | 固件版本 V1 |
|
|||
|
|
| 校验 | XOR | 异或和 |
|
|||
|
|
| 帧尾 | 0D 0A | 固定 |
|
|||
|
|
|
|||
|
|
上位机收到后返回时间同步帧:
|
|||
|
|
AA 55 01 05 YY MM DD HH mm ss CS 0D 0A
|
|||
|
|
|
|||
|
|
| **4.2 ****心跳与状态上报(周期**** 1s****)** | |
|
|||
|
|
| --- | --- |
|
|||
|
|
|
|||
|
|
命令字:0x03
|
|||
|
|
|
|||
|
|
| **字段** | **长度** | **说明** |
|
|||
|
|
| --- | --- | --- |
|
|||
|
|
| BFI 血流值 | 4 | float, 嵌入式算法计算结果 |
|
|||
|
|
| 电池电量 | 1 | 百分比 0–100% |
|
|||
|
|
| 电池电压 | 2 | 单位 mV |
|
|||
|
|
| 内部温度 | 2 | 单位 0.1°C |
|
|||
|
|
| 激光器状态 | 1 | 0=异常,1=工作,2=停止 |
|
|||
|
|
| 电源类型 | 1 | 0=AC,1=BAT |
|
|||
|
|
| 保留扩展 | 4 | 预留字段 |
|
|||
|
|
| 校验 | 1 | 异或校验 |
|
|||
|
|
|
|||
|
|
上位机应答帧:
|
|||
|
|
AA 55 04 01 00 CS 0D 0A
|
|||
|
|
|
|||
|
|
| **4.3 ****报警控制命令(上位机**** → ****嵌入式)** | |
|
|||
|
|
| --- | --- |
|
|||
|
|
|
|||
|
|
命令字:**0x05**
|
|||
|
|
|
|||
|
|
| **字段** | **长度** | **说明** |
|
|||
|
|
| --- | --- | --- |
|
|||
|
|
| 报警代码 | 1 | 见下方报警表 |
|
|||
|
|
| 报警级别 | 1 | 0=低,1=中,2=高 |
|
|||
|
|
| 报警状态 | 1 | 0=清除,1=触发 |
|
|||
|
|
| 校验 | 1 | 异或校验 |
|
|||
|
|
|
|||
|
|
**示例:**
|
|||
|
|
AA 55 05 03 31 02 01 CS 0D 0A
|
|||
|
|
→ 表示触发高优先报警,代码31(电池电量<5%)
|
|||
|
|
|
|||
|
|
嵌入式根据报警等级执行:
|
|||
|
|
|
|||
|
|
| **优先级** | **指示灯** |
|
|||
|
|
| --- | --- |
|
|||
|
|
| 高 | 详细见《报警声光表达》 |
|
|||
|
|
| 中 | - |
|
|||
|
|
| 低 | - |
|
|||
|
|
|
|||
|
|
| **4.4 ****数据上报(嵌入式**** → ****上位机)** | |
|
|||
|
|
| --- | --- |
|
|||
|
|
|
|||
|
|
命令字:**0x06**
|
|||
|
|
|
|||
|
|
| **字段** | **长度** | **说明** |
|
|||
|
|
| --- | --- | --- |
|
|||
|
|
| BFI 数据 | 4 | Float 32 位 |
|
|||
|
|
| 电池电量 | 1 | 百分比 |
|
|||
|
|
| 电压 | 2 | mV |
|
|||
|
|
| 内部温度 | 2 | 0.1°C |
|
|||
|
|
| 激光器状态 | 1 | 0=关,1=开,2=异常 |
|
|||
|
|
| 电源状态 | 1 | 0=AC,1=BAT |
|
|||
|
|
| 扩展保留 | 4 | 预留字段 |
|
|||
|
|
| 校验 | 1 | 异或校验 |
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
**示例:**
|
|||
|
|
AA 55 06 0B 42 48 00 00 64 0F 27 01 2C 00 01 00 00 00 CS 0D 0A
|
|||
|
|
→ BFI=50.0,电量=100%,电压=9999mV,温度=30.0°C,激光状态工作中
|
|||
|
|
|
|||
|
|
| **5. ****报警代码表** | |
|
|||
|
|
| --- | --- |
|
|||
|
|
|
|||
|
|
| **报警代码** | **优先级** | **报警原因** | **报文方向** |
|
|||
|
|
| --- | --- | --- | --- |
|
|||
|
|
| 11 | 低 | 电池电量低(<40%) | 下位→上位 |
|
|||
|
|
| 21 | 中 | 电池电量低(<20%) | 下位→上位 |
|
|||
|
|
| 31 | 高 | 电池电量空(<5%) | 下位→上位 |
|
|||
|
|
| 32 | 高 | BFI 数值异常 | 上位→下位 |
|
|||
|
|
| 22 | 中 | 激光器温度异常 | 上位→下位 |
|
|||
|
|
| 33 | 高 | 激光器工作异常 | 上位→下位 |
|
|||
|
|
| 34 | 高 | 通信异常 | 上位→下位 |
|
|||
|
|
| 35 | 高 | 电池故障 | 上位→下位 |
|
|||
|
|
| 12 | 低 | 交流电未连接 | 上位→下位 |
|
|||
|
|
|
|||
|
|
| **6. ****典型通信时序流程** | |
|
|||
|
|
| --- | --- |
|
|||
|
|
|
|||
|
|
|
|||
|
|
| MCU Android |
|
|||
|
|
| --- |
|
|||
|
|
| 握手请求 (0x02) ->|
|
|||
|
|
|<- 握手应答 + 时间同步 (0x01) |
|
|||
|
|
| 周期心跳上报 (0x03) ->|
|
|||
|
|
|<- 心跳应答 (0x04) |
|
|||
|
|
|<-触发报警 33(高优先) |
|
|||
|
|
| 确认并执行灯光报警 ->|
|
|||
|
|
| 周期数据上报 (0x06) ->|
|
|||
|
|
| |
|