
作用蓝牙通信协议定义的协议命令本质上是协议说明书和硬件之间沟通双方协定好的命令类比理解就像你和朋友约定 我说 1 代表你好 我说 2 代表再见 CmdType 就是你和硬件之间的暗号本 在命令交互过程中设备信息上报会标记一个码标识”这个是我主动上报的信息“, 我们区分设备上报信息的时候就是识别过滤出这个码携带的信息。 当我给设备发送请求某个命令请求信息的时候设备回过来的信息上就会打上另外的码 标识“这个是你请求到的信息”。DeviceInfoType这个里面的命令是定义更加详细的数据类型, 通过这个类可以知道这个充电宝/蓝牙设备支持哪些功能响应流程图┌─────────────────────────────────────────────────────────────────┐ │ 协议通信流程 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ App 端 │ │ │ │ │ │ 发送命令: (CmdType.info) │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ 硬件收到 CmdType.info │ │ │ │ 知道App 想要我的信息 │ │ │ │ 开始准备数据... │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ │ │ │ 回复数据:电量码 (电量) 数值 │ │ │ 固件码(固件版本) 数值 │ │ │ MTU码(MTU) 数值 │ │ ▼ │ │ App 收到数据 │ │ 根据 DeviceInfoType 解析 │ │ 电量码 → 电量 │ │ 固件码 → 固件版本 │ │ MTU码 → MTU │ │ │ └─────────────────────────────────────────────────────────────────┘代码示例///定义的协议命令ID class CmdType { //设置 CmdType._(); static const info 0x00; /// 请求到的设备信息 static const notifyInfo 0x00; /// 设备信息主动上报 } class DeviceInfoType{ //读取 DeviceInfoType._(); static const battery 0x00; ///电量 static const mtu 0x00; ///MTU static const firmware 0x00;///固件版本 static const port 0x00;///端口信息 static const capacity 0x00;///电容量 static const model 0x00;///获取型号 static const temperature 0x00;///温度 }