![]() |
Numeric-Control Wert mit Radio-Button presetten - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Numeric-Control Wert mit Radio-Button presetten (/Thread-Numeric-Control-Wert-mit-Radio-Button-presetten) |
Numeric-Control Wert mit Radio-Button presetten - Tallyho - 13.08.2012 09:12 Hallo, Ich benutze ein VI mit While-Loop um Frequenz Generator Hardware über eine serielle Schnittstelle anzusteueren. Die Schnitstelle und das eigentliche ansteuern funktionieren. Der Ausgangsparameter wird ganz einfach berechnet: (User-Eingabe x Constant) + Offset. User-Eingabe ist mittels Numeric Control. Mit Radio-Buttons selektiert der User einen Frequenz Bereich. Bei anklicken eines Buttons wird einen Preset-Wert in den Numeric Control geladen, und werden Constant und Offset (neu)initialisiert. Der Preset-Wert, Constant, und Offset werden aus einer Datei eingelesen. Und jetzt wird's (für mich) schwierig... Der Num Control sollte beim anklicken eines Buttons nur 1 mal ge-preset werden - sonnst wird die User-Eingabe dauernd überschrieben. Deshalb habe ich die Radio-Buttons und presetten vom Num Control in einer Event-Structure untergebracht, mit Time-Out Event (ohne Time-Out benimmt es sich genau so wie ohne Event Structure). Das funktioniert - fast! Beim anklicken eines Buttons werden tatsächlich Num Control, Constant, und Offset korrekt initialisiert. Aber... bei jeder Iteration der While-Loop, in der kein Button angeklickt wird, ist der aktuelle Button-Wert ausserhalb der Event-Structure nicht verfügbar (nur der default Wert = Button 1), und werden Constant und Offset mit dem falschen Wert überschrieben. Was sollte ich ändern, damit es richtig funktioniert? VI anbei (einlesen der Datei und COM-Schnittstelle habe ich rausgestrippt). RE: Numeric-Control Wert mit Radio-Button presetten - GerdW - 13.08.2012 09:53 Hallo Tallyho, Zitat:mit Time-Out Event (ohne Time-Out benimmt es sich genau so wie ohne Event Structure). ... bei jeder Iteration der While-Loop, in der kein Button angeklickt wird, ist der aktuelle Button-Wert ausserhalb der Event-Structure nicht verfügbar (nur der default Wert = Button 1), und werden Constant und Offset mit dem falschen Wert überschrieben.Genau dieser TimeOutEvent ist dein Problem! 1) "ohne Timeout benimmt es sich wie ohne Event-Struktur" kann ich nicht nachvollziehen. Ohne TimeOut ist es immer noch eine Eventstruktur, die auf registrierte Events reagiert... 2) Im Timeout-Event gibst du leider keinen "richtigen" Wert aus, sondern verwendest "default if unwired". Ändere dieses und dein VI wird bedienbar... 3) Statt eines TimeOut solltest du lieber ein "Stopp-Button"-Event berücksichtigen. 4) Im "Band Selection"-Event solltest du die anderen Anzeigen setzen. Und nur im Event, nicht danach! 5) Tipp: LV speichert Werte in Schieberegistern... 6) Tipp: Es gibt auch "normale" Value-Properties und es gibt auch lokale Variablen, in die man Werte schreiben kann... RE: Numeric-Control Wert mit Radio-Button presetten - Tallyho - 13.08.2012 11:51 Hallo Gerd, danke für die schnelle Antwort! Deine Vorschläge 1, 2, 4 implementiert. Damit beim Time-Out die alten Werte am Ausgang der Event Structure erscheinen, habe ich dem While-Loop 2 Shift-Register hinzugefügt. Im Time-Out Fall werden die Register Ausgänge einfach 1:1 an die Event Strcuture Ausgänge weitergeleitet. Funktioniert einwandfrei. Vielleicht nicht die sauberste Lösung, aber: if it works, don't fix it! Dein 3. Punkt verstehe ich nicht ganz. Time-Out ist hier kein Fehlerfall... Bez. Punkt 6: anfangs habe ich versucht den Num Control mittels "Value" zu pre-setten, aber das hat irgendwie nicht funktioniert - mit "Value(Signal)" ging es dann... Frank RE: Numeric-Control Wert mit Radio-Button presetten - GerdW - 13.08.2012 12:03 Hallo Tallyho, noch ein paar Anmerkungen: [attachment=41059] - es ist keine gute Idee, die PropertyNode des Bedienelements "Manual freq input" umzubenennen in "Dial freq input": es verwirrt den Betrachter und ich habe schlechte Erfahrungen damit gemacht (ältere LV-Versionen neigten dann zu Abstürzen) - ich persönlich halte es für eine schlechte Idee, Zeilenumbrüche im Label eines Controls zu verwenden: der Eintrag in der Eventstruktur wird verstümmelt und man kann dafür immer die Caption verwenden - es ist Unsinn, sowohl ein TimeOut von 200ms als auch ein zusätzliches LoopIntervall von 200ms vorzugeben. Der TimeOut reicht aus, um die Schleife warten zu lassen - dieses Wandeln von Array nach DDT und gleich wieder zurück nach Array ist natürlich auch unnötig - schon mal über die Verwendung von Arrays für deine Anzeigen (Pre, IF, mult, Band) nachgedacht? Zitat:Deine Vorschläge 1, 2, 4 implementiert.- Leider nicht. Du setzt die verschiedenen Dinge immer noch nach der Event-Struktur... - Der Timeout ist immer noch unnötig. Diese Schleife wartet (momentan) nur auf zwei Dinge: Änderung der Bandauswahl und Stopp-Button. Falls die anderen Eingaben auch wichtig sind, mache weitere Events oder erstelle ein Event für mehrere Bedienelemente... RE: Numeric-Control Wert mit Radio-Button presetten - Tallyho - 13.08.2012 13:57 Hallo Gerd, "Manual freq input" gibt es nur in dem vereinfachten VI der Anlage. In dem kompletten VI ist es OK. Die Zeilenumbrüche werde ich beseitigen. Die Array --> DDT --> Array Umwandlungen sind da, weil ich in dem vereinfachten VI keine Init-Datei einlese (und die Datei mitschicken müsste), die einzulesenen Werte aber brauche. Zitat:Der Timeout ist immer noch unnötig.Timer-Constant = 0 setzten statt X mSek funktioniert. Tatsächlich den Time-Out Event Case entfernen aber nicht. Zitat:Du setzt die verschiedenen Dinge immer noch nach der Event-Struktur...Habe den "Manual frequency input" Num Control in einem zusätzlichen Event Case untergebracht (+ 3. Shift Register), und die Stopp-Taste ebenso in einem zusätzlichen Event Case gesteckt. Und funktioniert immer noch ![]() RE: Numeric-Control Wert mit Radio-Button presetten - GerdW - 13.08.2012 14:12 Hallo Tallyho, bei Eventstrukturen ist es (fast) immer schlecht, wenn man "default if unwired"-Ausgänge benutzt... Der Timeout-Case ist und bleibt unnötig, ebenso die zusätzliche Wartezeit in der Schleife... RE: Numeric-Control Wert mit Radio-Button presetten - Tallyho - 13.08.2012 14:55 OK, Time-Out Case jetzt auch weg; geht, kein Problem ![]() Less is more! Danke Gerd! RE: Numeric-Control Wert mit Radio-Button presetten - Lucki - 13.08.2012 21:50 Kleiner Tip am Rande: Diese vielen gleichartigen Strickmuster: [attachment=41074] lassen sich problemlos durch Cluster mit vordefinierten Werten ersetzen: [attachment=41075] was noch den Vorteil hätte, dass sich die Werte im Konfig-Tab editieren lassen. [attachment=41086] |