RE: Aufbau Frontpanel mit sehr vielen Tabs, speichern aller Parameter in XML
Gut, es muss also nicht reentrant sein. Scheint mir klar, da sonst das VI mehrfach gleichzeitig laufen kann und dadurch der Trick entfällt. Soweit klar.
Habe in diesem Zusammenhang nochmals über die Semaphore nachgedacht und festgestellt, dass es so wie ich wollte völliger quatsch ist. Ich müsste natürlich die Semaphore beantragen, dann auf die FG zugreifen und dann die Semaphore wieder freigeben. Das kann ich logischerweise nicht an die FG selbst delegieren. Gut.
Dazu aber noch folgendes: Solange ich immer eine geschlossene Einheit an Daten auf einmal schreiben kann (d.h. ich kann direkt eine Untermenge der Daten ändern ohne davor Daten lesen zu müssen) ist alles sicher. Meinst du das mit atomar gekapselte FGV?
Wenn ich für jeden Satz von Einstellungen denn ich bestimmt immer auf einmal schreiben kann (weil die entsprechenden Controlls, welche die Daten erfassen auf dem selben Tab, bzw. im selben SubPanel liegen) eine Möglichkeit haben will genau nur diese zu schreiben/ändern habe ich folgende Optionen:
- Ein VI mit einem Eingang für jeden dieser Sätze (COMOptionen, CANOptionen) und einer Funktion für jeden dieser Sätze (SchreibeCOMOptionen, SchreibeCANOptionen,...)
- Ein polymorphes VI (eigene Abhandlung für COMOptionen Cluster und für CANOptionen Cluster) das dann wieder auf immer die selbe FGV zugreift (natürliche mit Schutz dieser critical section)
- Ein VI mit Variant als Eingang für die Datensätze und einem Eingang um die Funktion zu steuern.
Jetzt frage ich mich bei Variant: Man könnte ja die Daten mit Attributen versehen (COMOptionen als Attribut und das zugehörige Cluster als Daten). Dann müsste man als Option nur noch schreiben auswählen. Intern würde dann selbst erkannt um welche Daten es sich handelt ("Get Variant Attributes"). Oder man könnte für jeden Satz (COMOptionen, CANOptionen,...) eine eigene Funktion definieren (SchreibeCANOptionen, SchreibeCOMOptionen). Dann würde intern entsprechend der type beim "Variant to Data" umgeschaltet.
Wie macht ihr das und warum?
Den Datenausgang halte ich wohl als Cluster, gebe immer alles aus und trenne dann mit "Unbundle by name".
|