android手环通信协议,BLE通信协议
服务与特征
Service UUID:
6E400001-B5A3-F393-E0A9-E50E24DCCA9E
Characteristic 1
UUID: 6E400003-B5A3-F393-E0A9-E50E24DCCA9E
属性:通知(Notify)
数据长度:最大20字节
数据意义:RX特征字
Characteristic 2
UUID: 6E400002-B5A3-F393-E0A9-E50E24DCCA9E
属性:写(Write)
数据长度:最大20字节
数据意义:TX特征字
数据包格式
帧头
命令
数据
检验位
帧尾
0x7E
0xxx
0x...
CRC_8_compute()
0x5A
1 byte
1 byte
n byte
1 byte
1 byte
App 下传数据到手环
命令及数据
命令
命令说明
数据标示
数据大小及说明
0x01
绑定手环
0x...
占用2个字节的空间内生成并发送一个介于0到65535之间的随机数值,在绑定完成后,App端与手环端将记录该随机数值,并在后续的连接中进行比对检查。
0x02
同步时间
0x...
占6byte,设置手环时间:年月日时分秒
0x03
解绑
0x41
占1 byte,解绑手环
0x04
心率/血压测量
0x42
占1 byte,心率血压测量
0x05
启动心电测量
0x43
占1 byte,开始心电测量
0x06
停止心电测量
0x44
占1 byte,停止心电测量
0x07
启动消息通知
0x45,0xxx
占2byte,第二字节代表:消息ID ( 0x41-QQ, 0x42-微信,0x43-来电, 0x44-短信, 0x45 -微博 )
0x08
停止消息通知
0x46,0xxx
占2byte,格式与开启消息通知格式一致
0x09
获取闹钟
0x47
占1 byte,获取全部闹钟
0x0A
修改闹钟
0x48,0x...
占用8个字节,并包含以下字段:(第一个字节)定时闹钟标识符;(接下来的三个字节)表示时间信息;(第三个字节为零时)(一个字节保留空闲状态),用于表示定时闹钟周期模式的状态。(最后一个字节)指示是否进入贪睡状态。
0x0B
添加闹钟
0x49,0x...
占8 byte ,格式与修改闹钟格式一致
0x0C
删除闹钟
0x0A,0xxx
占2 byte,第二字节代表:闹钟ID (0x01 闹钟1 ,0x02 闹钟2, 0x03 闹钟3)
0x0D
数据同步(心率/血压)
0x0B
占1 byte,同步心率/血压数据
0x0E
获取消息通知开关状态
0x0E
占1 byte,消息通知开关状态
0x0F
获取计步数据
开启/关闭闹钟
2 byte
注:(闹钟数据格式说明)
闹钟周期模式: 一个字节的低7bit 代表周一到周日 为1 有效 为0无效
如0x83 代表周一和周二有闹钟(自定义) 如果是一次0x04(代表周三一次闹钟)
时间 : 3个字节 小时一个字节 分钟一个字节 秒钟一个字节
闹钟ID : 0x01 闹钟1 0x02 闹钟2 0x03 闹钟3
贪睡模式 :0x11 关闭贪睡 0x12 打开贪睡(闹三次间隔10分钟)
手环 上传数据到 App
命令及数据
命令
命令说明
数据标示
数据大小及说明
0xE1
回复接收随机数绑定
0xxx
该系统支持以下几种状态配置:初次设备端连接的状态由唯一标识符唯一确定;手环与其他手机关联;随机数值相等即为正常连接;而系统处于失败状态时则表示通信异常
0xE2
回复收到时间命令
0x12
回复收到同步时间
0xE3
回复解绑结果
0xxx
占1 byte, 0x11 成功; 0x21 失败
0xE4
回复心率、血压数据值
0x...
占用8个字节响应启动心率监测:包括月份(month)、日期(day)、小时(hour)、分钟(min)、秒(second)、心率(heart)以及高血压血压(HighbloodPressure)、低血压血压(Lowbloodpressure)字段信息
0xE5
回复心电数据包
0x...
占18 byte,回复启动心电测量:周期发送数据包 先暂时一次发送18个心电字节
0xE6
回复停止心电检测
0x14
占1 byte,停止心电测量
0xE7
回复开启消息通知
0x15
占1 byte,回复启动消息通知
0xE8
回复关闭消息通知
0x16
占1 byte,回复停止消息通知
0xE9
回复获取闹钟
0x...
占用8个字节的资源中存储有时间管理功能相关的配置信息。通过回复的方式获取闹钟信息:首先会发送一个命令询问当前时间;接着会提供一个字节来标识闹钟ID;然后会发送三个字节包含小时、分钟和秒钟;随后会发送一个字节指示是否开启:当值为[hex]11时开启(即打开),值为[hex]12时关闭(即关闭);接着会发送两个字节设置周期;最后会发送一个字节指示贪睡模式:数值在[hex]xx范围内表示启用贪睡。当三个或多个闹钟被设置时,则返回三条指令供其操作。
0xEA
回复设置闹钟
0xxx
占1 byte,0x17(1byte)成功 0x27失败
0xEB
回复添加闹钟
0xxx
占1 byte,0x18(1byte)成功 0x28失败
0xEC
回复删除闹钟
0xxx
占1 byte,0x19(1byte)成功 0x29失败
0xED
数据同步(包括心率、血压、历史数据)
0x...
占用9个字节的回复同步数据包括:心跳血压(次数),年份(一年),日期(一个月),时间点记录到一天内包含小时数为一个小时的小时段内有分钟数为一分钟的一分钟内有秒数为一秒的一秒内的心跳次数以及高血压参数值中的收缩压和舒张压数值
0xEE
回复获取消息通知
0x...
占用两个字节,并包含以下字段信息:(每个字段各占多少字节) 回复消息状态字段使用八进制编码:其中高位两位为校验码
0xEF
主动上发计步数据
0x...
占3 byte ,计步数据 (主动上传计步)
0xF1
回复获取计步数据
0x...
占3 byte ,计步数据 (回复获取计步)
回复开启/关闭闹钟
0x...
占2 byte ,第一字节表示对应的闹钟ID,第二字节代表开启状态
注:(消息ID)
0x41 代表QQ消息
0x42 代表微信消息
0x43 代表 来电消息
0x44 代表短信消息
0x45 代表微博消息
数据校验方法
unsigned char CRC_8_compute (unsigned char * p_data, unsigned short length)
{
unsigned char i, crc = 0;
while(length--)
{
crc ^= *p_data++;
for(i=0; i<8; i++)
{
if(crc & 0x01)
crc = (unsigned char)((crc >> 1) ^ 0x8C);
else
crc >>= 1;
}
}
return crc;
}
// 校验字节从“命令”字节开始到“数据”结束
// 可以用格西CRC计算器1.0 软件验证
附:
除了定时开关闹钟指令及其反馈指令外,请考虑是否有必要添加计步数据采集指令中的数据标识位
