Seltsames Verhalten von LabVIEW und/oder VISA
Hallo zusammen,
ich habe folgende Probleme:
Auf einem PC habe ich zwei der vorhandenen seriellen Schnittstellen mit einem Kabel verbunden.
Nun habe ich ein VI geschieben das die serielle Schnittselle mit VISA öffnet und zwei While-Schleifen enthält. In der einen While-Schleife schreibe ich jeweils z.B. 50 Bytes auf die serielle Schnittstelle. In der zweiten While-Schleife lese ich jeweils immer nur ein Byte.
Dieses VI dupliziere ich und das eine läuft auf der einen seriellen Schnittstelle und das zweite auf der anderen Schnittstelle. Um andere Effekte, wie z.B. einen Pufferüberlauf auszuschließen, habe ich die Baudrate sehr niedrig gewählt. Grundsätzlich funktioniert das alles, aber:
Zum einem müsste die zweite Schleife (mit VISA Read) viel schneller laufen (=höhere Anzahl Iterationen) als die erste, weil diese Schleife die Bytes einzeln liest. Das tut sie aber nicht. VISA oder LabVIEW verhindert offensichtlich, dass Schreib- und Leseoperationen zeitgleich ausgeführt werden. Spätestens seit VISA 3.0 hätte ich erwartet, dass das funktioniert.
Wenn ich nun die beiden VIs nach einer Weile beende, dann bekomme ich manchmal eine reichlich dubiose Fehlermeldung in der Art von "Schutzverletzung an Adresse xxxx" und LabVIEW verabschiedet sich anschließend. Die Fehlermeldung erscheint manchmal auch erst, wenn ich LabVIEW beenden will. In anderen Fällen bekomme ich ein oder gar zwei defekte VIs. Das sieht dann bislang immer so aus, dass in der String Konstanten, die ich mit VISA Write verbunden habe, plötzlich nichts mehr drin steht.
Wenn ich nur die erste Schleife (VISA Write) beende und die Schnittstelle schieße, liefert mit das VISA Read der zweiten Schleife den Fehler "Operation konnte wegen eines I/O-Fehlers nicht durchgeführt werden."
Nunja... immerhin ist es eine Fehlermeldung.
Wenn ich dagegen nur die zweite Schleife (VISA Read) beende und die Schnittstelle schieße, dann läuft die zweite Schleife weiter ohne dass VISA Write mir eine Fehlermeldung liefert. VISA Write sendet allerdings auch keine Daten mehr über die Schnittstelle.
Wenn ich warte, bis beide Schleifen beendet sind und ich dann die Schnittstelle schieße, dann dauert es mitunter etliche Sekunden, bis die VIs tatsächlich beendet sind. Wer oder Was die Ursache für diese lange Zeit ist, das konnte ich bislang nicht feststellen.
Nun meine Frage: Hat jemand schon einmal eines dieser Probleme gesehen und gibt es Lösungen?
|