Advertisement

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 软件验证

附:

除了定时开关闹钟指令及其反馈指令外,请考虑是否有必要添加计步数据采集指令中的数据标识位

全部评论 (0)

还没有任何评论哟~