INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Wie trotz laufender Schleife user-responsiv?



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!

29.01.2009, 22:02
Beitrag #1

SteffenSI Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 64
Registriert seit: Nov 2008

8.6
2007
en

69115
Deutschland
Wie trotz laufender Schleife user-responsiv?
Hallo,

ich sitze nun schon seit gut 4 Stunden vor einem Bug in meinem Programm und weis einfach nciht weiter, hoffe ich habe hier etwas mehr glück Rolleyes

Mein Programm verfuegt im wesentlichen über ein Frontpanel, ueber welches die ganze Kommunikation mit dem Benutzer läuft. Mehrere XControls verarbeiten dabei die benutzeingaben, antowrten diesem etc.

Das Programm steuert ein mikroskop. Dieses Mikroskop kann man auf "live" schalten. Dabei läuft im Hintergrund dann solange eine Schleife, die die bilder aufnimmt (und in eine queue schiebt, von wo eine andere schleife sie dann wieder liest und ausgibt), bis man eben "live" deaktiviert.
Dies funktionierte vor einiger Zeit noch problemlos, während die schleife im hintergrund bilder aufnahm, blieb das frontpanel responsiv bzgl benutzereingaben.

Jetzt ist es aber so, das man das Frontpanel sobald die schleife läuft nciht mehr bedienen kann. Es ist nciht nur langsam, es scheint so als ob es gar nciht aktiv sei. Auch habe ich die Schleife ueber "waits" oder direkt unter execution control->priority den restlichen funktionen versucht zurückzustellen, ohne erfolg. das frontpanel reagiert ueberhauopt nciht, das heist alle XControls verarbieten keine daten mehr.

Beim debuggen sieht es jedoch so aus, als liefe alles prima und als sei das programm nciht in einer schleife hängen geblieben

Die Schleife habe ich auch an meinen beitrag angehängt, allerdings fehlen die subvi's, diese sind aber meiner meinung nach auch nciht relevant, weil der effekt der gleiche ist, wenn ich alle subvis ausklammere und bspw. nur noch das "time-delay" in der schleife lasse.

Dann bin ich aml auf eure Ideen gespannt und schon mal vielen dank im vorraus,
gruß steffen


Angehängte Datei(en)
Sonstige .vi  VERSION_8.6.vi (Größe: 57,44 KB / Downloads: 203)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
29.01.2009, 22:34
Beitrag #2

SteffenSI Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 64
Registriert seit: Nov 2008

8.6
2007
en

69115
Deutschland
Wie trotz laufender Schleife user-responsiv?
noch eine kleine anmerkung, falls ich das schlecht ausgedrückt habe: Das Frontpanel reagiert nciht langsam während die schleife läuft - es reagiert überhaupt nciht mehr (oder eben so langsam das ich denke es reagiere überhauot cniht mehr^_^)

gruß!!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.01.2009, 06:23
Beitrag #3

Achim Offline
*****
*****


Beiträge: 4.222
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Wie trotz laufender Schleife user-responsiv?
Hast du vielleicht ein Problem mit den Timeouts der Queue-Funktionen?

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.01.2009, 09:17 (Dieser Beitrag wurde zuletzt bearbeitet: 30.01.2009 09:26 von Lucki.)
Beitrag #4

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Wie trotz laufender Schleife user-responsiv?
' schrieb:Beim debuggen sieht es jedoch so aus, als liefe alles prima und als sei das programm nciht in einer schleife hängen geblieben
Wenn Du erst auf debuggen schaltest, nachdem die Schleife hängt, müßtes Du doch sofort sehen können, wo es hängenbleibt.
Eine bewährte Technik ist auch, in das i eine Anzeuge anzuschließen, damit man sieht, nach wie vielen Schleifendurchläufen es hängt.
Die Debugg-Funktionen in LV sind für mich mit das Beste an LV überhaupt. Damit in wenigen Minuten herauszufinden, wo genau die Schleife hängt, ist überhaupt kein Problem. Natürlich muß man sich damit vertraut machen. Mit Ein- und Ausschalten der gelben Lampe allein kommt man wirklich nicht weit.

Sehr seltsam ist: Die Quere wird bei jedem Schleifendurchlauf neu erzeugt, bevor ein neues Datenelement hineingeschoben wird. Ich weiß wirklich nicht, was da passiert, will es auch nicht wissen, das ist doch kein normales Programmieren. Man erzeugt doch die Queue im Regelfall nur ein Mal bei der Initialisierung des VIs.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.01.2009, 09:27
Beitrag #5

Achim Offline
*****
*****


Beiträge: 4.222
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Wie trotz laufender Schleife user-responsiv?
' schrieb:Sehr seltsam ist: Die Quere wird bei jedem Schleifendurchlauf neu erzeugt, bevor ein neues Datenelement hineingeschoben wird. Ich weiß wirklich nicht, was da passiert, will es auch nicht wissen, das ist doch kein normales Programmieren. Man erzeugt doch die Queue im Regelfall nur ein Mal bei der Initiaisierung des VIs.

Sehr sauber ist das nicht, aber es gibt beim ObtainQueue-VI ja den Eingang "Create if not found"...d.h. wenn schon eine Queue existiert, und das ist nach dem ersten Aufruf der Fall, wird die Queue nicht neu erzeugt sondern die bestehende verwendet!

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.01.2009, 09:45
Beitrag #6

SteffenSI Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 64
Registriert seit: Nov 2008

8.6
2007
en

69115
Deutschland
Wie trotz laufender Schleife user-responsiv?
' schrieb:Sehr sauber ist das nicht, aber es gibt beim ObtainQueue-VI ja den Eingang "Create if not found"...d.h. wenn schon eine Queue existiert, und das ist nach dem ersten Aufruf der Fall, wird die Queue nicht neu erzeugt sondern die bestehende verwendet!

Ja, so wie ich das VI verstehe, wird einfach die bestehende queue wieder herangezogen, ich versuch es mal zu aendern, aber wie gesagt, das problem besteht auch wenn die schleife komplett leer ist (+ eben ein wait).

Mit "das es beim debuggen normal aussieht" meinte ich, das im Debugmodus das Programm eben gerade nicht in der queue haengen bleribt, diese laeuft zwar, es werden aber auch die anderen Schleifen des Hauptprogramms bedient, welche beispielsweise die Events der X-Controls abfragen, nur die XControls selbst scheinen "tot" zu sein und reagieren eben nciht mehr auf benutzeraktionen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
30.01.2009, 10:26
Beitrag #7

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Wie trotz laufender Schleife user-responsiv?
' schrieb:Sehr sauber ist das nicht, aber es gibt beim ObtainQueue-VI ja den Eingang "Create if not found"...d.h. wenn schon eine Queue existiert, und das ist nach dem ersten Aufruf der Fall, wird die Queue nicht neu erzeugt sondern die bestehende verwendet!
Ja, das ist schon klar, aber wenn die einzige Funktion dann darin besteht, die Schleife künstlich um 1 ms zu verlangsamen, dafür gibt es die Wait-Funktion, mit dem Vorteil, daß die CPU sich in dieser Zeit einer anderen Task zuwenden kann.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.01.2009, 10:34
Beitrag #8

SteffenSI Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 64
Registriert seit: Nov 2008

8.6
2007
en

69115
Deutschland
Wie trotz laufender Schleife user-responsiv?
Hallo,
ich habe das Programm nun etwas umgebaut, jetzt funktioniert es - leider ohne sicher zu wissen was das Problem war.

Mir scheint es, als lag das Problem daran, das ich 2 ineinander geschachtelte While Schleifen hatte - jede fuer sich blockiert das Programm nicht, zusammen ging aber nichts mehr... nur seltsam das es davor auch lief Wink

Aber vielen dank fuer eure Hilfe!!

Gruesse Steffen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Doppelaufruf trotz Ablaufvarianz D_Sev 1 3.038 04.05.2014 17:42
Letzter Beitrag: GerdW
  Fehlermeldung trotz korrektem Fit myth 5 4.395 18.03.2013 11:46
Letzter Beitrag: jg
  Parallel Abläufe trotz SubVI mit serieller Kommunikation zur HW anja210 3 3.829 01.08.2012 21:43
Letzter Beitrag: Lucki
  1x While Schleife, 1x Zeitges. While Schleife, die zeitgs. START/STOP dali4u 1 6.031 23.05.2011 09:22
Letzter Beitrag: Y-P
  Programm beenden trotz Verzögerungszeiten? Destiny 5 4.934 21.07.2009 11:29
Letzter Beitrag: Destiny
  VI stoppt trotz Stoppbutton nicht DrHoas 2 3.597 19.10.2007 17:57
Letzter Beitrag: Lucki

Gehe zu: