LabVIEWForum.de
Problem bei der VISA Kommunikation - 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: Problem bei der VISA Kommunikation (/Thread-Problem-bei-der-VISA-Kommunikation)



Problem bei der VISA Kommunikation - Rapdan - 31.08.2006 09:18

Hallo,

habe folgendes Problem bei der VISA Kommunikation:

Mit meinem Programm sende ich 19 Byte an den VISA Port, dabei werden Werte von Parametern in einen EC Antrieb geschrieben. Dabei gibt es Parameter, bei denen der Wert Read Only sind und es gibt welche die RD/WR sind.
Versucht man allerdings einen Wert in einen Parameter zu schreiben der Read Only ist, bekommt man ein 34 Byte langes "Fehler"-protokoll zurück. Bei erfolgreichem Beschreiben eines RD/WR Parameters bekommt man ein 30 Byte langes Protokoll zurück.

Das eigentliche Problem ist nur, dass ich beim Auslesen am VISA Port bekannt geben muss wieviele Bytes zu lesen sind, da die Anzahl der zu lesenden Bytes aber wie gesagt unterschiedlich sein kann geht er wenn ich eben die max. Anzahl an Bytes, nämlich 34 auslese, bei erfolgreichem Schreiben (30 Bytes) in den Timeout, da er noch auf die restlichen 4 Byte wartet. Das heißt ich weiß erst nach dem Auslesen ob die Protkolllänge 34 oder 30 Byte ist.

Leider funktioniert die Abschlusszeichenerkennung in meinem Fall nicht, da in meinem Fall das Protkoll aus "Daten + nr + Daten + nr" besteht, sprich er müsste nur jedes zweite nr erkennen, aber ich weiß nicht wie man das umsetzen könnte.

Wer kann mir helfen?

MfG Daniel


Problem bei der VISA Kommunikation - diplNisse - 31.08.2006 15:01

Hi.

Es gibt noch die Funktion "Bytes at Port". Damit kannst du feststellen, wieviele Bytes im Eingangspuffer liegen. Wenn du den Ausgang der Funktion mit VISA -READ "Bytes to Read" verbindest, werden immer genausoviele Bytes ausgelesen, wie am Port anstehen.

Mit Abschlusszeichen gehts auch:
For-Schleife um das read und zweimal lesen. In der Schleife ein String-Schieberegister, an den du die Daten einfach anhängst ("concatenate Strings").

Nisse


Problem bei der VISA Kommunikation - Rapdan - 01.09.2006 08:11

Also die erste Lösungsmöglichkeit hatte ich auch schon probiert, hat aber nicht auf Anhieb geklappt, aber der 2. Tipp mit der For-Schleife und zweimal auslesen hat funktioniert!!!

Danke nochmal.

Gruß Daniel