Hallo Forum,
ich habe eine kleine Android-App geschrieben, die Daten per Bluetooth an den Arduino mit HC-05 sendet. Das funktioniert soweit ganz gut. Die gesendeten Bytes werden mir im Serial-Monitor angezeigt. Wenn ich jedoch die Übertragung durch die App beende
(Aufruf der Methode close() des Socket Objekts), werden 19 weitere Bytes im Serial-Monitor angezeigt. Kann es sein, dass das HC-05 nach abbau der Verbindung noch irgend etwas überträgt? Z.B. Statusinformationen? Mir ist nicht klar, wo diese Bytes herkommen.
Vielen Dank für eure Hilfe im vorraus.
Hallo
und guten Morgen
Zeige deinen formatieren und kommentierten Sketch in code tags <"/">.
Ja, das Modul sendet Dir noch ein
+DISC:SUCCESS
Auch müsstest Du bei jedem Verbindungsaufbau erstmal einen Zeilenumbruch empfangen.
Bzw. sendet es glaube ich sogar ein
+DISC:SUCCESS
OK
Also mit Zeilenumbruch (Carriage return & Linefeed) nach jeder Zeile. Würde dann exakt 19 Zeichen entsprechen.
Hallo TriB,
aus persönlichen Gründen musste mein Projekt eine Zeit lang ruhen, daher antworte ich erst jetzt.
Da habe ich ja richtig vermutet, dass da noch irgend etwas kommt. Bei meiner recherche habe ich keinen Hinweis darauf gefunden. Das die Module im Detail unterschiedlich sind, war da auch nicht hilfreich.
Vielen Dank für die Hilfe und sorry für die späte Antwort.
Kein Problem
Die verschiedenen Module sind gelinde gesagt der absolute Horror!
Habe mir mittlerweile eine relativ passable Test-Funktion gebaut, die 4 verschiedene Module erkennt und dann entsprechen mit oder ohne Zeilenumbruch arbeitet.
Die Baudrate mit AT+BAUD7
oder mit AT+UART=57600,0,0
verändert.
Oder eben auf Ausgaben reagiert, die bei der Verbindung & Trennung gesendet werden.
Gestern 10 neue Module erhalten und die agieren wieder völlig anders!
Jetzt habe ich eine Zeit lang nichts gemacht, prompt geht jetzt gar nichts mehr.
Vermutlich hat sich irgendwo ein kleiner Fehlerteufel eingeschlichen...
Aber in der Ruhe liegt die Kraft.
Ich habe meinen Code überarbeitet und mit Kommentaren versehen.
Vieleicht kann er dem einen oder anderen als Anregung dienen.
/*
Entwicklungssystem: MEGA2560, HC-05 Bluetooth Adapter
Die Verbindung wird vom Android Gerät aufgebaut, Daten werden gesendet (im Beispiel 4 Byte),
anschließend wird die Verbindung vom Android Gerät beendet.
Nach dem Abbau der Verbindung schreibt das HC-05 die Meldung "+DISC:SUCCES OK" in den Puffer.
Die Meldung wird nicht benötigt und muss aus dem Puffer entfernt (ausgelesen) werden.
Variante 1: Aufruf der Funktion serialFlush(), die alles aus dem Puffer ausliest und verwirft
Variante 2: Auslesen der Meldung und schreiben in einen temporären Puffer
Da Variante 2 Speicherplatz benötigt und der Puffer nicht zu klein sein darf, verwende ich Variante 1
*/
// Um den Sketch auf dem NANO zu benutzen
#include <SoftwareSerial.h>
#define EMPFANGS_PIN 10
#define SENDE_PIN 11
SoftwareSerial btSerial(EMPFANGS_PIN, SENDE_PIN); // RX TX
//Array zur Aufnahme der Nutzdaten
byte arrayData[4];
//Puffer Zum Auslesen der Meldung -> Variante 2
byte arrayBuffer[20];
//Funktion zum Auslesen der Meldung im Puffer -> Variante 1
void serialFlush(){
delay(500); //Kurz warten, bis die Meldung im Puffer ankommt
while(Serial1.read() >= 0){ //Alles aus dem Puffer lesen, bis er leer ist
}
}
//Auslesen und anzeigen der Nutzdaten
void showData(){
for(int i=0; i<4; i++){
Serial.print((char)arrayData[i]); //Anzeigen der Nutzdaten als Zeichen
}
Serial.println();
}
void setup()
{
//btSerial.begin(9600); //Zur Verwendung mit dem NANO
Serial.begin(9600);
Serial1.begin(9600); //Zweite Serielle Schnittstelle des MEGA
}
void loop()
{
while (Serial1.available()) {
Serial1.readBytes(arrayData, 4); //Nur die benötigten Bytes lesen und speichern
//Serial1.readBytes(arrayBuffer, 20); //Auslesen der Meldung aus dem Puffer -> Variante 2
serialFlush(); //Auslesen der Meldung aus dem Puffer -> Variante 1
showData();
}
}
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.