我正在开发一个xamarin安卓应用程序,以连接蓝牙低能量秤。我已经可以连接到设备,探索它的服务和特性,但是我面临一些提取它的价值的问题。
该规模实现了蓝牙SIG标准,因此我希望它具有体重秤服务(org.bluetooth.service.weight_scale)和体重测量特性(org.bluetooth.characteristic.weight_measurement)。显然不是。
探索设备服务,读取服务接缝为“未知服务”(0000ffe0-0000-1000-8000-00805f9b34fb),特征接缝为“TI SensorTag Keys Data”(0000ffe1-0000-1000-8000-00805f9b34fb) 。
以下是来自参考服务的一些样本读数:
该量表支持体重读数,体脂肪,体水,肌肉质量,骨量,巴塞尔代谢率和活跃代谢率。我想我正在使用重量只读模式。我已经将十六进制值转换为十进制,但输出值不是直接的。
我应该使用什么公式来提取价值?
如果您只关心特征值的最后两个字节:06-20,06-60,0-62和09-44。您可以将它们与比例尺上显示的重量进行比较:
> 0x620/78.4 -> 20.0
> 0x660/81.6 -> 20.0
> 0x662/81.7 -> 20.0
> 0x944/118.6 -> 20.0
这意味着由特征值的低两个字节表示的数字中的每个数字等于1千克的1/20 = 50g。
要在应用程序中显示权重,只需将特征值的最后两个字节转换为主机整数表示(ntohs
或等效的https://linux.die.net/man/3/ntohs)并将其除以20。