| **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) ->| | |