蓝牙LE _commands_的消息结构/语法是什么?

时间:2018-09-26 19:41:52

标签: bluetooth-lowenergy

我试图了解以下信息如何转换为发往BLE设备的消息,并试图从中读取一些存储的数据。 设备文档的第一部分为我提供了基本的UUID和两个服务。

UUID Base: 1212-efde-1234-567feathf890 
Service UUID: 0x1462 
Characteristic: 0x1463 (write/notify)

这是有道理的,并且我了解到要写入设备,我会发送一条由服务/特性和基本UUID即即组成的消息。 00001462-1212-efde-1234-567feathf890和00001463-1212-efde-1234-567feathf890。通过这种特性,我可以附加要写入的有效负载。

但是,要读取数据,文档会指定 命令

Command:
Message Name: Read the storage data with index, part 1(time) 
Message ID: 0x36 
Message Description: Read data (part 1: date and time) 
Length:  Request: 8 bytes / Response: 8 bytes

我不知道该怎么解释。我认为这意味着我需要包括0x36作为“写入”特性的有效负载,并且当写入该值时,设备将响应数据,但这似乎不起作用。执行命令的消息应该是什么样的?

注意:我已连接到设备并断开了与设备的连接,我的写消息没有引发任何错误,因此我认为它们是成功的。只是我无法访问设备上的数据(手动输入,是的,它在那里)。

更新:虽然没有明确说明,但该设备可能会通过BLE使用串行。

1 个答案:

答案 0 :(得分:0)

事实证明,该文档没有重点说明。 ble用于通信串行格式的数据。可以使用UART串行格式写入和接收数据,而不是使用GATT定义。因此,适当的“写入”将使用服务和特征,其数据格式为:

<start byte> <command byte> <data byte(s)> <stop byte> <checksum>

接收到的数据将具有相同的格式,但“ <数据字节>”显然不同。在每种情况下,都必须将其分解为比特并进行适当的解析。在升级到ble后很长时间,这是在设备上保持嵌入式串行接口有用的一种很酷的方法。

相关问题