2011-02-28 70 views
2

我有幾個藍牙設備,我試圖在Linux中連接到。除了一個設備外,我沒有任何問題。不同之處在於,所有其他設備都以標準方式處理藍牙連接(即我所假設的),即他們等待主機設備(PC)發起連接。另一方面,另一方面,設備每隔幾秒就嘗試啓動一次連接,休息一秒鐘左右。我如何一直連接到Linux上的相同rfcomm端口?

對於其他的設備,我已經連這樣的:

rfcomm connect /dev/rfcommX <deviceMacAddress> 

(其中X爲任何未使用的RFCOMM端口號)

發出此命令之前,我跑了藍牙劑所需的配對鍵。這裏的一切都很好。

對於有問題的設備,此設備在配對之前第一次很好地工作。然而,配對後,rfcomm connect命令很有可能失敗。這是因爲設備本身試圖初始化連接。當設備處於睡眠狀態時,連接失敗(「主機關閉」)。

相反,我發現,此設備,下面的命令作品就像一個魅力:

rfcomm listen /dev/rfcommX 

(我不得不通過sdptool可以添加一個串行端口添加SP第一)

由於個人電腦將坐在那裏等待來自設備的傳入連接,這一切都可以工作。

但是,當我有多個設備時出現問題。 rfcomm listen命令非常出色,但似乎沒有辦法控制哪個設備(由Mac地址標識)連接到哪個rfcomm端口;如果打開多個設備,則無論如何,第一個嘗試連接的設備都將連接。然而,在我們的應用程序中,我們希望用戶知道他們連接到哪個設備。

有沒有人處理過這樣的事情?我們正在考慮編寫bluez藍牙套裝的定製版本,因此我們非常感謝這裏的任何幫助:)

回答

0

write a udev rule每次都會創建一個具有相同名稱的符號鏈接,或者按照通過/sys的適當路徑進入設備。

+0

感謝您的回答。我正在研究udev(並通過/ sys潛水)。我可以看到如何通過挖掘/ sys/devices/virtual/tty/rfcommX/uevent文件找到設備的MAC地址,但我不確定這是否解決了我的問題。基本上,使用這個,我可以檢查哪個設備已連接(這是一個很棒的步驟),但它並不能幫助我控制首先連接哪個設備。我試圖弄清楚的是,如果有一種方法可以做rfcomm監聽,但是可以監聽特定的設備。 – 2011-03-01 09:21:40

相關問題