09.06.2011, 23:24
Hiho,
ich habe ein Gerät, das über eine USB-zu-Serial Schnittstelle betrieben wird, also einen virtuellen COM-Port erzeugt. Es funktioniert an sich auch prima mit dem VISA, nur eine Kleinigkeit verwundert mich ein wenig:
Ich will mein Programm "idiotensicher" machen, also z.B. auch den Fall berücksichtigen, dass die USB-Verbindung abgezogen werden kann.. In diesem Fall verschwindet der COM-Port komplett aus dem System und das Programm bricht (natürlich) mit einem Fehler ab. Nun wenn ich den USB-Stecker wieder reinstecke (der COM-Port ist wieder da, z.B. im Gerätemanager) und das Programm wieder starte, wird der COM-Port vom VISA nicht gefunden! Das VISA bekommt es irgendwie nicht mit, dass der COM-Port wieder da ist (oder vielleicht sogar dass er weg war
)..
Interessanterweise funktionierts, wenn ich ihn in einen anderen USB-Port stecke und er dadurch von Windows eine andere COM-Port Nummer bekommt. Der "neue" COM-Port wird dann tatsächlich dynamisch vom VISA erkannt und kann angesprochen werden. Danach kann ich dasselbe nochmal machen und den Stecker wieder in den ersten USB-Port stecken (ursprüngliche COM Nummer) und er wird vom VISA erkannt!
Also es funktioniert "dynamisch" nur beim umstecken, jedoch nicht beim wieder reinstecken in denselben USB-Port. Es hilft nichtmal Labview komplett neuzustarten, der Stecker muss umgesteckt werden, sonst läufts nicht mehr. Das Problem tritt nur auf, wenn im laufenden Programm der Stecker abgezogen wird (Lese-/Schreibkommandos). Wenn nicht auf den Port zugegriffen wird, kann man ihn belibig ein- und ausstecken und er wird immer erkannt...
Das Verhalten habe ich sowohl unter XP 32bit, als auch Win 7 64bit beobachtet (Labview 2010 SP1 32bit bzw. 64bit). Ist das Problem bekannt? Gibts da eine Lösung?
ich habe ein Gerät, das über eine USB-zu-Serial Schnittstelle betrieben wird, also einen virtuellen COM-Port erzeugt. Es funktioniert an sich auch prima mit dem VISA, nur eine Kleinigkeit verwundert mich ein wenig:
Ich will mein Programm "idiotensicher" machen, also z.B. auch den Fall berücksichtigen, dass die USB-Verbindung abgezogen werden kann.. In diesem Fall verschwindet der COM-Port komplett aus dem System und das Programm bricht (natürlich) mit einem Fehler ab. Nun wenn ich den USB-Stecker wieder reinstecke (der COM-Port ist wieder da, z.B. im Gerätemanager) und das Programm wieder starte, wird der COM-Port vom VISA nicht gefunden! Das VISA bekommt es irgendwie nicht mit, dass der COM-Port wieder da ist (oder vielleicht sogar dass er weg war
)..Interessanterweise funktionierts, wenn ich ihn in einen anderen USB-Port stecke und er dadurch von Windows eine andere COM-Port Nummer bekommt. Der "neue" COM-Port wird dann tatsächlich dynamisch vom VISA erkannt und kann angesprochen werden. Danach kann ich dasselbe nochmal machen und den Stecker wieder in den ersten USB-Port stecken (ursprüngliche COM Nummer) und er wird vom VISA erkannt!

Also es funktioniert "dynamisch" nur beim umstecken, jedoch nicht beim wieder reinstecken in denselben USB-Port. Es hilft nichtmal Labview komplett neuzustarten, der Stecker muss umgesteckt werden, sonst läufts nicht mehr. Das Problem tritt nur auf, wenn im laufenden Programm der Stecker abgezogen wird (Lese-/Schreibkommandos). Wenn nicht auf den Port zugegriffen wird, kann man ihn belibig ein- und ausstecken und er wird immer erkannt...
Das Verhalten habe ich sowohl unter XP 32bit, als auch Win 7 64bit beobachtet (Labview 2010 SP1 32bit bzw. 64bit). Ist das Problem bekannt? Gibts da eine Lösung?


Dann wird z.B. gewartet bis er wieder verfügbar ist (mit VISA Find Resource) und die Messung fortgeführt.. So muss ich nicht vor jeder einzelnen Messung checken, ob der Port tatsächlich vorhanden ist..