Hallo zusammen,
Ich habe ein Problem mit VISA: Bei ersten Starten des Programms erhalte ich folgende Fehlermeldung:
Wenn ich das Vi danach öffne kommt dieser Fehler nicht mehr --> er erscheint nur wenn ich Labview komplett beende und dann das Programm neu starte. Wenn ich im Programm nochmal auf dieses vi zugreife funktioniert alles. (Der Fehler erscheint beim ersten benutzen eines Vi's in meinem Programm in dem ich über VISA Daten einlese. Welches Vi ich da nehme ist egal)
Gestartet wird das VISA in den VI's so:
und beendet so:
Woran liegt das, dass ich diese Fehlermeldung nur beim ersten starten kriege? (Hab schon die 50ms wartezeit zwischen öffnen und lesen eingebaut, aber der fehler kommt trotzdem)
VISA-Fehler beim ersten Starten
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: VISA-Fehler beim ersten Starten
Woran es liegt kann ich nicht sagen. Aber du kannst zuerst schauen wie viele Zeichen im Port sind und dann an das VISA Read.VI diese Zahl übergeben.
Wie sehen die Daten aus, die du lesen willst?
Wie sehen die Daten aus, die du lesen willst?
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: VISA-Fehler beim ersten Starten
Ach so, ne ich glaube, ich weiss warum es passiert.
Guck:
- deine serielle Schnittstelle hat einen physikalischen Puffer (normalerweise 256 Bytes)
- wenn du die Schnittstelle öffnest (VISA Config) weiss dein PC dass du es gemacht hast und fängt an die ankommenden Daten in diesem Puffer zu sammeln
- irgendwann wird dein Puffer überlaufen, ist ja klar
- aber nur dann wenn du diesen puffer nicht ausliest (mit VISA read)
Also die 50 ms Pause zwischen dem Konfigurieren und Lesen ist viel zu lange. In dieser Zeit wird dein Puffer schon überlaufen.
Nur meine Vermutungen, aber logisch doch?
Guck:
- deine serielle Schnittstelle hat einen physikalischen Puffer (normalerweise 256 Bytes)
- wenn du die Schnittstelle öffnest (VISA Config) weiss dein PC dass du es gemacht hast und fängt an die ankommenden Daten in diesem Puffer zu sammeln
- irgendwann wird dein Puffer überlaufen, ist ja klar
- aber nur dann wenn du diesen puffer nicht ausliest (mit VISA read)
Also die 50 ms Pause zwischen dem Konfigurieren und Lesen ist viel zu lange. In dieser Zeit wird dein Puffer schon überlaufen.
Nur meine Vermutungen, aber logisch doch?
-
- junior
- Сообщения: 57
- Зарегистрирован: 21 авг 2008, 13:22
- Версия LabVIEW: 8.5
- Контактная информация:
Re: VISA-Fehler beim ersten Starten
Eigentlich klingt deine Vermutung schon gut, aber wie kann man dann erklären, dass nur beim ersten mal starten die Fehlermeldung kommt?
Wenn ich das Vi danach nochmal aufrufe klappt das ja einwandfrei (trotz der 50 ms)
P.S hab die Sequenz mit den 50 ms komplett entfernt und es scheint zu funktionieren
Wenn ich das Vi danach nochmal aufrufe klappt das ja einwandfrei (trotz der 50 ms)
P.S hab die Sequenz mit den 50 ms komplett entfernt und es scheint zu funktionieren
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: VISA-Fehler beim ersten Starten
Na, siehst du
Am besten arbeitest du mit Timeouts, nicht mit Wartezeiten. Es gibt einen Unterschied dazwischen. Versuche diesen Unterschied gut zu verstehen, dann wird alles klappen.
Gruß, eg
Am besten arbeitest du mit Timeouts, nicht mit Wartezeiten. Es gibt einen Unterschied dazwischen. Versuche diesen Unterschied gut zu verstehen, dann wird alles klappen.
Gruß, eg
-
- junior
- Сообщения: 57
- Зарегистрирован: 21 авг 2008, 13:22
- Версия LabVIEW: 8.5
- Контактная информация:
Re: VISA-Fehler beim ersten Starten
Bei einem Timeout wird doch das Programm (bzw. die Funktion) abgebrochen, d.h. zur Ablaufsteuerung ist das nicht so gut geeignet. (bzw. wenn man nur warten will ist eine wartezeit besser)
In diesem Fall hab ich die 50 ms Wartezeit eingefügt, weil ich damit sicherstellen wollte, dass auch wirklich Messdaten zur Verfügung stehen. Aber ich merk grad selbst dass da ein Timeout mehr Sinn macht, d.h wenn nach der bestimmten Zeit keine Daten zur Verfügung stehen bricht ein Timeout automatisch ab. Bei einer Wartezeit ist das egal weil die immer die eingestellte Zeit abwartet und danach einfach weiter macht (wenn ich das jetzt richtig verstanden habe)
In diesem Fall hab ich die 50 ms Wartezeit eingefügt, weil ich damit sicherstellen wollte, dass auch wirklich Messdaten zur Verfügung stehen. Aber ich merk grad selbst dass da ein Timeout mehr Sinn macht, d.h wenn nach der bestimmten Zeit keine Daten zur Verfügung stehen bricht ein Timeout automatisch ab. Bei einer Wartezeit ist das egal weil die immer die eingestellte Zeit abwartet und danach einfach weiter macht (wenn ich das jetzt richtig verstanden habe)
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 2 Ответы
- 662 Просмотры
-
Последнее сообщение Borjomy_1
-
- 4 Ответы
- 244 Просмотры
-
Последнее сообщение Embedder74