Hallo
Wie kann ich bei einer seriell Verbindung zwischen 2 Arduinos eine Art Fehler Behandlung oder Testung der daten umsetzten ?
Zur Zeit übertrage ich meine daten so:
Nur ein zwanziger ausschnitt Verwendet werden A-Y und a-y ( zahlen haben zu großen Fehleranteil beim auslesen.
Sender: Mega2560
Sender++;
(mache was -- 1 bis 2 Sek. später)
if (Sender ==0) {
Serial3.println("A");
delay(10);
Serial3.println(Wert1);( werte liegen zw 2900-3600 o. Komma / Wird als String gesendet)
}
if (Sender == 1) {
Serial3.println("B");
delay(10);
Serial3.println(Wert2);
}
und so weiter dann gibt es aber noch eine Übertragung OHNE werte.
Zb so hier:
if (Sender == 2) {
Serial3.println("C"); // Mache licht xyz an..
}
Werte werden alle 1-2 Sekunden gesendet.
Empfänger Due
if (Serial3.available())
{
S3 = Serial3.read();
Serial.print(S3);
if (S3 == 'A")
{
{
Wert1 = Serial3.readString();
Wert1F = Wert1.toFloat();
if ((Wert1F < 3700) && (Wert1F > 2500))
{
if (Wert1F > Wert1maxi)
{
Wert1maxi = Wert1F;
}
if (Wert1F < Wert1mini)
{
Wert1mini = Wert1F;
}
}
S3 = Z;
}
if (S3 == 'B') //
{
{
Wert2 = Serial3.readString();
Wert2F = Wert2.toFloat();
if ((Wert2F < 3700) && (Wert2F > 2500))
{
if (Wert2F > Wert2maxi)
{
Wert2maxi = Wert2F;
}
if (Wert2F < Wert2mini)
{
Wert2mini = Wert2F;
}
}
S3 = Z;
}
if (S3 == 'C') //
{
Mache licht xyz an.
S3 = Z;
}
und so weiter halt.
Das geht so weit auch ganz gut.
Aber es Passieren immer wieder mal übertragungsfehler.
Die kommen ganz spontan wo dann Falsche "Daten" ankommen und Anstelle eines A zb C ausgelöst wird. wo dann zb Kein wert gespeichert wird sondern ein Licht an geht.
mit if ((Zelle1F < 3700) && (Zelle1F > 2000)) stelle ich zumindest schon mal sicher das der wert 4 zahlen hat ehe eine weiter Verarbeitung kommt.
Aber das gelbe vom ei ist es noch nicht.
Da die Zuordnung von S3 scheinbar nicht immer sauber läuft.
Jemand eine Idee wie man das EINFACH/Verbessert umsetzten könnte ?
Vielen lieben dank: