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 

Dieses Thema hat akzeptierte Lösungen:

Frage zu Queued state machine



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!

15.03.2013, 09:28
Beitrag #1

montanaro Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 58
Registriert seit: Oct 2006

8.6+2009+2012+2014
2001
DE

39048
Sonstige
Frage zu Queued state machine
Hallo,
ich möchte eine Aufgabe programmieren und benutze für diese eine queued state machine.
In meinem HauptVI erzeuge ich eine Queue mit Namen und Datentyp wie im Anhangbeispiel.
Als Struktur verwende ich die producer/consumer Technik. Bis hier alles klar. In einem weiteren
VI (welches unter anderem beim Start des HauptVI dynamisch geladen wird) möchte ich in meine
Queue (die vom HauptVI) Daten schieben. Um dies zu realisieren hatte ich eine Queue-Referenz erzeugt
(im HauptVI, Mauszeiger über den Queue Ausgang, rechte Mauscklick, erstelle Bedienelement), diese dann in das
zweite VI kopiert. Diese Reference habe ich dann mit dem Queue Element einfügen verbunden. Leider funktioniert das nicht, im
Fehlerausgang des Queue-Elemt einfügen bekomme ich dann den Fehler 1.
Ich habe dann das zweite VI umgebaut (wie im Anhang) und jetzt funktioniert es. Leider kann ich dem nicht so recht folgen.
Kann mir bitte jemand eine Erklärung dafür geben. Wenn ich in meinem zweiten VI wieder das Queue Element anfordern verwende, so meine ich,
ich habe dann ja eine neue Queue erzeugt und müsste diese dann am Ende auch wieder freigeben. Aber wo ist dann hier die Referenz auf die Queue
im HauptVI?
Bitte um Erklärung. Danke.
Montanaro


Angehängte Datei(en)
12.0 .vi  main.vi (Größe: 20,74 KB / Downloads: 182)

12.0 .vi  Check_user.vi (Größe: 18,59 KB / Downloads: 134)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.03.2013, 09:59
Beitrag #2

THL Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 109
Registriert seit: May 2011

2012
2009
EN


Deutschland
RE: Frage zu Queued state machine
Du brauchst keine Referenz im eigentlichen Sinne. Es genügt, wenn die Queue im zweiten VI denselben Namen hat, wie die in deinem Haupt-VI.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.03.2013, 10:12
Beitrag #3

montanaro Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 58
Registriert seit: Oct 2006

8.6+2009+2012+2014
2001
DE

39048
Sonstige
RE: Frage zu Queued state machine
Danke für die schnelle Antwort.
Ist das zweite VI dann korrekt? Realisiert man dann auf diese Weise eine Referenz, mit einem neuen Queue Element anfordern mit demselben Namen wie die Queue im HauptVI? Ich muss dann imzweiten VI die angeforderte Queue freigeben. Gibt es dann nicht ein Problem mit der Queue mit demselben Namen im HauptVI?
Entschuldige die ganzen Fragen, aber so recht verstehe ich das noch nicht.
Danke.
Gruss
Montanaro
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.03.2013, 10:51 (Dieser Beitrag wurde zuletzt bearbeitet: 15.03.2013 10:52 von jg.)
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Frage zu Queued state machine

Akzeptierte Lösung

Ich kann mir aktuell deine VIs nicht anschauen, ich warte noch auf die SP1-DVDs von lv12_img, aber ich fasse einmal zusammen:

Es gibt 2 Möglichkeiten, eine Queue/Notifier Referenz innerhalb eines Programms bzw. einer Instanz zu verteilen:

1) Man erzeugt 1x zentral die Queue/Notifier per "Obtain" VI. Diese Referenz gibt man per Draht/globaler Variable/FGV oder sonst (aber nicht per "Create Constant") an weitere SubVIs weiter. Diese RefNum muss dann am Ende des Programms nur 1x gelöscht werden.

2) Man erzeugt mehrfach per "Obtain" VI Refnums. Solange der Name der Queue/Notifier und natürlich auch der Datentyp identisch sind, greift man dann auf dieselbe Queue zu. Für jedes "Obtain" VI sollte man aber ein "Destroy Queue" einsetzen, damit der Speicher wieder freigegeben wird.

Alles klar?

Gruß, 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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.03.2013, 12:25
Beitrag #5

Kiesch Offline
LVF-Stammgast
***


Beiträge: 394
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04103
Deutschland
RE: Frage zu Queued state machine
Alternative zu mehreren Destroys wäre den Parameter "Eliminate Queue" auf True zu setzen. (Standard false) beim Destroy Queue. Damit wird die Referenz freigegeben und alle noch wartenden Queues brechen mit Fehler ab (kann sinnvoll sein um das VI ganz zu beenden). Probleme könnte bereiten, dass dann eventuell Daten nichtmehr verarbeitet werden (bei Destroy bevor die gelesen wurden).

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.03.2013, 12:38
Beitrag #6

montanaro Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 58
Registriert seit: Oct 2006

8.6+2009+2012+2014
2001
DE

39048
Sonstige
RE: Frage zu Queued state machine
jg: Vielen Dank, jetzt habe ich es verstanden. Der erste Punkt erklärt meine Verwirrung.
Die saubere Programmierlösung wird wohl die mit Punkt 1 eins.
Kiesch: Vielen Dank für die Zusatzinfo.
Gruss
Montanaro
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Machine learning Hubert R. 3 1.060 29.08.2023 10:10
Letzter Beitrag: Hubert R.
  Programm beenden State Machine simcum 3 2.529 17.10.2020 20:57
Letzter Beitrag: BNT
  Queued State Machine: IDLE Optimierung ALuehmann 3 4.084 14.02.2017 14:00
Letzter Beitrag: HVo
  State machine und Typdefinition meta_ir 4 3.672 09.01.2017 12:47
Letzter Beitrag: meta_ir
Question Frage zu "queued state machine" Architektur joptimus 4 5.158 05.08.2016 14:34
Letzter Beitrag: joptimus
  Queued Message Handler Design galilio 3 5.302 14.07.2016 15:34
Letzter Beitrag: Freddy

Gehe zu: