Hallo Zsadan,

das mit dem Terminalprogramm wird schwierig werden. Aber da ihr sowieso automatisieren wollt, was hälst du von folgender Idee :

Der Ladezustand der Batterien ändert sich nur relativ langsam. Da ist es ausreichend, die Messwerte nur "gelegentlich", d.h. alle paar Sekunden (oder sogar nur alle paar 10 Sec oder gar Minuten) zu übertragen. Wenn dann noch die Intervalle zwischen den Übertragungen auf allen Robots unterschiedlich eingestellt sind (#1 nach 3,5 Sec, #2 nach 4,7 Sec, #3 nach 5,3 etc) sollte es auch nur relativ selten zu Übertragungskollisionen, d.h. zu gleichzeitiger Übertragung, kommen.

Auf der Empfängerseite schreibt ihr ein kleines Programm, dass auf die angeschlossenen COM-Ports lauscht, also sie z.B. der Reihe nach abfragt und die empfangenen Zeichen einfach in eine Textbox schiebt.

Das sollte soweit erst einmal funktionieren.

Man kann auch mit einfachen Mitteln Vorkehrungen für z.B. folgende Situationen treffen, die die Daten eigentlich unbrauchbar machen:
Ein ASURO verläßt während des Sendens den Empfangbereich des einen Emfängers und kommt in den eines zweiten.
Zwei ASURO senden gleichzeitig.
Ein ASURO ist im überlappenden Emfangsbereich mehrerer Empfänger.
usw.

Eine Möglichkeit wäre, die Daten in einem gesicherten Block zu senden und im Empfangsprogramm nur korrekte Datenblöcke zu verarbeiten. Unvollständige oder doppelte Datenblöcke werden einfach ignoriert. Die korrekten Daten kann man dann wieder anzeigen oder anderweitig auswerten. Ein Block könnte so aussehen:

'A' = Anfang des Blocks, das Empfangsprogramm (für jeden Kanal separat) wartet immer auf dieses Zeichen, bevor es weiterarbeitet .
x = Nr. des ASURO, also 1..4, hieran kann man erkennen, von welchem ASURO die Daten stammen.
y = lfd. Blocknummer, 0..9 dann wieder von vorn. Hieran kann man erkennen, ob man Daten doppelt hat.
zzzzz = Messwert
p = Prüfsumme über alle Ziffern des Datenblocks, hieran kann man erkennen, ob alle Zeichen korrekt übertragen wurden.

Daran denken: Immer auf 'A' testen. Wenn ein 'A' kommt, bevor ein Block abgeschlossen ist, konnte aus irgendwelchen Gründen der vorhergehende nicht bis zum Ende empfangen werden und muss verworfen werden.

Wenn man sich dann noch z.B. die Uhrzeit merkt, zu der die Daten empfangen wurden und mit auswertet (also z.B. anzeigt), hat man einen super Überblick.

Zum Senden der Ladestationsnummer: Hier könnt ihr einfach die Transceiver der Reihe nach (nie gleichzeitig!) die gleichen Daten senden lassen. Am besten sogar mehrfach, damit die Daten auch bei Störungen sicher übertragen werden. Eine solche Störung könnte z.B. sein, wenn während der Sendung einer der ASURO seinerseits damit beginnt seine Messwerte zu senden. Auch hier: am besten eine gesicherten Datenblock senden.

Wenn ihr euer Programm auf zufällig unter einem Windows-PC und in VB schreibt, wäre hier noch ein Tipp zur Programmierung der RS232C Schnittstelle: http://www.the-starbearer.de/Praxis/...isSerielle.htm


Gruß Red Baron