LabVIEWForum.de
Visa Read: dynamische Längenangabe von Bytes möglich? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Visa Read: dynamische Längenangabe von Bytes möglich? (/Thread-Visa-Read-dynamische-Laengenangabe-von-Bytes-moeglich)



Visa Read: dynamische Längenangabe von Bytes möglich? - Lydia - 02.08.2010 23:24

Hallo und guten Morgen an alle,


eine Frage zur seriellen Kommunikation in LabView mit Hilfe von VISA Vi's:

Wenn über das Vi gelesen werden soll, muss im Normalfall einen fixe Anzahl von Bytes angegeben werden, die gelesen werden sollen (oder?).
Was aber, wenn die Anzahl der Bytes, die gelesen werden sollen, im Voraus nicht bekannt ist? Kann man dem Read-Vi auch eine soazusagen "dynamische" Längenangabe übergeben werden ?
Ich verwenden LabView 2009, SP 1!


Für jeden Ratschlag bin ich wie immer sehr dankbar!!

Einen schönen Tag an alle!!


Visa Read: dynamische Längenangabe von Bytes möglich? - Y-P - 03.08.2010 06:36

Doch, das geht so wie im Bsp. aus dem LabVIEW-Examplefinder (mit "Bytes at port"):
[attachment=28426]
Lv09_img2

Gruß Markus


Visa Read: dynamische Längenangabe von Bytes möglich? - Lucki - 03.08.2010 09:06

Die eine Möglichkeit wird in dem Beispiel von Markus praktiziert: Es wird nach der Sendeanforderung eine Pause eingelegt, die so lang ist, daß nach menschlichem Ermessen alle Bytes im Buffer eingetroffen sind. Danach wird festgestellt, wieviele Bytes das sind, und genau diese Anzahl wird gelesen.
Das ist aber nicht die übliche und eleganteste Methode.
Bei Visa-Daten werden in der Regel ASCII-Zeichen verwendet. Also z.B. ein Byte mit dem Wert 255 wird nicht als ein Byte übertragen, sondern entweder Hexadezimal als 2 Bytes mit den ASCII Zeichen "FF", oder manchmal sogar Dezimal als 3 ASCII-Zeichen "255".
Der Nachteil - doppelte oder dreifache Datenlänge - ist offensichtlich. Der Vorteil ist aber, daß man die nicht darstellbaren ASCII-Zeichen 0..31 als Steuerzeichen für den Datenfluß zu Verfügung hat. Und das wichtigste ist das Zeichen für das Ende einer Übertragung. Das ist meist identisch mit dem Zeilenendezeichen 0xA = n.
Voraussetzung daß das funktioniert ist natürlich, daß die Gegenstelle hier mitspielt und das Zeilenendezeichen liefert. Aber in der Regel sollte das der Fall sein. (Wenn nicht - siehe Markus)
Das Beispiel vereinfacht sich dann sehr. Wichtigste Änderung ist: Enable TermChar auf true stellen.
[attachment=28430]


Visa Read: dynamische Längenangabe von Bytes möglich? - Lydia - 03.08.2010 09:33

Vielen Dank Euch beiden für die rasche Antwort. Das hat mir sehr weitergeholfen!!

Euch einen schönen Tag und viel Erfolg!

Liebe Grüße, Lydia