Ich habe Arduino mit einem HC-06 Bluetooth-Modul verbunden.
Ich möchte keine Daten von einer Android-Anwendung senden, die ich an das Arduino geschrieben habe, und Arduino abhängig von den empfangenen Daten Dinge tun lassen. Bisher sende ich Integer-Werte zwischen 0 und 1024.
Leider wird mySerial.read () hier nicht zu Ende gehen. Es liest die Daten als eine große Zeichenfolge.
Meine Module RX und TX Pin sind mit meinem Arduinos RX- und TX Pin verbunden. (Die Konsole zeigte keine Daten an, als ich sie an Port 10 und 11 angeschlossen habe. Daher dachte ich, dass SoftwareSerial den RX- und TX-Port von Arduino so definiert ...)
Meine Skizze:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
char character;
void setup()
{
// set the data rate for the SoftwareSerial port
mySerial.begin(9600);
}
void loop() // run over and over
{
String Data = "";
while(mySerial.available()) {
character = mySerial.read();
Data.concat(character);
// Serial.println(Data);
Serial.println("foo");
}
Dies wird Folgendes ausgeben:
154888143201270341421501588671750825906975101110241005969922864792711629540451369290213140600
Ich kann diese Daten nicht richtig lesen und die Daten nicht auf eine Funktion analysieren, um sie zu verarbeiten, da mySerial.read () nicht beendet wird. Es muss einen besseren Weg geben, diese Daten zu empfangen oder zu senden.
Meine Bluetooth-Ausgangsstromquelle:
public void sendPWM(int progress) {
OutputStream tmpOut = null;
try {
tmpOut = mmSocket.getOutputStream();
} catch (IOException e) {
// TODO Auto-generated catch block
Log.e("error", "NO OUTPUT STREAM", e);
e.printStackTrace();
return;
}
try {
// byte[] buffer = stringToBytesUTFCustom("1");
byte[] buffer = String.valueOf(progress).getBytes();
tmpOut.write(buffer);
// tmpOut.flush(); /*I have turned this ON and OFF, to see if it
// makes any difference*/
} catch (IOException e) {
// TODO Auto-generated catch block
Log.e("error", "EXCEPTION DURING WRITE", e);
e.printStackTrace();
}
}
Ich schließe den outputStream nicht, da dadurch auch die Verbindung zum HC-06 abgebrochen wird und ich viele Daten senden muss. Ich kann nicht zulassen, dass der Benutzer jedes Mal, wenn er Daten sendet, erneut eine Verbindung zum Modul herstellt. Kannst du mir hier raushelfen?
+"\r\n"
zu meiner Zeichenfolge hinzugefügt . Dies wird nur eine Pause hinzufügen und nicht aufhörenmySerial.read();
Antworten:
quelle
\n
...Ich weiß, dass es ein bisschen alt ist, aber ich habe es zum Laufen gebracht.
quelle