Hallo Forum,
ich habe einen Tester mit 15 Kanälen der pro Kanal 3 Messungen erstellt.
Diese Messungen möchte ich auf der GUI anzeigen.
Aktuell habe ich nur einen Kanal angezeigt.
Diese Anzeige erfolgt über die Eigenschaft "Wert".
Bei 3 Feldern ist das auch kein Problem aber bei 3*15 = 45 Feldern ist das im Programm dann sehr aufgebläht und Handarbeit.
Könnte mir jemand einen Tip geben wie man das elegant lösen kann.
Der Test läuft seriell ab, so dass ich pro Durchlauf ein Daten Cluster fülle und die GUI updaten muss.
Danach startet der nächste Kanal und das Cluster bekommt neue Daten, bis alle 15 Durchläufe erledigt sind.
Das heißt, dass ich nicht am Ende alle Daten auf die GUI schreiben kann, sondern dass in jedem Durchlauf machen muss.
Ein 2D-Array funktioniert daher nicht, das war meine erste Idee.
Bin auf die Tips gespannt. Screenshot hängt an.
Hachiko
Mahlzeit Hachiko
(16.07.2024 08:56 )Hachiko schrieb: [ -> ]Das heißt, dass ich nicht am Ende alle Daten auf die GUI schreiben kann, sondern dass in jedem Durchlauf machen muss.
Ein 2D-Array funktioniert daher nicht, das war meine erste Idee.
Die Umsetzung als 2D Array sollte ohne Probleme mit der Build Array Funktion und Scheiberegister funktionieren. Ein 1D Array of Cluster könnte auch noch gut funktionieren, da kannst du die LED mit reinpacken.
Anbei ein kleines Beispiel. Ich habe aber keine Ahnung wie dein Programm aufgebaut ist, das soll erstmal zeigen wie es gehen könnte.
MfG Timo
Danke Timo,
Meine LED hat 3 Farben, das wird dann mit Deinem Beispiel schwierig.
Der Ansatz von Dir ist aber gut, da wird sich etwas ableiten lassen können.
Danke & Gruß
Hachiko
Hallo Hachiko,
Zitat:Der Test läuft seriell ab, so dass ich pro Durchlauf ein Daten Cluster fülle und die GUI updaten muss.
Danach startet der nächste Kanal und das Cluster bekommt neue Daten, bis alle 15 Durchläufe erledigt sind.
Das heißt, dass ich nicht am Ende alle Daten auf die GUI schreiben kann, sondern dass in jedem Durchlauf machen muss.
Ein 2D-Array funktioniert daher nicht, das war meine erste Idee.
Also hast du schon einen Cluster mit den Messwerten und musst jetzt nur noch ein Array of Clusters befüllen: was genau hindert dich daran?
Grundregel: musst du Dinge mehrfach machen, dann nimm eine Loop. Musst du gleiche Daten mehrfach anlegen, dann nimm ein Array!
Zitat:Diese Anzeige erfolgt über die Eigenschaft "Wert".
Wieso eine PropertyNode? Warum kein Draht ans Terminal?
THINK DATAFLOW…
(16.07.2024 12:04 )Hachiko schrieb: [ -> ]Meine LED hat 3 Farben, das wird dann mit Deinem Beispiel schwierig.
Ein Cluster Constant lässt sich bearbeiten, ob das nun ein bool, eine color box oder von mir aus auch ein String, du musst es nur befüllen wie du es brauchst.
Wenn du dich entschieden hast mach aber eine Type Def daraus, macht es einfacher und reduziert Fehler.
Grüße Timo
Danke für Eure Tips,
mein abgespecktes Programm hängt an.
Vielleicht bekommt Ihr das auch einfacher hin.
Gruß
Hachiko
Hallo Hachiko,
wenn es für dich so funktioniert, dann ist es ok…
Ein paar Anmerkungen:
- Ich bin ein Fan des 4224-ConnectorPatterns, du benutzt eher das 5335: gibt es einen speziellen Grund dafür? Die meisten NI-Funktionen kommen mit 4224 aus…
- Die Frontpanel deiner subVIs sind alle (?) maximiert: bitte einfach mal Ctrl-U im Frontpanel nutzen, um die FP-Elemente sinnvoll anzuordnen und gleichzeitig eine vernünftige Fenstergröße einzustellen!
- Ich bin kein Fan davon, Referenzen auf FP-Elemente in FGVs zu verfrachten, um dann in irgendwelchen subVIs diese FP-Elemente manipulieren zu können. Dafür kann man den QMH selbst benutzen…
- Deinem Beispiel fehlt sowohl ein Projekt-File als auch jegliche Typdefinitionen…
- Fehlerhanlding ist weder durchgängig noch überall sinnvoll implementiert:
Darren Nattinger on Error handling
- Die Wartezeit im WriteGUI-State ist zwar für die Demo nett, sollte aber in einem eigenen State erfolgen.
…
Hallo GerdW,
Vielen Dank für das Code-Review.
Ein paar Anmerkungen:
- Ich bin ein Fan des 4224-ConnectorPatterns, du benutzt eher das 5335: gibt es einen speziellen Grund dafür? Die meisten NI-Funktionen kommen mit 4224 aus…
Das habe ich eher unbewusst benutzt, werde mir das 4224 Muster aber zu Herzen nehmen
- Die Frontpanel deiner subVIs sind alle (?) maximiert: bitte einfach mal Ctrl-U im Frontpanel nutzen, um die FP-Elemente sinnvoll anzuordnen und gleichzeitig eine vernünftige Fenstergröße einzustellen!
Kannte ich noch nicht.
- Ich bin kein Fan davon, Referenzen auf FP-Elemente in FGVs zu verfrachten, um dann in irgendwelchen subVIs diese FP-Elemente manipulieren zu können. Dafür kann man den QMH selbst benutzen…
Ich kenne es nur so und war froh, dass ich von den Fäden weggekommen bin und sehr flexibel ohne viel Aktion damit arbeiten kann.
Was ist denn der QMH selbst ? Hast Du da vielleicht einen Code-Snippet zum Teilen ?
- Deinem Beispiel fehlt sowohl ein Projekt-File als auch jegliche Typdefinitionen…
Nur bei den FGVs.
- Fehlerhanlding ist weder durchgängig noch überall sinnvoll implementiert: Darren Nattinger on Error handling
Das ist noch eine offene Baustelle. Danke für den Hinweis.
- Die Wartezeit im WriteGUI-State ist zwar für die Demo nett, sollte aber in einem eigenen State erfolgen.
Guter Hinweis.
Gruß
Hachiko
Hallo Timo,
kannst Du mir sagen, welche Palette du benutzt hast.
War das LabView größer 2019.
Mir gefällt die Optik des Array-Index und die Felder.
Keine Ahnung wie man das so bauen kann.
Gruß
Hachiko
Hallo Hachiko,
Zitat:Ich bin kein Fan davon, Referenzen auf FP-Elemente in FGVs zu verfrachten, um dann in irgendwelchen subVIs diese FP-Elemente manipulieren zu können. Dafür kann man den QMH selbst benutzen…
Ich kenne es nur so und war froh, dass ich von den Fäden weggekommen bin und sehr flexibel ohne viel Aktion damit arbeiten kann.
Was ist denn der QMH selbst ? Hast Du da vielleicht einen Code-Snippet zum Teilen ?
- QMH (QueuedMessageHandler) ist die Programmstruktur, die du aktuell schon verwendest: du schickst Messages per Queue an eine Handler-Routine…
- LabVIEW verwendet keine "Fäden", sondern Drähte. Und LabVIEW ist eine
DATAFLOW-basierte Programmiersprache, die ihre Daten über eben jene Drähte transportiert. Warum willst du also von diesen Drähten "wegkommen"??? Damit wird dein Programm nicht übersichtlicher, im Gegenteil sieht man dann überhaupt nicht mehr, wo/wie/wann auf irgendwelche FP-Elemente zugegriffen wird!
(18.07.2024 08:52 )Hachiko schrieb: [ -> ]kannst Du mir sagen, welche Palette du benutzt hast.
War das LabView größer 2019.
Guten Morgen Hachiko,
das ist die NXG-Palette, scheint aber etwas kaputt gegangen zu sein als ich auf 2016 konvertiert habe
Übrigens habe ich bisher nie FGV verwendet in meinen Programmen
Grüße Timo