BlueZ示例gatt服务器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BlueZ示例gatt服务器相关的知识,希望对你有一定的参考价值。
我正在学习BlueZ和BLE。在bluez / test目录中有一个python'example gatt server'。我已经阅读了代码,几乎了解它是如何工作的,但有些事情并不清楚。例如,这种方法可以通知特征值何时发生变化(在此示例中为电池电量值):
def notify_battery_level(self):
if not self.notifying:
return
self.PropertiesChanged(
GATT_CHRC_IFACE,
{ 'Value': [dbus.Byte(self.battery_lvl)] }, [])
PropertiesChanged方法如此定义:
@dbus.service.signal(DBUS_PROP_IFACE,
signature='sa{sv}as')
def PropertiesChanged(self, interface, changed, invalidated):
pass
我开始做广告并运行这个例子,然后我在我的智能手机上使用BLE扫描仪应用程序来读取特性(在这种情况下是电池电量)。好吧,self.battery_lvl是一个整数(例如24),但在ble扫描仪上,作为特征值,我看到“24%电池电量”。问题是代码中没有任何地方将'%battery level'添加到self.battery_lvl(仅为24)。那么这些额外的信息又添加到了哪里?对不起我的英语不好。如果您需要其他信息,请告诉我
电池级示例使用蓝牙服务采用UUID(0x180F)和属性格式(请参阅this)。因此,当移动电话应用找到服务并看到UUID时,它将知道这是电池服务,并在读取值时添加%。当使用所采用的服务/特性与自定义服务/特性时,这是一个主要优势,您可以在远程端添加智能,因为本地端具有预定义的格式。请注意,这也适用于采用的心率服务/特性(应用程序将立即添加bpm),采用温度服务/特性(应用程序将立即添加(°C),等等。
有关采用的服务和特征的完整列表,请参阅以下链接: -
有关此主题的进一步阅读: -
我希望这有帮助。
以上是关于BlueZ示例gatt服务器的主要内容,如果未能解决你的问题,请参考以下文章
BlueZ DBUS API - GATT 接口对 BLE 设备不可用