2016-08-03 13 views
0

Im Voraus möchte ich mich für mein schlechtes Englisch entschuldigen.Wie man verhindern kann, dass Bluetooth verkettete Daten sendet

Ich arbeite an einem Projekt, das Handy-Bluetooth verwendet, um zwei Bytes von Daten zu einer MCU jedes Mal durch HC-05-Bluetooth-Modul zu senden. Da die MCU keinen Puffer zum Speichern der empfangenen Daten hat, muss ich ein Byte zweimal mit einem Intervall von mindestens 10 ms senden.

Ich benutze ein Oszilloskop, um das HC-05-Modul zu überwachen. In den meisten Fällen sendet mein Telefon zwei Pakete mit jeweils einem Datenbyte, aber manchmal sendet es zwei Pakete zusammen und daher kann die MCU das nicht verarbeiten.

unten ist, wie ich die Sendemethode definieren

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(); 
     } 
    } 

Kann mir jemand sagen, warum das verursacht passieren? Ist es, weil "schlafen (20)" hat nicht funktioniert oder etwas anderes?

+0

Willkommen bei StackOverflow. Bitte posten Sie keine Screenshots Ihres Codes. Kopieren Sie den tatsächlichen Code in Ihre Fragen. –

+0

Danke für den Rat. –

Antwort

0

Ich nehme an, die Flush bedeutet nur die Daten aus dem Ausgangsstrom auf Bluetooth-Stack schreiben bedeutet nicht, die Daten auf Remote-Gerät schreiben? Entschuldigung, ich habe den Code noch nicht überprüft. Allerdings kann Ihr Remote-Gerät zu Synchronisationszwecken die empfangenen Daten zurücksenden, bevor Ihre App das zweite Byte an Remote senden kann?

Verwandte Themen