LabVIEWForum.de - Visa liest nicht alle Daten vom Puffer

LabVIEWForum.de

Normale Version: Visa liest nicht alle Daten vom Puffer
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Ich benütze Visa um mit einem anderen Gerät zu kommunizieren. Es funktioniert soweit gut. Nur habe ich das Problem, dass "Visa: lesen" bei einer Byte-Folge zwar 9 Bytes im Puffer erkennt, jedoch dann nur sieben liest. Ich habe klar angegeben, dass er neun Bytes lesen soll. Die Bytefolge lautet: 0xFF, 0x00, 0xA6, 0x13, 0x05, 0x08, 0x0A, 0x01, 0x00 und dabei schneidet er mir 0x01 und 0x00 am Schluss einfach ab. Hat das etwas mit dem Paritätsbit zu tun? Oder was für eine Einstellung habe ich falsch getätigt oder eben besser gesagt gar nicht getätigt?
Spontan fällt mir dazu nur eines ein:

Wenn Du die Zeichen als String ausgibst (nicht HEX) siehst Du die Zeichen evtl. nicht.+

Steigt denn Dein READ VI mit einem Fehler aus? Wenn er neun Zeichen lesen soll, aber nur sieben bekommt müsste er mit Timeout aussteigen.

Wenn nicht: Hast Du evtl. beim Konfigurations VI (Baudrate, Parität etc.) die Erkennung eines Abschlusszeichens aktiviert? Wenn ja hört das Lesen dann bei eben diesem Abschlußzeichen auf und Du siehst anschließend nichts mehr.

Gruß
Danke für die Antwort, also es ist so: ich prüfe zuerst den Puffer, also die Anzahl Bytes, welche anstehen. Diese Zahl (in meinem Fall 9) möchte ja das Visa Read einlesen, doch tatsächlich eingelesen hatte er nur 7. Dies gibt er auch am Ausgang "Zurückgelieferter Zählwert" so aus.

An der Konfiguration könnte es jedoch liegen. Standardmässig stelle ich nur die Baudrate ein. Jetzt habe ich es mal mit diesem Abschlusszeichen probiert, das heisst ich habe einfach eine Zahl dort eingesetzt (keine welche ich verwende) und schon kann er alle Bytes lesen.?? Was ist den die Grundeinstellung?
Das Abschlusszeichen legt fest, unabhängig davon was Du am Read einstellst, wie oft bzw. lange gelesen wird (ausser Timeout).

Ist dort z.B. 0x0A eingestellt bekommst Du nur die Zeichen ausgelesen, die bis zum Zeichen 0x0A emfangen wurden. Der Rest geht `Verschütt`. Aber er ist noch im Speicher.

Dies bedeutet für Deinen Fall es wird 0xFF, 0x00, 0xA6, 0x13, 0x05, 0x08, 0x0A gelesen - und das sind eben genau 7 Zeichen.
Mit der boolschen Variablen wird dieses Verhalten aktiviert und deaktiviert.

Setze doch aus jux mal zwei reads hintereinander ohne diese Einstellung zu verändern - dann müssten einmal 7 und einmal 2 Zeichen gelesen werden.

Nichts zu danken - habe vor kurzem erst diese Funktionalität hier im Forum erklärt bekommen.

Gruß
Referenz-URLs