LabVIEWForum.de - Steuerung zwischen zwei while Schleife

LabVIEWForum.de

Normale Version: Steuerung zwischen zwei while Schleife
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hi zusammen,

ich bin neu mit Labview und auch Deutsch. Ich bitte um Entschuldigung.
Ich möchte eine Steuerungscode für Kamera machen. Die Funktion ist so, das Kamera zeigt immer live Bild und bewegt in einer Richtung mit Schrittmotor. Nach einem bestimmten Abstand mache ich ein Foto mit dem Kamera. Jetzt funktionieren die Code von Kamera und Schrittmotor getrennt richtig. Jetzt möchte ich den Prozess automatisiert laufen lassen. Ich habe mit Notifier versucht und ein vereinfachten Beispiel wie die Abbildung unten

[attachment=56230]

Die While Schleife(random value) unten ist die Funktion für Kamera. (Wenn ich "Mess" gedrückt, das Kamera zeigt live Bild) Ich möchte die Steuerung von Motor direkt in den Ereignisstruktur machen. (Ein Event case einfügen und innerhalb eine While Schleife für Schrittmotor machen) Aber jetzt wie kann ich das Foto machen?(Ein Signal von Schrittmotor-schleife ausgeben und Kamera-schleife reagiert)

Bin ich richtig auf den Weg oder habe ich komplett falsch gemacht? Kann jemand mir ein paar Tipps geben?

Danke im Voraus
Liebe Grüße
Hallo,

du arbeitest in deinem Screenshot mit 2 queues.
Schaue dir bitte mal die Beispiele zu queues und notifiern an.

Hope it helps, Ralf aka RMR
Hallo Ralf,

beide Notifier erhalten den selben Namen: damit könnte man die beiden Schleifen problemlos auf 2 subVIs verteilen!

@katanad:
- Warum müssen die Notifier ständig in den Schleifen neu angefordert und freigegeben werden? Schau dir die BeispielVIs an!
- Warum wird der Notifier in der oberen Schleife andauernd neu angefordert, aber nie freigegeben? Schau dir die BeispielVIs an!!!
- Ich hoffe, du machst etwas sinnvolles im Timeout-Event der oberen Schleife! Gibt es einen Grund, diesen mit einem Delay von 0ms aufzurufen?
(05.07.2016 07:35 )GerdW schrieb: [ -> ]beide Notifier erhalten den selben Namen: damit könnte man die beiden Schleifen problemlos auf 2 subVIs verteilen!

Hallo Gerd,

ok, wieder einwenig schlauer.
Für mich waren die Verbindungen von gestarteten Queues oder Notifiern immer irgendwie "normal".
Das diese über die Bezeichung inititialisiert werden wusste ich schlichtweg nicht.

Danke fürs "Augen öffnen".

Böde Frage, ergibt das nicht eine Menge overflow an code wenn ich jedesmal den Elementdatentyp neu bereitstellen muß?
Je nach Verwendung können das ja schon recht große Cluster sein.
Was macht der Compiler damit? Weiß das jemand?

Danke & Keep on... Ralf
Hallo Ralf,

Zitat:ergibt das nicht eine Menge overflow an code wenn ich jedesmal den Elementdatentyp neu bereitstellen muß? Je nach Verwendung können das ja schon recht große Cluster sein.
Ich packe die Anfrage für eine solche Queue/Notifier mit komplexen Datentypen in ein subVI, welches ich dann aufrufe:
[attachment=56231]
(Im Bild: Queues für mehrere Ausgabegeräte erzeugen, gesteuert über die Namen der Geräte.)
Und da der Cluster typdefiniert ist, hat man beim Lesen der Queue auch keine größeren Probleme zu erwarten…
(05.07.2016 11:45 )GerdW schrieb: [ -> ]Ich packe die Anfrage für eine solche Queue/Notifier mit komplexen Datentypen in ein subVI, welches ich dann aufrufe:

(Im Bild: Queues für mehrere Ausgabegeräte erzeugen, gesteuert über die Namen der Geräte.)
Und da der Cluster typdefiniert ist, hat man beim Lesen der Queue auch keine größeren Probleme zu erwarten…

Ok, das ist natürlich viel schöner als meine Copy/paste-Methode der Anzeigeelemente. Smile
Typdef ist klar, wird ja sonst sehr unübersichtlich beim unbundle und wartungsintensiv bei einer Änderung.

Danke dir.

Keep on, Ralf
(05.07.2016 06:28 )RMR schrieb: [ -> ]Hallo,

du arbeitest in deinem Screenshot mit 2 queues.
Schaue dir bitte mal die Beispiele zu queues und notifiern an.

Hope it helps, Ralf aka RMR
Danke für die Antwort.


(05.07.2016 07:35 )GerdW schrieb: [ -> ]Hallo Ralf,

beide Notifier erhalten den selben Namen: damit könnte man die beiden Schleifen problemlos auf 2 subVIs verteilen!

@katanad:
- Warum müssen die Notifier ständig in den Schleifen neu angefordert und freigegeben werden? Schau dir die BeispielVIs an!
- Warum wird der Notifier in der oberen Schleife andauernd neu angefordert, aber nie freigegeben? Schau dir die BeispielVIs an!!!

Ich habe das Beispiel General Notifier Example angeschaut und meine Code geändert.
[attachment=56233]
Aber jetzt wenn ich Schließen drückt, funktioniert das Mess-Knopf nicht mehr. Was ich möchte ist, die obere Schleife läuft immer und die Notifier kann zweite, dritte Mal aufgerufen wird.


- Ich hoffe, du machst etwas sinnvolles im Timeout-Event der oberen Schleife! Gibt es einen Grund, diesen mit einem Delay von 0ms aufzurufen?
Im Timeout-Event steht gar nichts. Können Sie detailed erklären, wieso nicht direkt Timeout aufrufen.

Danke im Voraus
Hallo katanad,

Zitat:Aber jetzt wenn ich Schließen drückt, funktioniert das Mess-Knopf nicht mehr. Was ich möchte ist, die obere Schleife läuft immer und die Notifier kann zweite, dritte Mal aufgerufen wird.
Wenn du "schließen" betätigst, dann wird die untere Schleife beendet.
Wenn die Schleife beendet wurde, kannst du auch nichts mehr darin ausführen. Logisch, oder?
Wenn du dagegen weiterhin Code in der unteren Schleife ausführen willst, dann solltest du sie eben nicht beenden!

Zitat:Im Timeout-Event steht gar nichts. Können Sie detailed erklären, wieso nicht direkt Timeout aufrufen.
Wenn nichts im Timeout-Event passiert, dann musst du es auch nicht aufrufen. Und schon gar nicht mit 0ms Delay!
Lösche dieses Ereignis einfach, wenn du es nicht brauchst…

Beide Fragen lassen sich leicht beantworten, wenn du dir dein VI mal im Highlight-Modus anschauen würdest…
Ach ja: ein Klick auf den Aufräum-Button würde auch nicht schaden!
(05.07.2016 13:15 )GerdW schrieb: [ -> ]Hallo katanad,

Zitat:Aber jetzt wenn ich Schließen drückt, funktioniert das Mess-Knopf nicht mehr. Was ich möchte ist, die obere Schleife läuft immer und die Notifier kann zweite, dritte Mal aufgerufen wird.
Wenn du "schließen" betätigst, dann wird die untere Schleife beendet.
Wenn die Schleife beendet wurde, kannst du auch nichts mehr darin ausführen. Logisch, oder?
Wenn du dagegen weiterhin Code in der unteren Schleife ausführen willst, dann solltest du sie eben nicht beenden!

Vielleicht das Problem liegt an meinem Deutsch. Ich versuche noch mal zu erklären. Was Sie geschrieben haben, verstehe ich schon und es ist natürlich logisch.
Was ich geschrieben ist, "funktioniert Mess-Knopf nicht mehr". Das Mess Knopf hat nichts zu tun mit der unteren Schleife.
Ich meine, auf der Oberfläche steht zwei Knöpfe -- Mess und Schließen. Nachdem Mess-Knopf gedrückt, wird die untere Schleife ausgeführt. Bei mir funktioniert das Kamera und zeigt live Bild. Dann möchte ich Kamera schließen("schließen" bestätigen) für einige Hardware Einstellungen(z.B. Ausrichtung von Kamera ändern) Danach möchte ich wieder das Kamera einschalten,aber geht es nicht("funktioniert Mess-Knopf nicht mehr")

Ach ja: ein Klick auf den Aufräum-Button würde auch nicht schaden!

Danke im Voraus
Hallo katanad,

das mit dem Autocleanup hast du aber noch nicht bemerkt, oder? Big Grin

Schau mal im Anhang.
Es ist auch empfehlenswert, den Schaltmodus der Buttons sinnvoll einzustellen…
Seiten: 1 2
Referenz-URLs