LabVIEWForum.de
Producer-Consumer-Struktur - richtig - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Producer-Consumer-Struktur - richtig (/Thread-Producer-Consumer-Struktur-richtig)

Seiten: 1 2


Producer-Consumer-Struktur - richtig - Curtis Newton - 21.08.2008 14:35

Hallo,

da meine Programme jetzt etwas größßer werden, muss ich mir ja mal Gedanken um die Struktur machen. Für größere Programme geeignet erscheint mir die Producer-Consumer-Struktur. Ich habe mal ein Beispiel, um mir das Konzept zu verdeutlichen, erstellt. Anbei. Ist das soweit richtig?

Zwei Fragen habe auch zusätzlich noch:
1. Ich bekomme für die beiden Buttons folgende Warnmeldung: "Der Anschluss für dieses Bedien- oder Anzeigeelement auf dem Frontpanel ist nicht verbunden." Ja, wohin soll ich es denn verbinden? Ich brauche den Wert doch garnicht, sondern nur die beiden Dinger als Buttons.
2. Immer, wenn ich einen Case bei dem enum "Queue anfordern" hinzufüge, muss ich alle enums bei "Element einfügen" (also in der oberen while-Schleife) neu erstellen. Geht das auch komfortabler?

Danke!

C.
[attachment=14098]

[attachment=14099](LV 8.51)


Producer-Consumer-Struktur - richtig - Y-P - 21.08.2008 14:50

Sieht doch schon mal gut aus.

Dein Problem mit dem Enum kannst Du mit einer Typedef lösen. Dazu gibt's auch hier im Forum Beispiele.

Gruß Markus


Producer-Consumer-Struktur - richtig - Achim - 21.08.2008 14:51

' schrieb:2. Immer, wenn ich einen Case bei dem enum "Queue anfordern" hinzufüge, muss ich alle enums bei "Element einfügen" (also in der oberen while-Schleife) neu erstellen. Geht

Speichere dein Enum als StrictTypeDef (Advanced...Customize)


Producer-Consumer-Struktur - richtig - Y-P - 21.08.2008 14:53

........ und hier ist ein Bsp. dazu in Verbindung mit einer State Machine.

Gruß Markus


Producer-Consumer-Struktur - richtig - IchSelbst - 21.08.2008 14:59

' schrieb:1. Ich bekomme für die beiden Buttons folgende Warnmeldung: "Der Anschluss für dieses Bedien- oder Anzeigeelement auf dem Frontpanel ist nicht verbunden." Ja, wohin soll ich es denn verbinden? Ich brauche den Wert doch garnicht, sondern nur die beiden Dinger als Buttons.
Ignorieren.

Sobald das Programm keinen Fehler mehr hat, erscheint auch diese Warnung nicht mehr. So ist es zumindest bei mir.


Producer-Consumer-Struktur - richtig - Curtis Newton - 21.08.2008 18:55

' schrieb:Speichere dein Enum als StrictTypeDef (Advanced...Customize)

Wo? Finde ich nicht. Ich habe ein dt. LabVIEW...

C.


Producer-Consumer-Struktur - richtig - Y-P - 21.08.2008 21:07

Hier.... (ist zwar englisch, aber so müsstest Du es finden).

[attachment=14110]

Gruß Markus

' schrieb:Wo? Finde ich nicht. Ich habe ein dt. LabVIEW...

C.



Producer-Consumer-Struktur - richtig - Curtis Newton - 22.08.2008 09:32

' schrieb:Sieht doch schon mal gut aus.

Dein Problem mit dem Enum kannst Du mit einer Typedef lösen. Dazu gibt's auch hier im Forum Beispiele.

Gruß Markus

Wie mache ich das denn, wenn sich Daten ändern und in Controls neu geschrieben werden? In meinen Beispiel werden ja immer beide Controls (Number und String) neu mit Daten gefüllt, wenn die Consumer-Schleife was gemacht hat. Packe ich dann die Controls in die Case-Struktur? Aber was ist, wenn mehrere Cases das gleiche Control füllen? Operiere ich dann mit lokalen Variablen?

Danke!
C.


Producer-Consumer-Struktur - richtig - IchSelbst - 22.08.2008 11:59

' schrieb:Packe ich dann die Controls in die Case-Struktur? Aber was ist, wenn mehrere Cases das gleiche Control füllen? Operiere ich dann mit lokalen Variablen?
Ich verstehe deine Frage nicht.

Machs so wie im Bild (untere Schleife) in deinem ersten Beitrag, also Controls außerhalb der Case-Sequenz. Dann kannst du von mehreren Cases aus auf die Controls schreiben. Nämlich immer dann, wenn die Sequenz beendet wird.


Producer-Consumer-Struktur - richtig - Curtis Newton - 22.08.2008 12:29

' schrieb:Ich verstehe deine Frage nicht.

Machs so wie im Bild (untere Schleife) in deinem ersten Beitrag, also Controls außerhalb der Case-Sequenz. Dann kannst du von mehreren Cases aus auf die Controls schreiben. Nämlich immer dann, wenn die Sequenz beendet wird.

Aber dann schreibe ich doch immer in alle Controls, auch wenn sich die betreffenden Daten nicht geändert haben (in meinem Beispiel wird auch in Number geschrieben, auch wenn sich nur String geändert hat). Oder macht das nichts, weil LabVIEW merkt, wenn sich die Daten nicht geändert haben und ensprechend nichts tut?

Danke!
C.