Servus liebe Arduino Gemeinde
Ich versuche über das Bluetooth des Arduino 101 einen Text/String zu empfangen!!
Hat jemand eine Idee oder einen Codeschnipsel mit dem ich längere Buchstabenreihen empfangen kann.
Also ich z.B "Baum" empfangen und etwas damit auswerten.
Danke schon jetzt für eure Hilfe!!!!
Mfg ben
Hast Du denn Deine Verbindung schon so weit, dass Du einzelne Zeichen empfangen und auf Serial ausgeben kannst?
Du weist das dieses Board eingestellt wurde und sich wahrscheinlich nur noch wenige damit beschäftigen werden?
Gruß Tommy
Einzelne Zeichen und Zahlen sind gar kein Problem.
Gruß Ben
Gut. Dann ist das Hauptproblem zu erkennen, wann Deine Zeichenkette zu Ende ist.
Entweder du sendest ein (Linefeed \n) am Ende oder Du sendest eine Zeichenkette fester Länge.
Am Ende musst Du die Zeichenkette mit '\0' terminieren.
Für Serial (und was anderes ist Dein BT ja auch nicht - Du musst nur Serial mit Deiner Variablen ersetzen) könnte es mit so aussehen (Es gibt noch mehr Varianten):
const byte IN_LEN = 20; // Puffergroesse Eingabe
boolean fertig = false; // Eingabe beendet
char inStr[IN_LEN]; // Lesepuffer
...
void loop() {
if (Serial.available() > 0) {
if (fertig = einlesen()) {
// mache etwas mit der Zeichenkette in inStr
}
}
}
// true = fertig (LF oder zu lang), false = noch nicht fertig
boolean einlesen() {
static byte i = 0; // Positionsindex in inStr
// wenn es schon eine vollstaendige Eingabe gab -> zuruecksetzen
if (fertig) {
fertig = false; // neuer Anfang
inStr[0] = '\0'; // Puffer initialisieren
i = 0; // Positiojnsindex auf Anfang
}
char inputChar = Serial.read();
// Wenn nicht Zeilenende und nicht Puffer voll
if (inputChar != '\n' && i < IN_LEN -1) {
// Zeichen in inStr schreiben
inStr[i] = inputChar;
inStr[++i] = '\0'; // Abschluss dahinter schreiben, um evtl. Debugausgaben richtig anzuzeigen
return false;
}
// Wenn noch Zeichen in Serial, diese vernichten
// z.B. Wenn Eingabe zu lang war
while (Serial.available() > 0) {
inputChar = Serial.read();
}
return true;
}
Gruß Tommy