Forums Neueste Beiträge
 

Daten von mehreren RS232 Ports gleichzeitig verarbeiten

08/10/2009 - 08:48 von Alex | Report spam
Hallo,

benutze in unserer Software das SerialPort Objekt und verarbeite die Daten
Ereignisgesteuert (DataReceived - Event). Mein Problem ist nun, dass mehrere
Ports zur selben Zeit Daten senden und empfangen, dadurch weiß ich nicht wie
ich die Datenverarbeitung am besten lösen kann um sicher zu gehen dass auch
alle Daten zum jeweiligen Port richtig ausgewertet werden.
Hierbei handelt es sich um eine Software die Firmwareupdates auf eigens von
uns entwickelten Geràten durchführt, dabei werden bei àlteren Geràten
Textbasierte Daten empfangen und auf neueren Geràten Byte Daten!

Momentan erzeuge ich für jeden Seriellen Port einen neuen Thread und starte
das Firmwareupdate, allerdings habe ich probleme die Daten richtig
auszuwerten, da ich nicht genau weiß wann alle Daten empfangen wurden und
wann ich die empfangenen Daten wieder zurückgebe kann um sie auszuwerten und
es möglich ist dass ein anderer Port das DataReceived Event schon wieder
aufruft ??

Hat jemand Erfahrungen oder Ideen wie man mit mehrfachen RS232
Schnittstellen zur selben zeit sicher kommuniziert??

Gruß Alex
 

Lesen sie die antworten

#1 Peter Götz
08/10/2009 - 13:50 | Warnen spam
Hallo Alex,

benutze in unserer Software das SerialPort Objekt und
verarbeite die Daten Ereignisgesteuert (DataReceived -
Event). Mein Problem ist nun, dass mehrere Ports zur
selben Zeit Daten senden und empfangen, dadurch weiß
ich nicht wie ich die Datenverarbeitung am besten lösen
kann um sicher zu gehen dass auch alle Daten zum
jeweiligen Port richtig ausgewertet werden.
Hierbei handelt es sich um eine Software die
Firmwareupdates auf eigens von uns entwickelten Geràten
durchführt, dabei werden bei àlteren Geràten Textbasierte
Daten empfangen und auf neueren Geràten Byte Daten!

Momentan erzeuge ich für jeden Seriellen Port einen neuen Thread



Das SerialPort-Objekt arbeitet ohnehin mit einem separaten
Thread. Wozu nochmal ein weiterer Thread?


und starte das Firmwareupdate, allerdings habe ich probleme
die Daten richtig auszuwerten, da ich nicht genau weiß wann
alle Daten empfangen wurden



Um diese Frage zu beantworten, müsste man wissen, ob
und mit welcher Art von Übertragungsprotokoll Du arbeitest.
Dieses Übertragungsprotokoll muss Dir ein Kriterium liefern,
welches Dir signalisiert, dass alle Daten angekommen sind
oder falls mit festen Blocklàngen gearbeitet wird, kannst Du
ja jeweils prüfen, wieviele Bytes schon angekommen sind.

und wann ich die empfangenen Daten wieder zurückgebe
kann um sie auszuwerten und es möglich ist dass ein
anderer Port das DataReceived Event schon wieder
aufruft ??

Hat jemand Erfahrungen oder Ideen wie man mit mehrfachen
RS232 Schnittstellen zur selben zeit sicher kommuniziert??



Dazu kannst Du in den jeweiligen DataReceived-Prozeduren
Deiner SerialPorts über einen Delegaten via Invoke eine
für alle gemeinsame Auswerteprozedur aufrufen und dort
der Reihe nach die ankommenden Ereignisse abarbeiten.
Die prinzipielle Vorgehensweise hierzu (Prozeduraufruf via
Delegate/Invoke) siehst Du im Beispiel unter

www.gssg.de -> Visual Basic -> VB.net
-> Sonstige -> Serial Prot (RS232) Chat.

Ansonsten kann man zu Deinem Problem nicht viel sagen,
solange nicht bekannt ist, wie, sprich mit welchem
Übertragungsprotokoll, die Kommunikation über Deine
SerialPorts ablàuft.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen