ich habe etwas ähnliches in Verwendung, das vlt als Basis dienen könnte:
wechselweise Nachrichten, feste Länge, Senden/Empfangen+Zurücksenden immer im Handshake, samt CRC, samt Timeout mit Neusenden falls keine Antwort, samt Neu-Sync und Neu-Einlesen bei Verbindungsunterbrechung im Sendestream.
Das muss ntl auf deine Bedürfnisse angepasst und erweitert werden.
Gleichzeitiges Senden wird durch den Handshake unterbunden, der aber noch ein Timeout zulässt, trotzdem könnte man noch zusätzlich ein Token einführen, welches nach einer gewissen Zeit verfällt bzw. automatisch an den Master zurückgeht (wie im Token Ring).
Funktioniert bei mir zwischen Arduino Due (wegen Multithreading) und Raspi als PC oder alternativ einem 2. Arduino.
Interesse?
ps,
das Neusenden kann einfach über das ack-Byte veranlasst werden (wenn ack=0, dann sofortiges Neusenden, ansonsten bei Bedarf eine neue Nachricht) - das hatte ich ursprünglich auch bei mir mit drin, aber wieder gelöscht, weil es für meine speziellen Zwecke (u.a. Geschwindigkeit im Muxer- plus Remote-Betrieb) überflüssig war.
Lesezeichen