INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Verwendung von mehreren RS232 Schnittstellen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

12.02.2013, 09:23 (Dieser Beitrag wurde zuletzt bearbeitet: 12.02.2013 09:25 von rolfk.)
Beitrag #8

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Verwendung von mehreren RS232 Schnittstellen
(05.02.2013 13:16 )PMG schrieb:  Die Verzögerung von 1sec hab ich rausgenommen, die Funktion "Bytes at Port" benötige ich aber und hab sie deshalb drinnengelassen.
Ich hab auch nur eine Schleife verwendet, die ich nun mit einer einer Verzögerung von 1sec immer wieder durchlaufen lasse.

Bytes at Port ist in 99.9999% der Fälle garantiert nicht ideal und meist sogar total falsch!

Entweder ist die Message "TermChar" terminated und dann nimmt man einfach ein Read dem man den Auftrag gibt um mehr Characters zu lesen dann die Message je sein kann, und ein Timeout und dann lässt man das VISA Read warten bis die Message reinkommt, oder das Protokoll ist binair und hat eine bekannte Länge (selbst wenn die Daten variabel sind, hat es sicher einen fixed size Header in dem die Länge der darauf folgenden Daten steht)! Auch hier verwendet man ein VISA Read dem man den Auftrag gibt die entsprechende Anzahl Bytes zu lesen (möglicherweise zwei oder mehr VISA Reads um erst den Header und dann die Variablen Daten zu lesen). Zu keinem Zeitpunkt braucht man vorab zu wissen wieviele Daten im VISA Buffer anwesend sind.

Verwendung von Bytes at Serial Port führt über kurz oder lang zu einem absolut unwartbaren Instrumenttreiber da man immer mehr Code hinzufügen muss um zu verhindern dass man jeweils abgebrochene Messages bekommt, als auch dass man nicht Stücke von vorherigen Messages verliert.

Denn man kann nie bestimmen wann in der Message die Funktion Bytes at Port aufgerufen wird und dann liest man beinahe zwangsläufig Bruchstücke der Message. Diese muss man dann selber noch mal analysieren ob sie eine ganze Message beinhalten, und eventuel inkomplete Messages in einem eigenen Buffer abspeichern und bei der nächsten gelesenen Bruchstückmessage hinzufügen usw. Wenn man schlussendlich einen Treiber hat der keine abgebrochenen Messages zurückgibt und auch keine Bruchstücke von Messages einfach wegwirft ist man unzählige Stunden und ausgeraufte Haare weiter, und hat ein VI Monster das man nicht mal mit der Feuerzange mehr anfassen will, aus Angst dass jede kleinste Veränderung irgendwo wieder einen Fehler introduziert. Wenn man dagegen ganz ohne Bytes at Serial Port arbeitet hat man diese Probleme alle nicht, der Code ist klar und deutlich und man hat auch noch Stunden und Tage an Zeit gespart, nicht zu sprechen von Nerven und Haaren.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Nachrichten in diesem Thema
RE: Verwendung von mehreren RS232 Schnittstellen - rolfk - 12.02.2013 09:23

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Schnittstellen werden im Frontpanel nicht angezeigt. Mido 5 4.672 14.05.2019 15:46
Letzter Beitrag: jg
  Alle seriellen Schnittstellen auslesen Exl 1 5.067 01.04.2017 16:41
Letzter Beitrag: GerdW
  Richtige Verwendung von ThermChar / Fehlerhafte erste Daten Aspen 5 5.609 24.04.2015 10:21
Letzter Beitrag: Aspen
  Problem bei seriellen Schnittstellen gammel 7 7.368 27.10.2014 13:01
Letzter Beitrag: gammel
  COM Schnittstellen "verrutschen" von selber gottfried 3 5.243 25.07.2012 09:24
Letzter Beitrag: gottfried
  Verwendung eines USB/Seriell-Umsetzers Herby07 9 7.314 28.09.2011 20:54
Letzter Beitrag: Herby07

Gehe zu: