我在快速檢測附近藍牙設備的名稱(人名,而不是BTADDR)時遇到問題 我在這裏發現了一個非常有趣的基於Python的項目[http://code.google.com/p/python-bluetooth-scanner /],但問題基本上是,在尋找BTADDR和RSSI速度很快的情況下,檢測設備的「人類」名稱需要更長的時間(即使它們說它應該在代碼中工作)快速藍牙名稱查詢
我知道我可以查找與名稱:
- 簡單的「hcitool掃描」控制檯命令,這是緩慢的
- 的bluetooth.lookup_name(地址)模塊PyBlueZ的方法
- 書面項目,報告如下
-
sock = bluetooth.bluez._gethcisock(device)
timeoutms = int(timeout * 1000)
try:
name = bluetooth._bluetooth.hci_read_remote_name(sock, address, timeoutms)
except bluetooth._bt.error, e:
print e
logger.debug("Lookup Failed")
name = None
sock.close()
return name
一個簡短的洞察:系統使用2個加密狗偵測附近BT設備,如果我讓他們查找姓名,他們會花費更多時間,因此保持鎖定狀態,當發現新設備時,設備仍處於鎖定狀態以查找以前的姓名,並且整個軟件都會掛起。 我在WindowsXP環境下的VirtualBox中運行Ubuntu 10.10以及一對BT 2.1加密狗。
除了創建一個「未命名」設備的列表,只要我的加密狗完成了以前的設備。你知道我能做得更快嗎?
您可以讓一個dongle監視新設備,另一個可以查詢它們的名稱(可能每個都在它自己的線程/進程中,所以它們不會彼此阻塞)? – Piskvor 2011-02-04 12:12:52