2016-11-01 224 views
0

我有一個關於藍牙連接的問題。我建立了一個藍牙連接到我的設備(帶有藍牙屏蔽的Arduino Nano),無論出於何種原因,連接可能會失敗。沒關係,這是藍牙,這種情況發生在設備超出範圍時。但是,如果可能,我希望連接重新建立。這是我遇到的問題;連接的代碼不再工作。看起來有效的是重新啓動設備(只需重新啓動應用程序是不夠的)。在重新啓動Pi之後,連接仍然活着並再次踢球。藍牙重新連接

所以似乎有東西卡住,重新啓動後修復,但我想知道如何解決這個問題,而無需重新啓動。任何人?

更新更多背景信息。我正在使用Firmata庫來連接和控制Arduino的。儘管我不太願意改變firmata代碼,但我確實能夠控制雙方。

+0

「**代碼連接不再工作**」錯誤信息是什麼?你嘗試過不成功並再次配對? –

+0

我還沒有嘗試過,因爲這需要在沒有人爲干預的情況下工作。我不確定實際上是否可以與代碼配對/取消配對,但另一方面,如果有必要,這會有點奇怪,對嗎? – Jasper

回答

0

要回答你的問題,我假設你在這裏控制你的任何設備。控制意味着您可以修改代碼,以便設備可以嘗試重新連接。

問題

現在,在你的情況下,當設備超出範圍,連接斷開連接,但是當他們在範圍內沒有任何設備的固有嘗試重新連接到其他設備。除非您編寫的代碼試圖保持重新連接到最後一個連接的設備,否則設備即使在範圍內也不會嘗試連接。當您重新啓動設備時,您的aurdino設備可能會嘗試重新連接到所有/最後連接的設備,因爲發生了重新連接。

解決方案

解決您的問題,您可優選在aurdino側添加一段代碼,以儘量保持有規律的間隔重新連接到上次連接的設備的說5秒。

限制

然而,這更像投票,你並不確切地知道,如果該設備實際上是在範圍內。在藍牙中,在我們掃描設備之前,無法知道設備是否進入範圍。只有在這個解決方案中你必須面對的問題是,即使設備不存在,它也會需要更多的功率,因爲​​它會通過定期的間隔通過藍牙重新連接。

希望這會有所幫助。

Registers

+0

我有控制設備,是的。我正在使用firmata來遠程連接和控制Arduinos。我不認爲這些設備正在重新連接,據我所知,Firmata沒有重試/重新連接邏輯。 – Jasper

+0

Firmata是主機和arduino之間的通信協議,當然在Firmata中沒有重試/重新連接邏輯,你不應該開發這樣的。正如akasonlyaks所說的那樣,編寫在Arduino一側定期運行的重新連接邏輯代碼。 – Jackie

+0

我明白了,但是在Arduino方面,唯一加載的是firmata代碼。藍牙連接非常簡單,只需連接TX/RX和啓動串口就可以了。所以我不確定我應該如何在那裏加入重試邏輯。 – Jasper