SoftwareSerial - Datenverlust?

Guten Abend liebe Community :slight_smile:

ich habe eine Frage zur SoftwareSerial-Libary und zwar habe ich gesehen, dass es möglich ist problemlos mehrere UART-Verbindungen zu realisieren (Soft). Es wird immer nur auf die letzte gehorcht ( bzw. durch .listen())

Was passiert wenn z.B. auf Serial2 gehorcht wird und Serial1 gerade Daten sendet gehen diese verloren?
Daher muss synchronisiert werden, dass nur einer sprechen darf?

Bsp:
void loop()
{
Serial1.listen();
while (Serial1.available() > 0) {
Serial1.read();
}

Serial2.listen();
while (Serial2.available() > 0) {
Serial2.read(); // und hier hat plötzlich Serial1 auch Lust auch zu qautschen…
}
}

Viele GrĂĽĂźe

Das wird so ĂĽberhaupt nicht funktionieren.

Du kannst nicht einfach dauerend hin und her schalten, loop ist viel schneller als jede serielle Kommunikation.

Direkt nach einem Umschalten sind wieviele Bytes vorhanden? Richtig, keine. Super, nichts empfangen, umschalten, dann besorgen wir es dem anden Kanal auf gleiche Weise. Wiederholt ad nauseam.

Interessant, dass dann genau ein solches Beispiel hier angegeben wurde.

https://www.arduino.cc/en/Tutorial/TwoPortReceive

Und?

Funktioniert es bei dir?

ArduFino: Es wird immer nur auf die letzte gehorcht

Das hast du gut beobachtet ;)

SoftwareSerial hat Grenzen...