簡體   English   中英

BlueZ示例GATT服務器

[英]BlueZ example gatt server

我正在學習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%電池電量”。 問題在於代碼中沒有在'self.battery_lvl'中添加'%Battery Level'(僅24)。 那么,這些附加信息又添加在哪里呢? 對不起我的英語不好。 如果您需要其他信息,請告訴我

電池電量示例使用Bluetooth服務采用的UUID(0x180F)和屬性格式(請參閱 )。 這樣,當手機應用程序找到該服務並看到UUID時,它將知道這是電池服務,並在讀取該值時添加%。 當使用已采用的服務/特性與自定義特性時,這是一個主要優勢,因為本地端具有預定義的格式,因此可以在遠程端添加智能。 請注意,這也適用於采用的心率服務/特性(該應用程序將立即添加bpm),采用的溫度服務/特性(該應用程序將立即添加(°C),等等)。

有關采用的服務和特性的完整列表,請參見以下鏈接:-

有關此主題的更多信息,請:

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM