簡體   English   中英

通過藍牙與Arduino進行Android通信

[英]Android communication via Bluetooth with Arduino

當我嘗試在藍牙之后立即從Android向Arduino發送命令字符串時

建立連接,Arduino不發送響應字符串[我想也許

Arduino一無所有]。

但是如果我在寫方法之前放一個Thread.sleep(1000)方法,它就可以工作...

問題是什么?

我是否要在尚未設置藍牙連接設置之前發送消息

准備?

但是如果我在寫方法之前放一個Thread.sleep(1000)方法

嘗試在Thread.sleep之后進行多次寫入,以檢查問題是否僅在建立連接的正確時間或每次寫入時才發生!

無論如何,以我的經驗,我會警告您一些事情:

  • 波特率太高,請嘗試降低它。
  • 請注意一些便宜的Arduino藍牙模塊,它們沒有實現任何類型的I / O緩沖。
  • 在Arduino上從您的應用程序讀取數據的部分正在做某種需要花費時間的事情(例如I / O操作),或者僅僅是做太多事情,所以串行上的一些數據會丟失(一旦發生在我身上) )。
  • 請注意,如果您使用的是低功耗藍牙,則限制為20個字節! 如果您發送更多數據,它將丟失。

您的代碼片段會很有用!

可以這樣想:乒乓球發生得太快,以至於球迷路了。

如果在讀之前寫,在寫之前讀,則會發生錯誤並且字符串會丟失。

所以是的,一種解決方法是在兩者之間加一些時間,例如Thread.sleep

詳細:

發生這種情況是因為您的arduino仍在sending因為它沒有識別出您的android實際收到了。 thread.sleep (1000) ,您的arduino識別出android接收並更改為receive模式。 這就是為什么一秒鍾后可以從您的arduino讀取字符串的原因。

如果需要,您可以循環發送,以便arduino能夠盡快收到。 但是,某些情況可能會從循環中得出,例如接收冗余字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM