LabVIEWForum.de - Problem bei der VISA Kommunikation

LabVIEWForum.de

Normale Version: Problem bei der VISA Kommunikation
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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
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
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
Referenz-URLs