Parallele While Schleife, oder andere Lösungsansätze?
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!
RE: Parallele While Schleife, oder andere Lösungsansätze?
Hallo,
Das dass Programm nicht mehr bedienbar ist, wenn der Signalviewer läuft, ist nachvollziehbar, da es ja direkt im Datenfluss liegt und es erst weitergeht, wenn der SignalViewer beendet wird.
Zu deinem Problem: Das einfachste ist es, den SignalViewer in eine eigene Schleife zu tun und eben bei Bedarf aufzurufen. Da gibt es viele Möglichkeiten, wichtig ist eben, das er nicht im "Haupt"-Fluss liegen darf, damit das Programm nicht anhält, sondern bedienbar bleibt.
Überhaupt, gibt es in dem Programm keine Parallelität: Nur eine Haupt-While-Schleife, in die alles reingepackt wurde. Datenerfassung, Dateioperationen, Datenauswertung, Datendarstellung(sSubVI), usw. Ich würde diese Sequenzstruktur mit den 12 gestapelten Sequenzen versuchen aufzulösen und dabei parallele Schleifen anzulegen, die diese Funktionen übernehmen.
RE: Parallele While Schleife, oder andere Lösungsansätze?
(17.06.2013 14:11 )eb schrieb: Hallo,
Das dass Programm nicht mehr bedienbar ist, wenn der Signalviewer läuft, ist nachvollziehbar, da es ja direkt im Datenfluss liegt und es erst weitergeht, wenn der SignalViewer beendet wird.
Zu deinem Problem: Das einfachste ist es, den SignalViewer in eine eigene Schleife zu tun und eben bei Bedarf aufzurufen. Da gibt es viele Möglichkeiten, wichtig ist eben, das er nicht im "Haupt"-Fluss liegen darf, damit das Programm nicht anhält, sondern bedienbar bleibt.
Überhaupt, gibt es in dem Programm keine Parallelität: Nur eine Haupt-While-Schleife, in die alles reingepackt wurde. Datenerfassung, Dateioperationen, Datenauswertung, Datendarstellung(sSubVI), usw. Ich würde diese Sequenzstruktur mit den 12 gestapelten Sequenzen versuchen aufzulösen und dabei parallele Schleifen anzulegen, die diese Funktionen übernehmen.
Grüße
ja, das ist mir schon klar, dass das programm die Haupt-While-Schleife blockiert wenn es läuft. Deshalb ist es jetzt auch parallel dazu. (While schleife ist im sub VI), darum nicht sichtbar)
Allerdings macht das extreme performance probleme, alles lässt sich nur noch ruckartig, oder teilweise garnicht mehr bedienen. Und das mit dem bei bedarf aufrufen haut auch nicht hin.
RE: Parallele While Schleife, oder andere Lösungsansätze?
(11.06.2013 12:01 )TSchAC schrieb: Hier mal ein ganz vereinfachtes Beispiel wie meine Programme so aufgebaut sind! Das Ganze ist natürlich mit Vorsicht zu genießen und ist auf keinen Fall in jeder Situation die optimale Struktur!
Sehe mir den Thread das erste Mal an, bei dem VI fehlt noch eine Kleinigkeit: Die verborgene Variable "Programm beenden" sollte bei jedem Start auf false rückgesetzt werden, sonst werden bei jedem Restart alle Scheifen außer der mit der Ereignsistruktur nur ein einziges Mal ausgeführt.
RE: Parallele While Schleife, oder andere Lösungsansätze?
(17.06.2013 14:51 )Lumberjacker schrieb: ja, das ist mir schon klar, dass das programm die Haupt-While-Schleife blockiert wenn es läuft. Deshalb ist es jetzt auch parallel dazu. (While schleife ist im sub VI), darum nicht sichtbar)
Allerdings macht das extreme performance probleme, alles lässt sich nur noch ruckartig, oder teilweise garnicht mehr bedienen. Und das mit dem bei bedarf aufrufen haut auch nicht hin.
Warum geht das "bei Bedarf aufrufen" nicht? Im einfachsten Fall hast du eine parallele While-Schleife mit Eventstruktur und einen Case für Wertänderung deines "Boolesch"-Buttons. In diesem rufst du dann den SignalViewer auf.
Könntest du zwecks LabVIEW-Version dein Profil bitte aktualisieren und evtl. auf LabVIEW 2011 runterspeichern? Dann kann ich mir das auch mal anschauen
RE: Parallele While Schleife, oder andere Lösungsansätze?
(17.06.2013 14:51 )Lumberjacker schrieb:
(17.06.2013 14:11 )eb schrieb: Hallo,
Das dass Programm nicht mehr bedienbar ist, wenn der Signalviewer läuft, ist nachvollziehbar, da es ja direkt im Datenfluss liegt und es erst weitergeht, wenn der SignalViewer beendet wird.
Zu deinem Problem: Das einfachste ist es, den SignalViewer in eine eigene Schleife zu tun und eben bei Bedarf aufzurufen. Da gibt es viele Möglichkeiten, wichtig ist eben, das er nicht im "Haupt"-Fluss liegen darf, damit das Programm nicht anhält, sondern bedienbar bleibt.
Überhaupt, gibt es in dem Programm keine Parallelität: Nur eine Haupt-While-Schleife, in die alles reingepackt wurde. Datenerfassung, Dateioperationen, Datenauswertung, Datendarstellung(sSubVI), usw. Ich würde diese Sequenzstruktur mit den 12 gestapelten Sequenzen versuchen aufzulösen und dabei parallele Schleifen anzulegen, die diese Funktionen übernehmen.
Grüße
ja, das ist mir schon klar, dass das programm die Haupt-While-Schleife blockiert wenn es läuft. Deshalb ist es jetzt auch parallel dazu. (While schleife ist im sub VI), darum nicht sichtbar)
Allerdings macht das extreme performance probleme, alles lässt sich nur noch ruckartig, oder teilweise garnicht mehr bedienen. Und das mit dem bei bedarf aufrufen haut auch nicht hin.
Der SignalViewer ist eben nicht parallel! Er hat zwar eine eigene while-Schleife, aber die befindet sich innerhalb der Hauptschleife. Sie muss aber parallel zur Hauptschleife, nicht innerhalb, sonst blockiert sie.
RE: Parallele While Schleife, oder andere Lösungsansätze?
(18.06.2013 08:39 )eb schrieb: Der SignalViewer ist eben nicht parallel! Er hat zwar eine eigene while-Schleife, aber die befindet sich innerhalb der Hauptschleife. Sie muss aber parallel zur Hauptschleife, nicht innerhalb, sonst blockiert sie.
Hallo!
Der SignalViewer kommt zweimal vor in dem Programm. Der Viewer in der Haupt-While-Schleife, jedoch in einer Deaktivierungsstruktur.
Der zweite ist direkt unter der Haupt-while-Schleife, und um den geht es mir in dem fall. Der obere kann eigentlich gelöscht werden.
RE: Parallele While Schleife, oder andere Lösungsansätze?
(17.06.2013 19:26 )Holy schrieb: Warum geht das "bei Bedarf aufrufen" nicht? Im einfachsten Fall hast du eine parallele While-Schleife mit Eventstruktur und einen Case für Wertänderung deines "Boolesch"-Buttons. In diesem rufst du dann den SignalViewer auf.
Könntest du zwecks LabVIEW-Version dein Profil bitte aktualisieren und evtl. auf LabVIEW 2011 runterspeichern? Dann kann ich mir das auch mal anschauen
Ich zitiere mich mal selber. Ich würde gerne weiterhelfen aber da du weder die Frage beantwortet hast noch die VIs runtergespeichert sind fällt mir das gerade schwer