Hallo Scheisser,
Zitat:läuft das Programm dann so: Schreibe in Buffer bis TermChar kommt--> lese RS232 aus und gib es in LV aus--> lösche Buffer
Die serielle Schnittstelle bzw. deren (VISA-)Treiber hat einen internen Buffer. In diesem landen die am Port ankommenden Daten. Das VISARead wartet jetzt bis zum Empfang eines TermChar (bzw. bis zum TimeOut) und liest/holt dann die Daten aus dem Buffer…
Zitat:Angenommen es kommt einmal zufällig kein TermChar, weil es einen Paritätsfehler gibt, etc.
Bei einem Paritätsfehler bekommst du eine Fehlermeldung…
Zitat:Stürzt mir dann nicht das VI ab, weil anstatt kleiner 20 byte aufeinmal 25 byte anliegen?
Wieso sollte es "abstürzen"? Meinst du, der LabVIEW-Speichermanager kommt mit einem 25 Zeichen langen String nicht klar?
Zitat:Und es kommen bei mir meistens nur 13 byte an, wartet der dann nicht auf 20 byte?
Nein.
VISARead wartet auf folgende Bedingungen:
- Anzahl der angefragten Bytes steht im Buffer bereit.
- Das konfigurierte TermChar ist im Buffer angekommen.
- TimeOut
- Fehler
So steht es jedenfalls
in der LabVIEW-Hilfe, die du ja sicher auch schon durchgelesen hast!
Was passiert wohl, wenn du auf 20 Zeichen wartest und auf ein TermChar?
Zitat:Ich denke mal 15 byte wäre ein guter Sicherheitsbereich.
Das hängt davon ab, wieviele Bytes in deinen Messages enthalten sind. Entweder es sind immer 13 (+TermChar) oder eben nicht…
Abgesehen davon: wie oben dargelegt, ist es irrelevant, ob du auf 20, 99 oder 9999 Zeichen wartest - solange dein TermChar vorher ankommt…