LabVIEWForum.de
Beim lesen der visa delay before read - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA)
+---- Thema: Beim lesen der visa delay before read (/Thread-Beim-lesen-der-visa-delay-before-read)



Beim lesen der visa delay before read - manu-s-08 - 12.04.2010 16:07

hey leute,

bei den LabVIEWbeispiel "basci Serial Write and Read.vi" gibt es ein "delay before read". Für was ist das? Warum braucht man das? wenn ich 0 einsetze, dann kommt bei mir des öfteren ein Wert an, der 0 ist, was eigentlich aber nicht sein kann.


Beim lesen der visa delay before read - GerdW - 12.04.2010 16:22

Hallo manu,

ich nehme mal an, du verwendest einen aktuellen PC.
Dieser PC ist üblicherweise so schnell, dass ohne Wartezeit zwischen Write und Read dein Gerät, welches am SerialPort hängt, gar keine Zeit zum Antworten hatte - die serielle Schnittstelle gehört zu den eher langsameren...
D.h. die Property "bytes at serial port" liefert wahrheitsgemäß "0" und die Lesefunktion liest dementsprechend auch 0 Bytes!
Beispiel-Rechnung: übliche 9600baud/1 StoppBit benötigen 9/9600s oder 0.94ms pro Byte(!) - und da muss erst mal der Befehl zum Gerät geschickt werden, dann das Gerät "arbeiten" und dann die Antwort geschickt werden. Da kommen ruckzuck 20ms zusammen!


Beim lesen der visa delay before read - Y-P - 12.04.2010 18:06

Anders ausgedrückt: Wenn Du z.B. beim Bäcker 10 Brötchen kaufst, dann muss Du der Verkäuferin auch Zeit lassen, damit sie die Brötchen aus der Theke holen kann in eine Tüte packt und Dir über den Tresen gibt. Da sagst Du auch nicht "10 Brötchen bitte" und hast sie schon im gleichen Augenblick in der Tasche. Hehe

Gruß Markus


Beim lesen der visa delay before read - Lucki - 13.04.2010 07:59

Der Nachteil dieser Konfiguration ist, daß die Wartezeit aus Sicherheitsgründen deutlich größer gewählt werden muß als rein rechnerisch nötig. Um das zu vemeiden, gibt es diese Möglichkeiten, wobei das "Delay befor read" dann entfällt:
a) Es wird TermChar verwendet. VisaRead wartet und liest erst, wenn Termchar eingetroffen ist.
b) Wenn man weiß, wie viele Bytes als Antwort kommen müssen, dann schließt man einfach diesen Wert als Konstante an VisaRead an. VisaRead wartet dann, bis diese Anzahl von Bytes alle im Buffer sind und liest dann alles aus.


Beim lesen der visa delay before read - manu-s-08 - 13.04.2010 09:01

Danke für die schnellen Antworten

Hab ich verstanden und nehm ich mal so mit.

Nun stell ich mir die frage ob es einen unterschied macht, wenn ich das delay nichtin LabVIEW sondern beim Mikroprozessor reinprogrammier. Das heißt ich sende meine Datenrauf und mache delay, daten, delay, daten, delay, daten, delay ...sollte eigentlich so auch funktionieren?


Beim lesen der visa delay before read - GerdW - 13.04.2010 09:15

Hallo manu,

wie sollte ein Delay beim µP helfen?
Du brauchst den Delay auf PC-Seite, um die Antwort deines Gerätes abzuwarten!

Alternativ kannst du Luckis Vorschläge verwenden. Oder du fragst die "bytes at serial port" in einer Schleife ab, um jedes einzelne Byte zu empfangen und zu speichern. Wobei du dann auch wieder eine Wartefunktion in die Schleife packen solltest...