Hallo Vlansch,
Zitat:Wie geht das?
Ich würde vom BytesAtPort abraten.
Du hast ein Gerät, welches Befehle mit einem LF/CR am Ende erwartet und die Antworten ebenso mit LF/CR terminiert.
Dann stellt man das passende TermChar beim Initialisieren der seriellen Schnittstelle ein und sagt dem VISARead, dass es einfach 9999 Bytes lesen soll (lies: mehr Zeichen abfragen, als die Antwort umfassen wird). Dann bekommt man die Antwort, sobald das TermChar gelesen wurde!
Wenn man dann immer noch ein TimeOut erhält, dann
- gab es einen Kommunikationsfehler, den man auch entsprechend behandeln sollte (wobei das Gerät üblicherweise innerhalb von 2s antworten sollte…)
- wurde das Timeout zu klein angesetzt, was bei größeren Anworten (wie z.B. einen kompletten Buffer auslesen) schon mal passieren kann: dann muss man für solche "großen" Anfragen das TimeOut entsprechend anpassen und hochsetzen