LV 8.x, WinXP, Com1
Hallo,
auf Dauer ist es nervig: Wenn ich ein Programm mit normal arbeitender Kommunikation über die serielle Schnittstelle im Betrieb mit dem roten "Ausführung abbrechen"-Knopf in der Menüleiste abbreche, und dann neu starte, ist der Port gesperrt, bis ich das Programm schließe (und dann wieder öffne).
Warum ist das so?
Wie bekomme ich das Programm dazu das es merkt das das eigene Programm diesen Port blockiert? Oder, gibt es eine Möglichkeit den gewünschten Port bei "Start" freizumachen?
Grüßle
Heiko Uhlig
Hallo Heiko,
"Warum ist das so?"
Ich würd mal so sagen: "To use the abort button is like using a tree to stop a car!" (Aus dem NI-Forum...)
Vielleicht überlegst du dir, wie man ein VI kontrolliert beendet - und dann auch den seriellen Port wieder freigibt (mit einem VISA-Close)?
Oder du stellst in LabVIEW ein:
Werkzeuge -> Optionen -> Umgebung -> VISA-Sessions automatisch schließen
' schrieb:Hallo Heiko,
"Warum ist das so?"
Ich würd mal so sagen: "To use the abort button is like using a tree to stop a car!" (Aus dem NI-Forum...)
Vielleicht überlegst du dir, wie man ein VI kontrolliert beendet - und dann auch den seriellen Port wieder freigibt (mit einem VISA-Close)?
das beantwortet leier die Frage nicht. ;-)
Selbstverständlich habe ich Visa-Close usw drin. Trotzdem gibt's doch Zustände in denen man das Programm "irregulär" abbricht, z.B. weil es aus irgendeinem Grund hängt. Es scheint mir trotzdem nicht plausibel warum das VI nicht erkennen kann das es selbst den Port blockiert.
Grüßle
Heiko
Ja, warum beendest Du das Programm auch nicht normal? Dies Art des Abbruch entspäche dem Beenden einer Autofahrt durch Fahren gegen einen Baum - las ich gerade gestern hier im Forum.
Aber in Deinem Fall solltest Du wenigsten beim Start des Programm die VISA-Schnittelle zuerst schließen, bevor Du neu konfigurierst.
Edit: Andere waren schneller. Aber zu Deine Frage:
Zitat:Es scheint mir trotzdem nicht plausibel warum das VI nicht erkennen kann das es selbst den Port blockiert.
Das habe ich mich auch lange Zeit gefragt, bis mir ein plausible Antwort einfiel:
Labview kann eben nur erkennne, daß der Port blockiert ist, aber nicht wer es ist. Es könnnte also auch ein ganz anderes parallel laufendes Windows-Programm sein. Es wäre ein Leichtes, bei der Konfiguration den Port erst mal zurückzusetzen. Aber damit würde man möglicherweise in ein anderes Windows-Progrogramm eingreifen, und das darf natürlich nicht sein.
Die Antwort von Tschac gefällt mir übrigens am besten, werde das bei mir so einstellen.
Hallo Heiko,
"z.B. weil es aus irgendeinem Grund hängt"
Wenn du den Grund kennst, kannst du das VI auch kontrolliert beenden...
TSchACs Vorschlag sollte funktionieren, lädt aber nicht zum sauberen Programmieren ein. Luckis Vorschlag funktioniert auch, lädt aber nicht zum...
' schrieb:Oder du stellst in LabVIEW ein:
Werkzeuge -> Optionen -> Umgebung -> VISA-Sessions automatisch schließen
funktioniert (bei mir (LV8.6)) leider nicht, Port ist trotzdem bis LV-Neustart blockiert.
In meinen Test VIs kümmer ich mich eher selten um sauberes programmieren, da will ich nur mal schnell nen Wert auslesen und nicht gleich den ersten Preis für den schönsten Code bekommen.
In den richtigen Programmen ist das natürlich was anderes.
Grüße,
Torsten
' schrieb:In meinen Test VIs kümmer ich mich eher selten um sauberes programmieren, da will ich nur mal schnell nen Wert auslesen und nicht gleich den ersten Preis für den schönsten Code bekommen.
In den richtigen Programmen ist das natürlich was anderes.
Grüße,
Torsten
eben, so sehe ich das auch.
Das genannte "Auto gegen Baum" Argument finde ich merkwürdig. LV ist 'ne Entwicklungsumgebung. Wärend der Entwicklungsphase wird es doch wohl erlaubt sein das Programm "irregulär" zu beenden. Technisch ist für mich nicht nachvollziehbar warum der Port vom eigenen Programm blockiert bleibt, selbst mit "Visa Sessions automatisch schließen". Und dann auch keine Möglichkeit besteht diese Blockade aufzuheben.
Schade.
Grüßle
Heiko
' schrieb:Ja, warum beendest Du das Programm auch nicht normal? Dies Art des Abbruch entspäche dem Beenden einer Autofahrt durch Fahren gegen einen Baum - las ich gerade gestern hier im Forum.
Aber in Deinem Fall solltest Du wenigsten beim Start des Programm die VISA-Schnittelle zuerst schließen, bevor Du neu konfigurierst.
Edit: Andere waren schneller. Aber zu Deine Frage:
Das habe ich mich auch lange Zeit gefragt, bis mir ein plausible Antwort einfiel:
Labview kann eben nur erkennne, daß der Port blockiert ist, aber nicht wer es ist. Es könnnte also auch ein ganz anderes parallel laufendes Windows-Programm sein. Es wäre ein Leichtes, bei der Konfiguration den Port erst mal zurückzusetzen. Aber damit würde man möglicherweise in ein anderes Windows-Progrogramm eingreifen, und das darf natürlich nicht sein.
Die Antwort von Tschac gefällt mir übrigens am besten, werde das bei mir so einstellen.
"Visa schließen"am Anfang, auch schon probiert --> keine Änderung :-(
"Labview kann eben nur erkennne, daß der Port blockiert ist, aber nicht wer es ist." So vermute ich das auch, aber das ist doch 'ne komische Sache, wirkt irgendwie unreif. Und ich sollte zumindestens einstellen können das LV bei Nutzung genannter Abbruchvariante die genutzten Ports schließt. Zumindestens mit dem genannten "Visa Sessions schließen" funktioniert das bei mir nicht.
Ich bin allerdings verwundert das ich scheinbar der einzige bin den es nervt, sonst gäb's da doch bestimmt 'ne Lösung. ;-)
Grüßle
Heiko