LabVIEWForum.de - Mehrere Antworten über RS232 empfangen

LabVIEWForum.de

Normale Version: Mehrere Antworten über RS232 empfangen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich habe ein "Problem", bzw. etwas, das zwar soweit funktioniert, mir aber nicht sehr gefällt.
Ich muss firmeninterne Baugruppen über RS232 mit einem eigenen Protokoll ansteuern.
Dies funktioniert auch soweit.
Ich schicke einen Befehl und erhalte eine vollständige Antwort, die in HEX-Darstellung meines Strings mit 00 (ohne Daten), bzw. 01 (mit Daten) beginnt.
Nun gibt es aber auch Antworten, die mit 02 beginnen.
Das bedeutet dann, dass die Baugruppe meldet, dass sie den Befehl verstanden hat, aber eine Bestätigung erst später (max. 3 Sekunden) kommt.
In meinem VI mache ich es so, dass ich einfach überprüfe, ob die zweite Ziffer eine 2 ist. Wenn ja, dann soll 3 Sekunden gewartet werden, um die 2. Antwort zu empfangen. Wenn nein, dann darf sofort abgebrochen werden, weil die (in dem Fall ja einzelne) Antwort dann schon da ist.
Wie kann ich das geschickter machen, um nicht von den 3 Sekunden abhängig zu sein, bzw. um das ganze dynamischer zu gestalten. Also, dass z.B. die Antwort schon nach 1,5 Sekunden angezeigt wird, wenn die Baugruppe fertig ist und nicht 1,5 s noch im "Leerlauf" wartet.
Das (vereinfachte) VI habe ich angehängt.

Gruß Markus
Vielleicht durch den Check von Bytes at Port ?
Das dachte ich mir auch schon, dass das doch klappen müsste, einfach abzufragen, ob der zweite Wert 0 ist und dann die "Read-Schleife" abbrechen. Das tut es aber nicht, sondern es bricht sofort ab.

Gruß Markus

' schrieb:Vielleicht durch den Check von Bytes at Port ?
Komisch, dass es nicht klappt. Waere so schoen einfach gewesen.
Was fuer ein Wert an Bytes at Port bricht deine Schleife ab ? Und wie hoch waere der Wert, wenn du eine regulaere Antwort (d.h. nach 3 s) bekommen wuerdest ?
Dann musst du dein Wait durch Timeout ersetzen. Schaue in meinem einfachen RS232-Terminal. Da benutze ich den VISA Event "serial character" mit einem Timeout. D.h. sobald ein oder mehrere Zeichen kommen, wird gelesen, ansonsten wird SOLANGE gewartet bis ein Zeichen kommt innerhalb des Timeouts.

eg
Danke Euch beiden. Ich kann das leider erst morgen probieren...... Ich melde mich dann, wenn ich es hin bekommen habe.

Gruß Markus
Referenz-URLs