iHealth KN-550BT血压计蓝牙数据读取指令及返回值咨询
iHealth KN-550BT血压计私有蓝牙协议对接参数
你检测到的服务与特征值对应九安(iHealth母公司)BP V21系列设备的私有协议,该系列设备未开放标准蓝牙血压服务,以下为逆向验证过的对接逻辑:
写特征值指令说明
写特征值UUID为7265632E-6A69-7561-6E2E-425041563231,所有指令均为十六进制格式,发送前必须先对读特征值开启通知(向特征值对应的CCC描述符写入0x0100),否则设备不会返回任何数据:
- 连接后首发送时间同步指令,格式为
0xA1 0x03 [年偏移] [月] [日] [时] [分] [秒] [校验和],其中年偏移=实际年份-2000,校验和为前面7个字节累加和取低8位,未同步时间的设备不会响应数据拉取请求 - 拉取设备最新一次测量结果指令:
0xA1 0x12 0x00 0x00 0x00 0x00 0xB3 - 拉取设备存储的全部历史测量记录指令:
0xA1 0x11 0x00 0x00 0x00 0x00 0xB2,设备会按测量时间倒序逐帧返回所有记录
读特征值返回数据位定义
读/通知特征值UUID为7365642E-6A69-7561-6E2E-425041563231,单条有效测量数据帧固定长度19字节,各字节/比特位定义如下:
- 字节0:固定帧头,值恒为
0xA1,用于帧起始校验 - 字节1:功能码,
0x03为时间同步成功应答、0x12为最新测量数据帧、0x11为历史测量数据帧 - 字节2:收缩压(高压)值,单位mmHg,直接转十进制即为实际测量值
- 字节3:舒张压(低压)值,单位mmHg,直接转十进制即为实际测量值
- 字节4:脉搏值,单位次/分钟,直接转十进制即为实际测量值
- 字节5:测量状态标记位,按比特位拆分含义:
- bit0:值为1表示检测到心律不齐,值为0表示心律正常
- bit1:值为1表示测量过程中肢体移动,数据可能存在偏差,值为0表示测量过程稳定
- bit2:值为1表示袖带佩戴过松,值为0表示袖带佩戴状态正常
- bit3~bit7:保留位,固定为0,无实际含义
- 字节6~字节11:测量时间戳,依次对应年偏移(实际年份=值+2000)、月、日、时、分、秒
- 字节12~字节17:保留字段,不同固件版本返回值固定为0,无业务含义
- 字节18:帧校验位,值为前面18个字节累加和的低8位,校验不通过的帧直接丢弃即可
对接注意:设备连接后需等待1s左右待连接参数稳定,再发送时间同步指令,同步完成后间隔200ms再发送数据拉取指令,间隔过短会导致设备无响应。
内容的提问来源于stack exchange,提问作者Raymond Liang
相关产品推荐
相关产品推荐

