我想實現一個C++代碼(使用的bluez 5.43和DBUS)讀取從BLE傳感器通告報文閱讀從BLE傳感器通告報文的正確方法。根據bluez DBus文檔,有一個StartDiscovery可用於掃描附近設備的API。但是,我無法找到任何API來存儲/解析來自附近BLE設備的廣告數據包。該advertising-api.txt名單registeradvertisement API,但按我的理解,它只能用於創建通告報文,而不是從外部設備讀取使用(還是我錯了?)有人可以請指導我在正確的方式來獲得從附近的BLE廣告包使用bluez和DBus的設備?什麼是使用的bluez 5.43和的DBus
2
A
回答
0
你在一個你最後的註釋中描述的行爲是正確的(廣告數據不beeing更新):如果我是正確的一個BLE裝置不應該把所有的時間,就可以睡覺或轉向低功耗等
在這種情況下,它是不奇怪的是,數據在某種程度上是「緩存」。根據我的經驗,當您執行掃描並發現設備(即使您未連接到設備)時,設備信息將被存儲一段時間。
在你的情況,那是因爲你是通過廣告傳遞的數據是有問題的。然而,有一種方法可以強制bluez刪除所有關於設備的緩存數據。: adapter-api提供了一個RemoveDevice(對象設備)方法。它將對象路徑(例如「/ org/bluez/hci0/dev_AA_BB_AA_BB_AA」)作爲參數。
如果您在C中尋找DBus綁定,我建議使用GLib GDBus(您可以在freedesktop網站的本教程底部找到鏈接:https://dbus.freedesktop.org/doc/dbus-tutorial.html)。
如果您熟悉bluetoothctl(與使用命令的bluez交互的工具),它是通過使用油嘴GDbus,你可以在這裏找到源代碼中的bluez傢伙developped(看底部找到命令列表):https://git.kernel.org/cgit/bluetooth/bluez.git/tree/client/main.c
有使用GDBus與bluez的,但bluetoothctl源代碼更straigthforward方式是一個開始,你會發現幾乎任何可能與bluez的做例子=)
0
感謝大家的建議。我終於能夠通過使用英特爾的tinyb庫獲取製造商數據。它有一個enable_manufacturer_data_notifications API,可以在製造商數據發生變化時通知您。
相關問題
- 1. Linux BlueZ dbus通信
- 2. Dbus&Bluez編程語言
- 3. 是DBus我在找什麼?
- 4. BlueZ 5.4 DBus API ConnectProfile GATT服務UUID
- 5. 更新了Bluez DBUS-API文檔?
- 6. 使用bluez python dbus接口連接到藍牙LE設備
- 7. BlueZ在DBUS上顯示舊的緩存數據
- 8. 什麼是dbus守護進程,爲什麼vlc需要它
- 9. 使用Dbus API爲bluez寫入特徵值5.31內核4.1失敗
- 10. C++:遍歷DBUS消息使用迭代器查找BlueZ 5適配器
- 11. Dbus glib接口的設計和使用
- 12. 什麼是使用.EXP的,是什麼樣的.lib和.dll
- 13. 什麼取代libbluetooth1-dev使用BlueZ進行C編程?
- 14. 用libdbus-C++得到了一個DBus :: Path - 下一步是什麼?
- 15. 什麼是ASO和BSO,使用這些的優勢是什麼
- 16. 創作的配合bluez
- 17. 如何在python中顯示特定dbus總線名稱(/ org/bluez)的接口?
- 18. Dbus結構和方法調用C
- 19. DBus Bluez5 CancelPairing()
- 20. Bz的BluezV5.42 DBUS C API?
- 21. 使用DBT從QT/C++連接到新的Bluez HDP插件
- 22. 使用Perl開始DBus的會話總線Net :: DBus
- 23. DBus:使用直接dbus API測量數據交換的時間
- 24. 使用dbus綁定工具的glib dbus服務示例?
- 25. 爲什麼無法在Python中使用dbus調用org.freedesktop.NetworkManager中的方法?
- 26. 正確使用GPtrArray和GValueArray與glib dbus
- 27. 使用bluez的藍牙自定義UUID
- 28. Python中調用MQ代理和的DBus
- 29. 的DirectShow什麼是使用
- 30. 什麼是STATIC_URL的使用
據我所知,你做'StartDiscovery',那麼'Device'對象出現,因爲他們被發現。這些對象的屬性可能充滿了來自廣告數據包的數據。 – Velkan
@Velkan:感謝您的回覆。說實話,我在這裏有點困惑。我有一個BLE傳感器,以廣告數據包的形式定期傳輸傳感器讀數。該信息也包含在低能量掃描響應中。所以我需要完整的響應來解析所需的數據。我試圖用dbus和bluez-5.43來實現它。我認爲任何屬性都不會給出低能量掃描響應。如果我錯了,請糾正我。 – darkknight
org.bluez.Device1有ServiceData和ManufacturerData。它們與advertising-api.txt中的ServiceData和ManufacturerData不同嗎?也許他們包含帶有讀數的AdvData? – Velkan