簡短問題:是否可以掃描LE設備,同時定期連接某些設備並讀取特性a)一般情況下[協議是否允許]和b)使用BlueZ疊加麼?BlueZ/Pybluez - 連接到外圍設備時進行藍牙LE掃描
很長的問題:我正在編寫一個Python腳本來掃描廣告某個UUID的LE設備。如果找到一個,我們應該連接,讀取一個特定的值(稱爲ValueA
),然後斷開連接。這個想法是保持一個實時列表ValueA
的存在。我希望能夠產生一個啓動LE掃描的線程,並將廣告事件收集到一個線程安全的容器中。當發現新設備時,應該觸發一個處理程序來讀取ValueA
。
我的努力使用PyBluez和BluePy(連接到外設)失敗。當我使用終端命令(sudo hcitool lescan --duplicates
和sudo gatttool -I
其次是連接並讀取命令),這些失敗,如果我嘗試後,我開始掃描連接(掃描中止)
我很困惑,因爲我發現,如果我連接到設備通過gatttool
開始LE掃描之前,我可以啓動掃描並繼續閱讀ValueA
而不影響掃描,但反之亦然。
任何見解或良好的BlueZ編程文檔,將不勝感激。在Ubuntu 14.10上使用BlueZ 4.1 Macbook Pro
啊,所以藍牙規範中沒有任何東西可以排除這種情況發生。你有沒有成功使用特定的加密狗,或者是否有我可以搜索的此功能的名稱?你使用的是什麼版本的BlueZ,4.x或5.x?另外,對於外設,我已經使用[bluepy](https://github.com/IanHarvey/bluepy)來發現服務和讀取特性。 – thegeebe 2015-04-08 18:44:06
好吧,它沒有在標準中規定,所以它取決於硬件製造商。 Iogear GBU521能夠在連接時繼續掃描。我從中國獲得的廉價(很可能是假的)CSR沒有能力。你基本上只需要測試一下就可以知道。如果您希望自己的代碼穩定可靠,則可以在嘗試連接時暫時關閉掃描,然後在建立連接後再打開它。 – 2015-04-08 18:50:12
相關提示;我也在使用中國的廉價CSR。謝謝! – thegeebe 2015-04-08 18:57:18