# BabyOS_Protocol **Repository Path**: notrynohigh/BabyOS_Protocol ## Basic Information - **Project Name**: BabyOS_Protocol - **Description**: 使用QTCreate编写的上位机,配合BabyOS的通用协议b_protocol使用 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: https://gitee.com/notrynohigh/BabyOS - **GVP Project**: No ## Statistics - **Stars**: 21 - **Forks**: 12 - **Created**: 2020-03-15 - **Last Updated**: 2025-06-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # BabyOS_Protocol 使用QTCreate编写的上位机,配合BabyOS的通用协议b_mod_protocol使用。上位机协议格式配置如下: | 头部 | ID | 长度 | 指令 | 参数 | 校验 | | ----- | ------ | ------ | ----- | -------- | ----- | | 1Byte | 4Bytes | 2Bytes | 1Byte | 0~nBytes | 1Byte | `上位机的设备ID为 0x1314` # 1 通用指令 ## 1.1 测试指令(0x1) | 指令 | 参数(7Bytes) | | ---- | ------------ | | 0x1 | "BabyOS" | --- ## 1.2 设置时间指令 (0x2) | 指令 | 参数(4Bytes) | | ---- | ------------ | | 0x2 | UTC | --- ## 1.3 通知新固件信息 (0x3) 触发OTA `(上位机==>设备)` | 指令 | 参数(72Bytes) | | ---- | ------------ | | 0x3 | 文件大小(4Bytes) CRC32校验值(4Bytes) 固件名(64Bytes)| `固件名长度不足64字节时,补0` ```c typedef struct { uint32_t size; uint32_t crc32; char filename[64]; }fwinfo_t; ``` `(设备==>上位机)` | 指令 | 参数(0) | | ---- | ------------ | | 0x3 | 无参数 | --- ## 1.4 请求分包数据指令 (0x4) `(设备==>上位机)` | 指令 | 参数(2Bytes) | | ---- | ------------ | | 0x4 | 分包序号(2Bytes)| `分包序号从0开始` `(上位机==>设备)` | 指令 | 参数(514Bytes) | | ---- | ------------ | | 0x4 | 分包序号(2Bytes) 数据长度(512Bytes)| `剩余长度不足512字节时,补0` --- ## 1.5 上报升级/传输文件结果指令 (0x5) `(设备==>上位机)` | 指令 | 参数(1Bytes) | | ---- | ------------ | | 0x5 | 升级结果(1Bytes)| `校验成功:0` `校验失败:1` `固件名不匹配:2` `文件长度不合理:3` `超时:4` `(上位机==>设备)` | 指令 | 参数(0Bytes) | | ---- | ------------ | | 0x5 | 无参数| --- ## 1.6 传输文件至FLASH (0x6) `(上位机==>设备)` | 指令 | 参数(16Bytes) | | ---- | ------------------------------------------------------------ | | 0x6 | 文件大小(4Bytes) CRC32校验值(4Bytes) 设备号(4Bytes)偏移地址(4Bytes) | ```c typedef struct { uint32_t size; uint32_t crc32; uint32_t dev_no; uint32_t offset; }file_trans_t; ``` 通过指令4获取文件数据。 ## 1.7 获取UID (0x7) `(上位机==>设备)` | 指令 | 参数(0Bytes) | | ---- | ------------ | | 0x7 | 无参数 | `(设备=回复=>上位机)` | 指令 | UID长度(1Bytes) | UID(nBytes) | | ---- | --------------- | ----------- | | 0x7 | | UID内容 | ## 1.8 写入SN (0x8) `(上位机==>设备)` | 指令 | SN长度(1Bytes) | SN内容(nBytes) | | ---- | -------------- | -------------- | | 0x8 | | | `(设备=回复=>上位机)` | 指令 | 无参数 | | ---- | ------ | | 0x8 | | ## 1.9 物模型方法调用 (0x9) `(上位机==>设备)` | 指令 | 参数 | | ---- | ------------ | | 0x9 | 方法调用内容 | `(设备=回复=>上位机)` | 指令 | 无参数 | | ---- | ------ | | 0x9 | | ## 1.10 获取设备信息 `(上位机==>设备)` | 指令 | 无参数 | | ---- | ------ | | 0xA | | `(设备=回复=>上位机)` | 指令 | 版本 | 型号 | | ---- | ----------- | ----------- | | 0xA | 版本(16B) | 型号(16B) | # 2 网络相关指令 ## 2.1 进入配网(0x30) `(上位机==>设备)` | 指令 | 参数 | | ---- | ---- | | 0x30 | | 参数说明: ```c struct { uint8_t type; // 配网方式 1字节 AP配网(0) BLE配网(1) uint8_t ssid[32]; uint8_t passwd[64]; }; ``` `(设备=回复=>上位机)` | 指令 | 无参数 | | ---- | ------ | | 0x30 | | ## 2.2 获取网络信息(0x31) `(上位机==>设备)` | 指令 | 无参数 | | ---- | ------ | | 0x31 | | `(设备=回复=>上位机)` | 指令 | 参数 | | ---- | -------- | | 0x31 | 网络参数 | 参数说明: ```C struct { uint8_t ssid[32]; // 连接的热点名 uint32_t ip; uint32_t gw; uint32_t mask }; ``` # 3 语音相关指令 ## 3.1 设置语音开关(0x40) `(上位机==>设备)` | 指令 | 参数 | | ---- | ------------- | | 0x40 | 开关(1Byte) | `(设备=回复=>上位机)` | 指令 | 无参数 | | ---- | ------ | | 0x40 | | ## 3.2 语音音量设置 (0x41) `(上位机==>设备)` | 指令 | 参数 | | ---- | -------------- | | 0x41 | 0~100(1Byte) | `(设备=回复=>上位机)` | 指令 | 无参数 | | ---- | ------ | | 0x41 | | ## 3.3 获取语音音量 (0x42) `(上位机==>设备)` | 指令 | 无参数 | | ---- | ------ | | 0x42 | | `(设备=回复=>上位机)` | 指令 | 参数 | | ---- | -------------- | | 0x42 | 0~100(1Byte) | ## 3.4 获取语音状态(0x43) `(上位机==>设备)` | 指令 | 无参数 | | ---- | ------ | | 0x43 | | `(设备=回复=>上位机)` | 指令 | 参数(1Byte) | | ---- | ------------------------------------- | | 0x43 | 0:空闲
1:聆听中
2:播放中 | ## 3.4 播放内容 (0x44) `(设备=>上位机)` | 指令 | 参数(nByte) | | ---- | ------------- | | 0x44 | | `(上位机==>设备)` | 指令 | 无参数 | | ---- | ------ | | 0x44 | |