VVI mit parallelen Loops u. Queues beenden - wie macht ihrs?

Allgemeine Themen, die in andere Unterforen nicht passen
Ответить
Andband
assistant
assistant
Сообщения: 132
Зарегистрирован: 26 окт 2009, 23:05
Версия LabVIEW: 7.1
Контактная информация:

VVI mit parallelen Loops u. Queues beenden - wie macht ihrs?

Сообщение Andband »

mal wieder parallele Schleifen...

Was fuer eine Variante zum beenden von Schleifen die auf Queueelemente warten nehmt ihr ?

A) Ein Stopcommand im Mainloop wird an alle parallelen Schleifen ueber eine lokale Variable uebertragen. Dazu muss man ja dann unbedingt einen Timeoutwert bei allen "Dequeue Element"-Schleifen haben, sonst wuerde diese Stop ja nicht gelesen werden, weil das Programm bei Dequeue Element haengt.

B) Lokale Variablen sind ja verpoent, also schickt man das Stopsignal an jede Queue. Man muss ja fuer jede Schleife eine Queue haben, da das erste "Dequeue Element" das Ereignis aus der Queue wegnimmt und die anderen Schleifen es dann nicht mehr mitbekommen

C) Einen gemeinsamen Run/Stop Notifier, damit man nicht an jede Queue extra das Ereignis schicken muss. Auch hier braucht man natuerlich einen Timeout fuer den Notifier, denn wenn dieser auf 'Run" steht, wuerde alles danach haengen, weil "Wait on Notifier" auf eine Aenderung im Notifier wartet. Diese kommt aber erst, wenn "Stop" gesendet wird. Ein Timeout fuer die Queue ist auch wichtig, denn wenn gerade nichts in der Queue ist und "Dequeue Element" also wartet kann ja nicht auf den Stop Notifier reagiert werden.
Wahrscheinlich ist es sinnvoll immer Timoeouts zu verwenden, wenn man mit Queues und Notifiern arbeitet.

D) Etwas bessers und schlaueres. Wenn ja was?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: VVI mit parallelen Loops u. Queues beenden - wie macht ihrs?

Сообщение Eugen Graf »

D !

Einfach: Queue in der Main Loop zerstören und Error Cluster in der jeweiligen Loop an Schleife Beenden anschliessen.
Komplex: Queue vom varianten Typ machen (z.B. Variant oder String) und die Aktion im Paket mitübergeben. Z. B. eine Aktion "Data" und die andere "Stop".
Andband
assistant
assistant
Сообщения: 132
Зарегистрирован: 26 окт 2009, 23:05
Версия LabVIEW: 7.1
Контактная информация:

Re: VVI mit parallelen Loops u. Queues beenden - wie macht ihrs?

Сообщение Andband »

Ok, "Einfach" ist echt schlau :)
aber Was ist der Unterschied von deiner komplexen Variante zu meinem B ? :)
(angemerkt: anstannt eines varianten Typs kann man doch auch einen Cluster nehmen oder?)

Verwendest du dann keine Timeouts wenn du mit Queues arbeitest? Braucht man ja eigentlich dann nicht, wenn man mit der "zerstoeren" - Variante arbeitet.
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: VVI mit parallelen Loops u. Queues beenden - wie macht ihrs?

Сообщение Eugen Graf »

Andband писал(а):Ok, "Einfach" ist echt schlau :)
aber Was ist der Unterschied von deiner komplexen Variante zu meinem B ? :)
(angemerkt: anstannt eines varianten Typs kann man doch auch einen Cluster nehmen oder?)
Stimmt, kein Unterschied. Cluster geht auch, nur wenn du viel zu viele Datentypen (Signale) hast, werden dein Cluster und die Datenmenge riesig groß.
Andband писал(а): Verwendest du dann keine Timeouts wenn du mit Queues arbeitest? Braucht man ja eigentlich dann nicht, wenn man mit der "zerstoeren" - Variante arbeitet.
Nein, ich verwende keine Timeouts, wozu eigentlich?
Andband
assistant
assistant
Сообщения: 132
Зарегистрирован: 26 окт 2009, 23:05
Версия LabVIEW: 7.1
Контактная информация:

Re: VVI mit parallelen Loops u. Queues beenden - wie macht ihrs?

Сообщение Andband »

Stimmt, kein Unterschied. Cluster geht auch, nur wenn du viel zu viele Datentypen (Signale) hast, werden dein Cluster und die Datenmenge riesig groß.
Bringt da ein varianter Datentyp einen Vorteil :) ? Wenn ich wirklich viele Datentypen uebertragen muss, dann macht das eine Boolsche-Element im Cluster das Kraut schaetzungsweise auch nicht mehr fett :D
Nein, ich verwende keine Timeouts, wozu eigentlich?
Jo hast Recht, man kriegt eigentlich wahrscheinlich wirklich alles irgendwie ohne Timeouts hin.

hm...
Was waere wenn eine Schleife ordentlich schnell Messwerte sampled und jeden z.B. in eine Datei schreibt.
Und in dieselbe Datei aber auch noch Daten aus einer langsamen RS232-Daten-Schleife mit aufgezeichnet werden sollen? Wenn kein neuer Wert da ist, soll der von zuvor genommen werden.
Wie macht man denn z.B. das ohne Timeout und ohne lokale Variablen?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: VVI mit parallelen Loops u. Queues beenden - wie macht ihrs?

Сообщение Eugen Graf »

Mit Schieberegister.
Andband
assistant
assistant
Сообщения: 132
Зарегистрирован: 26 окт 2009, 23:05
Версия LabVIEW: 7.1
Контактная информация:

Re: VVI mit parallelen Loops u. Queues beenden - wie macht ihrs?

Сообщение Andband »

Jo..war wohl ein Denkfehler meinerseits. Der wert von der RS232 Schleife steht ja solange im Notfier bis ein anderer 'kommt'. Insofern kann man in der schnellen Schleife den Notifier ja so oft lesen wie man will.
Danke mal wieder! :)
Ответить

Вернуться в «Allgemein»