BLE温度特性转换

问题描述 投票:0回答:1

我在Zephyr上的nrf51822上运行了一个BLE应用。该应用程序正在读取湿度和温度传感器的数据,并显示环境传感特性。主要显示的值是温度(uuid:2A6E)。

我在Linux上通过Bluez读取这些数据时遇到了问题。使用nrfConnect应用程序,一切工作都没有问题--我连接到设备,可以看到温度读数--在20和26度之间的某个地方(分配给所述uuid)。

通过Bluez,我可以连接并读取特性句柄,但这些值对我来说没有任何意义。这是我的工作流程。

$ sudo gatttool -t random -b <ADDR> -I
$ [<ADDR>][LE]> connect
$ Attempting to connect to <ADDR>
$ Connection successful
$ [<ADDR>][LE]> char-desc
# there are a lot of other chars here, I list the one that interests me 
$ handle: 0x0017, uuid: 00002a6e-0000-1000-8000-00805f9b34fb
$ [<ADDR>][LE]> char-read-hnd 0x17
$ Characteristic value/descriptor: 2e 09

我得到了这个值,但我无法用任何方式将其转换为有意义的东西。我熟悉这个文档。温度xml但我想不通这对我有什么帮助。不知怎的,Nordic的应用可以让它变得有意义,我也想这样做。

bluetooth bluetooth-lowenergy bluez gatt
1个回答
1
投票

温度测量遵循以下规则。

  • 它是小恩迪亚格式的,所以你首先要把它切换成0x092e来读。

  • 你将其转换为十进制,得到(9x256+2x16+14)=2350。

  • 那么这个值有一个隐含的小数指数-2,这意味着你拿这个值除以100。

这意味着在这种情况下,读取的值是23.50摄氏度。

© www.soinside.com 2019 - 2024. All rights reserved.