上位机说明 由于MTU限制,建议采用分小包发送的方式进行数据读写,即上位机需要控制写入和读取的长度,不能过长,一般不超过20个字节 SERVER UUID:0X00FF 1. 写参数设置: 发送命令到UUID:0XFF01 格式:0xf0 byte1 byte2 byte3 ...数据(小端) 功能码 写地址 数据长度 数据 (1)电流: 起始地址:0x0180 总长度:0x0a 数据结构: typedef struct { uint16_t magic; struct _ch { uint16_t ad_4ma; uint16_t ad_20ma; } ch[2]; } cal_4_20ma_t; (2)流量 起始地址:0x0188 总长度:0x14 数据结构: typedef struct { int16_t flow_min; int16_t flow_max; } ad_flow_cal_t; typedef struct { uint16_t magic; uint16_t input_type; int16_t min_flow[2]; ad_flow_cal_t ad_cal[2]; uint16_t pulse_coef[2]; uint16_t rsv[6]; } flow_config_t; (3)深度 起始地址:0x0198 总长度:0x1e 数据结构: typedef struct { uint16_t magic; uint8_t input_type; // 0:正交 1:正交反向 2:方向脉冲 3:方向脉冲反向 uint8_t port; // 编码器端口 uint16_t N; //编码器系数分子 uint16_t M; //编码器系数分母 // int pluse_coef; // 脉冲系数0.001mm int16_t min_depth; // 最小深度 mm int16_t max_depth; // 最大深度 mm int16_t sample_depth; // 采样深度 mm int16_t depth_offset; // 默认深度偏移 int16_t min_valid_depth; // 最小有效深度 int16_t inc_pile_depth; // 允许换桩深度 uint16_t current_on_threshold; // 行走电机开启电流 uint16_t current_off_threshold; // 行走电机关闭电流 uint16_t move_on_duratino; // 持续时间 uint16_t move_off_duration; // 持续时间 uint16_t move_current_channel; //行走电流通道 } depth_config_t; 2. 读: 发送命令到UUID:0XFF01 格式:0xf1 byte1 byte2 byte3 功能码 地址 长度 监听UUID:0xff01即可得到数据 读取得到的数据前面包含发送的信息(发送的命令 + 数据),读取者需要自行处理前面多的数据 3. 上报实时数据: 接受端需要开启上报,发送0xF2命令到UUID:0XFF01 之后监听UUID:0XFF02即可得到实时数据 下位机说明 1. 如需添加上报数据,在 ble_gatts_server.c文件的notify_all_data 函数中添加即可 2. 如需响应上位机的控制,例如开始和暂停按键,则需要在 stm32/ModbusS.c 中的 ModBusWordWriteHook 函数中添加写入特定值的响应操作 目前只实现的配置参数保存的响应,其他的没有实现