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!
Hi,
du kriegst ja automatisch nen Fehler, wenn du mit nem anderen VI zugreifst...den kannst du auswerten! Allerdings geht das mit dem "aussetzen" nicht so einfach, du musst erst die laufende Erfassung stoppen und dann neu initialisieren!
Einfacher: Du baust die eine Art "Server-VI", das nur die Datenerfassung behandelt...und die erfassten Daten schreibst du mit diesem Server in globale Variablen (Functional globals) oder in Queues...und liest in den verschiedenen VI's nur diese Daten aus!
Gruß
Achim
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
habe ich auch schon überlegt aber mir ist das Timing sehr wichtig.
Ich lasse die zeitgesteuerten Schleifen unterschiedlich laufen, d. h. mit verschiedenen Perioden und Prioritäten.
für was hast du zeitgesteuerte Schleifen? Doch hoffentlich nicht für die Abtastrate? Das kannste nämlich komplett in die Tonne treten! Der SW-Takt ist nicht genau!
Wenn du genaue Zeiten (= äquidistante Werte) haben willst, musst du das dem Treiber bzw. der Karte überlassen, nur der HW-Takt ist zuverlässig!
Gruß
Achim
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Hi,
ich weiß ja nicht wie deine Datenerfassung aussieht...aber egal ob die HW von NI ist oder von nem anderen Hersteller...du kannst da immer eine Abtastrate einstellen, und das ist dann der Takt!
Guck dir die entsprechenden Beispiele im LV Example Finder an...HW Input & Output...DAQmx...Analog Measurements
Gruß
Achim
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
ich greife mal diesen "betagten" Thread wieder auf, da mir die Beispiele von Achim ganz gut gefallen.
Ich habe also in meinem Hauptprogramm mehrere Buttons mit denen ich Unterprogramme auswählen kann. Wenn ein SubVI läuft, sollen einige nicht aufrufbar, andere hingegen schon. Das möchte ich realisieren, in dem ich die Controls des Hauptprgramms im Unterprogramm ausgraue. Wenn das Unterprogramm beendet wird, werden die Controls wieder sichtbar. Dazu nun zwei Fragen:
1. Ist das so sinnvoll oder gibt es auch noch eine andere Lösung?
2. In dem SubVI bekomme ich die Controls ja als Array von Refnums. Kann man die einzelnen Refnums den Controls irgendwie leicht zuordnen, oder muss ich immer ausprobieren, welcher Index des Arrays zu welchem Control passt?
' schrieb:1. Ist das so sinnvoll oder gibt es auch noch eine andere Lösung?
Mach ich auch immer so...es gibt aber sicher noch andere Möglichkeiten!
' schrieb:2. In dem SubVI bekomme ich die Controls ja als Array von Refnums. Kann man die einzelnen Refnums den Controls irgendwie leicht zuordnen, oder muss ich immer ausprobieren, welcher Index des Arrays zu welchem Control passt?
Grüßle
Häh?
Du kannst auf nem FP im Menü Edit>>Set tabbing order die Reihenfolge der Controls...und damit der Referenzen im [Controls]-Array sortieren...
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
>Hat mich auch interessiert, sehr gut. Mich würde interessieren, wie Deine Lösung aussehen würde, wenn die Anforderung folgendermaßen modifiziert würde:
>a) Bei geöffnetem SUB-VI soll am Hauptprogramm nichts mehr bedient werden dürfen. (Das Ereignis ist solange nicht beendet, solange das Sub-VI geöffnet ist)
>b) Bei Schließen des Sub-VIs sollen Werte aus dem Sub-Vi an des Hautprogramm übergeben werden.
>Bei direkten Aufruf des SUB-VIs aus dem Ereignis heraus hat man diese Eigenshaften quasi kostenlos, aber Dir wird wohl auch so eine elegante Möglichkeit einfallen, wie man das in Deinem Beispiel macht.
das würde mich auch sehr interessieren. vielleicht könnte das jemand machen, bitte :]
15.10.2009, 19:19 (Dieser Beitrag wurde zuletzt bearbeitet: 15.10.2009 19:20 von Lucki.)
' schrieb:>a) Bei geöffnetem SUB-VI soll am Hauptprogramm nichts mehr bedient werden dürfen. (Das Ereignis ist solange nicht beendet, solange das Sub-VI geöffnet ist)
>b) Bei Schließen des Sub-VIs sollen Werte aus dem Sub-Vi an des Hautprogramm übergeben werden.
Habe mir die vorangehenden Besipiele im Thread übehaupt nicht angesehen, aber was Du möchtest, ist doch der einfache Nomalfall.
zu b:
Die normale Datenübergabe vom Sub-Vi zum Hauptprogamm ist doch beim Beenden das SubVI über der Ausgänge des Sub-Vi, indem dort Drähte angeschlossen werden. Gibt es da ein Problem?
zu a:
Wenn das Sub-VI aufgerufen wird, dann blockiert man alle anderen geöffenten VIs mit der Einstellung "modal" am SubVI (rechte Maustaste / Ikon rechts oben/VI-Eigenschaften)
Was übrigens bei dieser Gelegnenheit mit gemacht werden solle: Der Abbruch des SubVIs mit dem Kreuz rechts oben sollte verhindert werden. Oder das wird als Ereignis abgefangen und wie ein ordentlicher Stop behandelt.