08.07.2008, 11:27
Beitrag #1
|
Labview-Beginner
LVF-Gelegenheitsschreiber
Beiträge: 114
Registriert seit: Oct 2007
6.1
2007
kA
67705
Deutschland
|
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.
Cheers.
|
|
|
08.07.2008, 11:48
Beitrag #2
|
ChrisR
LVF-Grünschnabel
Beiträge: 42
Registriert seit: Mar 2007
7.1, 8.2 , 8.5
2006
de_en
52428
Deutschland
|
Programm lässt sich nicht beenden / hängt sich auf
Hallo,
ohne dein Programm zu sehen ist es natürlich schwer einen Fehler auszumachen.
Aber deine Schleifen sind schonmal nen guter Ansatz.
Gruß Christian
|
|
|
08.07.2008, 12:27
Beitrag #3
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
Programm lässt sich nicht beenden / hängt sich auf
Meinst du mit Stopp-Knop f 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!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
08.07.2008, 12:34
Beitrag #4
|
Labview-Beginner
LVF-Gelegenheitsschreiber
Beiträge: 114
Registriert seit: Oct 2007
6.1
2007
kA
67705
Deutschland
|
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?
Cheers.
|
|
|
08.07.2008, 13:26
Beitrag #5
|
F.Bi
LVF-Gelegenheitsschreiber
Beiträge: 152
Registriert seit: Oct 2007
LabView 2016
2007
EN
55218
Deutschland
|
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.
|
|
|
08.07.2008, 14:44
Beitrag #6
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
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 !!
--------------------------------------------------------------------------
|
|
|
10.07.2008, 12:07
Beitrag #7
|
|
|
10.07.2008, 12:33
Beitrag #8
|
IchSelbst
LVF-Guru
Beiträge: 3.697
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
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).
|
|
|
10.07.2008, 12:43
Beitrag #9
|
Labview-Beginner
LVF-Gelegenheitsschreiber
Beiträge: 114
Registriert seit: Oct 2007
6.1
2007
kA
67705
Deutschland
|
Programm lässt sich nicht beenden / hängt sich auf
IchSelbst schrieb:Außerdem fehlt zumindest in der einen While-Schleife eine Metronom.
Warum?
Ich hab in der Hilfe gelesen, dass es die Programmabläufe synchronisiert. Hört sich ja intuitiv ganz praktisch (oder wichtig?) an.
Cheers.
|
|
|
10.07.2008, 12:55
|
IchSelbst
LVF-Guru
Beiträge: 3.697
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
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).
|
|
|
| |