使用通用智能手表蓝牙BLE

时间:2016-10-18 08:54:38

标签: bluetooth-lowenergy gatt

首先,抱歉我的英语不好。

对于整个项目,我正在尝试将通用智能手表(this one)连接到Arduino。目的是收集信息(例如心率)。 我不知道设备如何与应用程序Mistep进行通信。所以我遵循了几个步骤。 此时,我没有在开始时分析连接的建立,而只分析值(心率)传输。

使用HCI / BLuetooth运行应用程序登录Android

我在Wireshark中分析了这个日志。

首先,我有一个由智能手表发送并由Android机器接收的数据包:

Bluetooth HCI ACL Packet
.... 1110 0000 0001 = Connection Handle: 0x0e01
..00 .... .... .... = PB Flag: First Non-automatically Flushable Packet (0)
00.. .... .... .... = BC Flag: Point-To-Point (0)
Data Total Length: 17
[Connect in frame: 12999]
[Source BD_ADDR: d6:1c:5a:c3:05:** (d6:1c:5a:c3:05:**)]
[Source Device Name: HRW_1c5ac305**]
[Source Role: Unknown (0)]
[Destination BD_ADDR: IntelCor_95:05:** (fc:f8:ae:95:05:**)]
[Destination Device Name: VMware Virtual Platform]
[Destination Role: Unknown (0)]
[Current Mode: Unknown (-1)]

Bluetooth Attribute Protocol
Opcode: Write Command (0x52)
    0... .... = Authentication Signature: False
    .1.. .... = Command: True
    ..01 0010 = Method: Write Request (0x12)
Handle: 0x0018 (Unknown)
    [UUID: Unknown (0xfff2)]
Value: 68260400110a1000bd16

然后Android设备向智能手表发送数据包(通知):

编辑:

Bluetooth HCI ACL Packet
.... 1110 0000 0001 = Connection Handle: 0x0e01
..10 .... .... .... = PB Flag: First Automatically Flushable Packet (2)
00.. .... .... .... = BC Flag: Point-To-Point (0)
Data Total Length: 9
[Connect in frame: 12999]
[Source BD_ADDR: IntelCor_95:05:** (fc:f8:ae:95:05:**)]
[Source Device Name: VMware Virtual Platform]
[Source Role: Unknown (0)]
[Destination BD_ADDR: d6:1c:5a:c3:05:25 (d6:1c:5a:c3:05:**)]
[Destination Device Name: HRW_1c5ac305**]
[Destination Role: Unknown (0)]
[Current Mode: Unknown (-1)]

Bluetooth Attribute Protocol
Opcode: Handle Value Notification (0x1b)
    0... .... = Authentication Signature: False
    .0.. .... = Command: False
    ..01 1011 = Method: Handle Value Notification (0x1b)
Handle: 0x000e (Heart Rate Measurement)
    [UUID: Heart Rate Measurement (0x2a37)]
Flags: 0x04, Sensor Support
    000. .... = Reserved: 0x00
    ...0 .... = RR Interval: False
    .... 0... = Energy Expended: False
    .... .1.. = Sensor Support: True
    .... ..0. = Sensor Contact: False
    .... ...0 = Value is UINT16: False
Value: 76

此数据包包含心率值(76),但Android设备会将其发送至智能手表以进行通知。我猜这个值已经从句柄0x0018值中检索到:68260400110a1000bd16。 问题是:我不知道如何从这个六进制中获取值。

您是否知道如何分析价值并获得心脏价值?

0 个答案:

没有答案