Im Prinzip gefallen mir am Besten reine „ASCII“ Text-Protokolle, da sie viel einfacher zu debuggen sind als Binär-Protokolle. Allerdings ist der Aufwand zum Kodieren-Dekodieren größer, so man den Vorteil „einfaches Debuggen“ abwägen muss gegenüber dem „einfachen Erstellen/Auslesen“ der Daten. Auch ist der Code durch Funktionen, mit denen der String erstellt und ein String dekodiert wird, größer. Trotzdem wurde (zumindest zunächst) ein ASCII Protokoll definiert.
Wer überträgt? Es gibt nur:
- Kommunikation von einem Funkregler zur Basisstation (Adr = 0, zum Coordinator)
- Kommunikation per Broadcast von der Basisstation zu allen XBees (hier werden der Gleisspannungszustand und einzelne, von einem Funkregler angefragte, SX Kanal Daten übertragen)
Was wird vom Funkregler XBee zur Basisstation übertragen? Diese Arten von Messages sind definiert:
- S44 65 (Beispiel, = setze SX Channel 44 auf den Wert 65 – zur Loksteuerung)
- B370 (=Batteriespannung ist 3,70V)
- S127 1 (= setze „pseudo“ SX Channel 127 auf 1, d.h. „Gleisspannung an“)
- R51 (Beispiel, = read 51, lese SX Kanal 51 aus)
Von der Basisstation zu den XBees (immer Broadcast):
- F44 67 (Feedback, auf SX Kanal 44 ist der Wert derzeit „67“)
- F127 0 (Gleisspannung ist derzeit „aus“ – ‚1‘ bedeutet entspr. „an“)
(Rev. 1.1. – 12 Okt 2015)