Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
26.09.2011, 16:35 (Dieser Beitrag wurde zuletzt bearbeitet: 26.09.2011 16:36 von Roter Milan.)
ich verwende unter LV 2010 ein VI zum zyklischen lesen der seriellen Schnittstelle (Siehe Anhang). Ich sende eine Anfrage, auf die ich 94 Byte empfange. Ein Simulationsknoten der Gegenstelle befindet sich auch im Anhang (Zu verbinden über 0-Modemkabel).
Nun habe ich auf LV2011 upgedatet und stelle fest, dass mein VI sich fürher oder später in der Funktion VISA-Lesen aufhängt. Wenn ich im Blockdiagramm die "Lampe" anschalte sieht man das. Das VI kann dann auch nur über den Taskmanager geschlossen werden.
Unter LV 2010 hatte ich keinerlei Probleme damit. Ich habe auch schon die Aktuelle Version des VISA-Treibers (V 5.1.1) installiert, ohne Erfolg.
Was ist denn das für eine Inkonsistenz?
Du konfigurierst deine Schnittstelle auf "Termination Char"=TRUE und lässt den Term-Char auf dem Default-Wert 0xA=\n=Newline.
Bei deiner Kommunikation schließt du jeden gesendeten String aber mit 0xD=\r=Carriage Return ab.
Außerdem kannst du dir das Ganze "Bytes at Port" etc. sparen.
Wenn du schon ein eindeutiges Abschlußzeichen hast, dann wird an VISA-Read eine entsprechend große Zahl angeschlossen und gut ist. Die Read-Funktion gibt nämlich immer dann einen kompletten String zurück, wenn:
1) Der Timeout überschritten wurde
2) oder die Anzahl der gewünschten Bytes im Puffer ist
3) oder der Termination Char im seriellen Stream erkannt wurde.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
ich habe den Term-Char nun richtig auf <CR> = 0xD eingestellt und das VI auf Grund der Hinweise Jens optimiert.
Die anfangs beigefügte Simulation (VISA-Senden.llb) sollte zur Reproduzierung des Hängenbleibers dienen.
Das eigentliche Problem besteht mit dem VI VISA-Lesen.llb in Verbindung mit einem realen Klimaschrank unter LV 2011. Der Klimaschrank sendet auf eine Anfrage, eine Antwort mit <CR> abgeschlossen. In dem VI anbei sende ich zyklisch eine Anfrage und hole die Antwort ab.
Auch mit dem optimierten VI (Siehe Anhang) hängt sich LabVIEW nach ca. 700 Zyklen derart auf, dass der LabVIEW-Prozess nicht mal über den Taskmanager gestoppt werden kann. Man muss den Rechner neu starten. LV bleibt, wie schon erwähnt, in der VISA-Lesen-Funktion hängen.