LabVIEWForum.de - Producer-Consumer-Struktur - richtig

LabVIEWForum.de

Normale Version: Producer-Consumer-Struktur - richtig
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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)
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
' 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)
........ und hier ist ein Bsp. dazu in Verbindung mit einer State Machine.

Gruß Markus
' 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.
' schrieb:Speichere dein Enum als StrictTypeDef (Advanced...Customize)

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

C.
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.
' 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.
' 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.
' 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.
Seiten: 1 2
Referenz-URLs