2016-08-03 35 views
0

提前,我想對我可憐的英語說抱歉。如何防止藍牙發送拼接數據

我正在使用手機的藍牙通過HC-05藍牙模塊每次向MCU發送兩個字節的數據。由於MCU沒有緩衝區來存儲接收到的數據,我必須以至少10ms的間隔發送一個字節兩次。

我使用示波器來監測HC-05模塊。在大多數情況下,我的電話每發送一個字節數據的兩個數據包,但有時會發送兩個數據包在一起,因此MCU無法處理它。

下面

是如何定義的發送方法

public void sendData(){ 

     Byte byte_send = (byte) Integer.parseInt(tmp_addr); 
     byte[] tmp = new byte[]{byte_send}; 
     Byte byte_2 = (byte) Integer.parseInt(tmp_data); 
     byte[] temp = new byte[]{byte_2}; 
     try { 

      mOutStream.write(tmp); 
      mOutStream.flush(); 

      this.sleep(20); 

      mOutStream.write(temp); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 

誰能告訴我,爲什麼會導致這樣的事情發生?這是因爲「睡眠(20);」沒有工作或別的什麼?

+0

歡迎來到StackOverflow。請不要張貼您的代碼的截圖。將實際代碼複製/粘貼到您的問題中。 –

+0

感謝您的建議。 –

回答

0

我假設刷新只意味着將數據從輸出流寫入藍牙堆棧並不意味着將數據寫入遠程設備?對不起,我沒有檢查代碼。 但是,爲了達到同步的目的,您的遠程設備是否可以回顯接收到的數據,然後您的應用可以將第二個字節發送到遠程?