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!
' schrieb:Ein Muster für eine Klasse findest du hier (Beitrag #12).
Danke für den Link! Sehr invormativ!
Du meinst, das wird alles in einem SubVi/ Klasse erledigt? z.B.: Init, Konfig, Kalib, Messen, Freigeben, etc...
Jede Funktion oder Aufruf braucht doch unterschiedliche Werte? Bis jetzt hatte ich für jede Aktion ein SubVi vorgesehen.
Wenn ich jetzt ein SubVI über ein Enum selektiere (also die auszuführende Aktion), muss ich doch die dafür benötigten Werte übergeben.
z.B.: Die Init- Routine braucht keine dbl_Position??
Verstehe ich da was falsch?
Habe mal ein Bild von einem Testprogramm gepostet, wie ich mir das vorstelle (mit meinem beschränkten LV- Wissen erstellt).
Mache ich da jetzt was grundlegend falsch? Führt mein Weg in eine Sackgasse oder wird es so in der Art auch gemacht?
Bei meinem Programm gehe ich davon aus, dass jede Funktionsart (Init, Konfig, Kalib, Messen, Freigeben) die gleichen Variablen bracht und wenn es bei der Konfig. Routine ein Variant Typ ist.
Bin euch allen an dieser Stelle für eure Hilfe sehr Dankbar!
Besser geht es nicht!
' schrieb:Du meinst, das wird alles in einem SubVi/ Klasse erledigt? z.B.: Init, Konfig, Kalib, Messen, Freigeben, etc...
Von außen gesehen (Kapselung in OOP!) wird alles in einem SubVI gemacht. Was in diesem einen SubVI gemacht wird, ob da 1000 weitere SubVIs aufgerufen werden, steht auf einem anderen Blatt. Es von außen gesehen anderes zu machen als mit einem einzigen SubVI wirft diverse Probleme auf.
Zitat:Jede Funktion oder Aufruf braucht doch unterschiedliche Werte?
Richtig.
Deswegen wird dieses eine SubVI ja auch durch die Queue gesteuert. Die Queue enthält einen Datensatz, der entweder alle möglichen Daten aufnehmen kann (dann kann sich jede interen Funktionen seine Daten direkt holen), oder der einen Variant enthält (dann muss jede interen Funktion den Variant in eigene Daten umwandeln).
Zitat:Wenn ich jetzt ein SubVI über ein Enum selektiere (also die auszuführende Aktion), muss ich doch die dafür benötigten Werte übergeben.
z.B.: Die Init- Routine braucht keine dbl_Position??
Richtig. Beachte: Der Enumerator wird auch über die Queue übergeben. Ansonsten siehe oben.
Wichtig ist folgendes: Das SubVI darf nur ein einziges Mal im BD stehen. Alles andere wirft wieder Probleme auf.
Zitat:Verstehe ich da was falsch?
Nein. Dir fehlt nur noch die entsprechende Umsetzung in LV, also in datenflußtechnischen Möglichkeiten.
Zitat:Bei meinem Programm gehe ich davon aus, dass jede Funktionsart (Init, Konfig, Kalib, Messen, Freigeben) die gleichen Variablen bracht und wenn es bei der Konfig. Routine ein Variant Typ ist.
Bingo!
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
' schrieb:Habe mal ein Bild von einem Testprogramm gepostet, wie ich mir das vorstelle (mit meinem beschränkten LV- Wissen erstellt).
Mache ich da jetzt was grundlegend falsch? Führt mein Weg in eine Sackgasse oder wird es so in der Art auch gemacht?
Ob da jetzt ein grundlegender Fehler, also ein prinzipieller, drinnen ist, kann ich auf die Schnelle nicht beantworten. Mag sein, dass das so gehen wird. Auch wenn am Ende alles komplizierter wird. Bei Software besteht das "Problem", dass man auch mit weniger geeigneten Methoden ein gleiches Ziel erreichen kann.
Die Lösung mit einem einzigen SubVI hat halt diverse Vorteile (Kapselung, etc)
Ich ziehe die Lösung mit einem SubVI vor.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
' schrieb:Ob da jetzt ein grundlegender Fehler, also ein prinzipieller, drinnen ist, kann ich auf die Schnelle nicht beantworten. Mag sein, dass das so gehen wird. Auch wenn am Ende alles komplizierter wird. Bei Software besteht das "Problem", dass man auch mit weniger geeigneten Methoden ein gleiches Ziel erreichen kann.
Ok, es ging mir auch nicht um Inhaltliche Fehler, sondern einfach nur darum, dass kein Profi das VI sieht und sein erstes Kommentar ist: "Oh je!".
Aber danke, diese Reaktion habe ich bei dir nicht ausgelöst, von dem her dürfte es nicht mal so verkehrt sein
Das bedeutet, du würdest ein SubVi für die Hardware pro Gerät oder für Hardware allgemein erstellen, in das du mit einer Queue(Variant) hinein gehst. Im SubVI wird dann die Aktion aus dem Enum- Obj in der Queue die Statemachine gefüttert?
Noch ein paar Fragen am Rande ( Ich hoffe ich bin nicht unverschämt ) :
Wie bekomme ich die 3D Eigenschaft beim Cluster bzw. Unterpanel weg.
Wenn ich ein VI mit einem Cluster im Unterpanel lade, habe ich zwei 3D Schatten, welche mich stören, habe aber leider keine Abhilfe gefunden.
Wie bekomme ich eine Refnum in eine Applikationsreferenz und umgekehrt umgewandelt? Geht das?
' schrieb:Das bedeutet, du würdest ein SubVi für die Hardware pro Gerät oder für Hardware allgemein erstellen, in das du mit einer Queue(Variant) hinein gehst. Im SubVI wird dann die Aktion aus dem Enum- Obj in der Queue die Statemachine gefüttert?
Im Prinzip ja.
Meistens wird sich die Anzahl der SubVIs (Klassen) an der Anzahl der unabhängigen Hardware anpassen. Also eins für alle Analog-Eingänge, eins für Temperaturerfassung ...
Zitat:( Ich hoffe ich bin nicht unverschämt
Kennst du die Sesamstraße?
Zitat:Wie bekomme ich die 3D Eigenschaft beim Cluster bzw. Unterpanel weg.
Ganz einfach: Anstelle der modernen die klassischen Elemente verwenden.
Zitat:Wie bekomme ich eine Refnum in eine Applikationsreferenz und umgekehrt umgewandelt? Geht das?
Hier lohnt sich ein eigenes Thema. Beschreib auch, warum du das machen willst und an welcher Stelle.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).