Programm lässt sich nicht beenden / hängt sich auf
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!
Programm lässt sich nicht beenden / hängt sich auf
Hi folks,
nachdem mein Programm nun (für meine Verhältnisse) ziemlich komplex geworden ist und aus vielen Unterprogrammen besteht habe ich das Problem, dass es nicht mehr sofort auf den STOP Knop reagiert.
Mehrmaliges Drücken hat zur Folge, dass ich eine "Das Programm reagiert nicht..."-Fehlermeldung von Windows erhalte.
Kann das den einfach Grund haben, dass mein Rechner von der Hardware nicht hinterher kommt? Was ich irgendwie ausschließe...
...oder kann man LabVIEW auch so ungeschickt programmieren, dass das Programm irgendwo unnötig viele Prozesse ausführt (ich denke da an meine ganzen For-Schleifen), dass es einfach vom reagieren her träge ist.
Programm lässt sich nicht beenden / hängt sich auf
Meinst du mit Stopp-Knopf den in der Task-Leiste der IDE:
Dazu ist zu sagen:
Das ist nicht der richtige Weg, den du da einschlägst. Das ist der brutale Abbruch der laufenden VIs und sollte nur der absolute Notfall sein, aber sicher nicht der Standard-Weg, um ein (komplexes) Programm zu beenden! Dazu gehört auf das Stop-Event programmtechnisch reagieren, schön brav alles (vor allem Hardware) abschließen und abmelden, und erst dann wird das letzte laufende VI geschlossen.
Es wundert mich somit nicht, dass irgendwann deine IDE komplett abstürzt. Ich kann dir nur dringend raten, dein Konzept und deine Benutzerführung zu überdenken/modifizieren.
MfG, 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!
Programm lässt sich nicht beenden / hängt sich auf
Zitat:Das ist nicht der richtige Weg, den du da einschlägst. Das ist der brutale Abbruch der laufenden VIs und sollte nur der absolute Notfall sein, aber sicher nicht der Standard-Weg, um ein (komplexes) Programm zu beenden! Dazu gehört auf das Stop-Event programmtechnisch reagieren, schön brav alles (vor allem Hardware) abschließen und abmelden, und erst dann wird das letzte laufende VI geschlossen.
??
Mein Programm besteht leider nicht aus einer Sequenz, sondern aus parallel geschaltenen For-Schleifen, die eben beständig laufen. Wie soll ich das Programm denn sonst beenden?
Gehört zum guten Programmieren im Programm ein STOP Knopf, der eben gerade jene For-Schleifen beendet?
Programm lässt sich nicht beenden / hängt sich auf
Eine Möglichkeit wäre z.B. eine Local oder wenn es VI übergreifend sein sollte eine Global Stop Variable. Damit kannst du den laufenden Vorgang stoppen und dann gezielt das Programm beenden.
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
Programm lässt sich nicht beenden / hängt sich auf
Lad' doch, wie ChrisR schon empfohlen hat, Dein VI einfach mal hoch.
Sonst gibt es hier nur wilde Spekulationen.
Gruß Markus
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Programm lässt sich nicht beenden / hängt sich auf
' schrieb:Aber hier mal ein Screenshot von der Programmstruktur des FrontPanels:
Ich sach' mal so: Ich würde mich auch nicht beenden lassen und aufhängen.
Sowas macht man nicht, auch wenn's funktionieren sollte. Bevor das Programm mit FP.Close beendet wird, sollten alle While-Schleifen beendet werden und alle Tasks (DaqMX, Queues etc. etc.) beendet sein - und zwar mit den entsprechenden Methoden.
Außerdem fehlt zumindest in der einen While-Schleife eine Metronom.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Programm lässt sich nicht beenden / hängt sich auf
' schrieb:Warum?
Wenn kein einziger True-Case der vier Case-Sequenzen abgearbeitet wird, sondern nur alle leeren False-Cases (dass die leer sind nehm ich jetzt einfach mal an), läuft die While-Schleife so schnell durch, dass theoretisch für was anderes keine Zeit bleibt. Sehen tut man das z.B. an der Reaktionsgeschwindigkeit des Frontpanels (vergleiche auch Prozessorauslastung). In solche Schleifen gehört eine Wartezeit hinein. 10 Millisekunden (ich nehm immer 250ms) sind da bereits ausreichend. Ob Metronom oder Wartezeit ist gleich. Auch wenn es ohne Wartezeit funktioniert, heißt das noch lange nicht, dass es auch in den Fällen, die gerade nicht auftreten, zur Zufriedenheit des Anwenders funktionieren wird.
Zitat:Ich hab in der Hilfe gelesen, dass es die Programmabläufe synchronisiert.
In welcher Hilfe steht denn das? Ich halte das für falsch. Zum Synchronisieren im engeren Sinne gibt es spezifische Mittel. Metronom und Wartezeit warten eben nur. Aus der Tatsache, dass ein Metronom in einem festen Raster abläuft, kann man meines Erachtens nicht schleißen, dass ein Metronom synchronisierende Eigenschaften hat (wenn dann nur im aller weitesten Sinne).
Zitat:Hört sich ja intuitiv ganz praktisch (oder wichtig?) an.
Eher wichtig.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).