Hallo zusammen,
ich habe mal eine Frage:
Ich habe einen Cluster für die Eingabe in meiner Vi erstellt.
Die VI schickt bei jedem Schleifendurchlauf ein festes Datenpaket an eine Platine.
Wenn man bestimmte Werte einstellen möchte, geschieht das über den oben erwähnten Eingabecluster.
Bis jetzt sendet die VI die Daten aus dem Eingabecluster nur, wenn ein Sendbutton gedrückt wurde.
Kann ich das auch automatisieren? D.h. nur wenn ich einen Wert im Eingabecluster ändere, wird dieser gesendet und wenn nichts geändert wird, wird das Standartpaket gesendet.
Freu mich auf eure Antworten.
Viele Grüße
Heinz
Hi
In LabVIEW sind sehr viele VI's, insbesondere die elementaren, polymorph.
Also: Einfach den Cluster an eine Shiftregister anschliessen undmit dem Wert der vorherigen Iteration vergleichen.
Gruß Holger
Geht es bei deiner Frage um Änderungen, die der Anwender im GUI macht?
Du kannst auch auf einzelne Elemente eines Clusters auf Wertänderung per Event-Struktur abfangen.
Gruß, Jens
Ja, es geht mir um jegliche Änderungen die vom Anwender auf der GUI gemacht werden.
Mit Schieberegister habe ich schon versucht, hab aber da das Problem, dass es wenn ich die Cluster auf einen boolschen Baustein führe (X!=Y) bekomme ich als ergebnis keinen Boolschen Wert sondern wieder einen Cluster, und mit dem kann ich nix anfangen..
Wenn es sich bei den Wertänderungen um Bedieneingaben handelt, dann ist die Ereignisstruktur genau richtig. Und das Einfachste ist dann, den Ereigniscase auf Wertänderung des gesamten Clusters zu programmieren. Die Wertänderung eines x-beliebigen Elementes im Cluster löst das Ereignis aus. Im Case kannst Du dann das Senden an die Platine organisieren.
Es lohnt sich in der Regel, das ganze VI auf Ereignisse umstellen. D.h alle anderen Bedienelemente sollten dann auch in der Ereignisstruktur behandelt werden.
(04.10.2012 07:12 )horschtinator schrieb: [ -> ]die Cluster auf einen boolschen Baustein führe (X!=Y) bekomme ich als ergebnis keinen Boolschen Wert sondern wieder einen Cluster, und mit dem kann ich nix anfangen..
Versuche mal an diese Stelle einen Rechtsklick auf den Vergleichsoperator und aktiviere
Compare Aggregates, dann ist das Ergebnis ein einfachen boolscher Wert!
Gruß Holger
Hab mal versucht deinen Rat umzu setzen, komm aber gerade auf keinen grünen Zweig,
hab mal ein Bild angefügt, die Boolsche Konstante in der Struktur sorgt dafür, das der Sendevorgang in der SubVI ausgelöst wird.
Kann mir da mal jemand hilfestellung geben? Im Moment bleibt die VI einfach hängen und wartet darauf das ich abbreche...
Hallo horscht,
was soll man an einem Bild debuggen? Oder sollen wir nur drin rummalen?
- Man sieht nicht, was für ein Event du konfiguriert hast. Ist blöd, wenn man die Eventstruktur so klein macht, das der Eventtitel gekürzt wird...
- Man kennt deine subVIs nicht.
- Wozu eine Wartezeit programmieren, wenn du schon auf Events wartest (und außerdem noch ein Timeout-Event nutzen könntest)?
- Hast du etwa keinen Stopp-Button und ein zugehöriges Event programmiert?
- Hast du schon mal mit Highlighting debugged?
- Hast du überhaupt schon debugged?
Zitat:Im Moment bleibt die VI einfach hängen und wartet darauf das ich abbreche...
Falsch: Dein VI wartet auf die von dir programmierten Events!
-In meinem Bild soll man gar nichts debuggen, sondern schauen ob ich die Eventsruktur richtig besetzt habe.
-Richtig, die VI wartet auf die Eventstruktur
-Debuggt habe ich schon auch mit Highlighting
-Die Eventsruktur ist auf Valuechange vom Userinterfacecluster programmiert
-Die Vi sendet unabhängig von der Eventstruktur ein Livesignal an die Platine, deshalb die Wartezeit.
-Stoppbutton ist im Userinterfacecluster integriert, ich habe nicht gewusst, das man einen zusätzlichen Button in der Eventsruktur braucht
-Bisher habe ich noch nie mit Eventsstrukturen gearbeit, verzeih mir daher meine Unwissenheit darüber
Hallo Horscht,
Zitat:-In meinem Bild soll man gar nichts debuggen, sondern schauen ob ich die Eventsruktur richtig besetzt habe.
-Die Eventsruktur ist auf Valuechange vom Userinterfacecluster programmiert
Das "Schauen" war aus genannten Gründen nicht möglich...
Zitat:-Debuggt habe ich schon auch mit Highlighting
Hast du nicht geschrieben, auch nichts über die Ergebnisse des Debuggings...
Zitat:-Richtig, die VI wartet auf die Eventstruktur
-Die Vi sendet unabhängig von der Eventstruktur ein Livesignal an die Platine, deshalb die Wartezeit.
Du widersprichst dir selbst: entweder wartest du auf ein Event oder nicht. Dein Bild sagt, du wartest auf ein Event. Da die Eventstruktur innerhalb der Sendeschleife liegt, kannst du nicht "unabhängig" davon ein Signal senden... (Es sei denn, du verwendest ein TimeOut-Event anstatt der Wartefunktion, wie vorgeschlagen.)
Zitat:-Stoppbutton ist im Userinterfacecluster integriert, ich habe nicht gewusst, das man einen zusätzlichen Button in der Eventsruktur braucht
Auch das hast du nicht geschrieben. Am Bild sieht man das nicht. Man braucht keinen zusätzlichen Button, ich würde diesen aber nicht in einer Datenstruktur versenken...
Zitat:-Bisher habe ich noch nie mit Eventsstrukturen gearbeit, verzeih mir daher meine Unwissenheit darüber
Kein Problem, du kannst ja Fragen. Und die mit LabVIEW mitgelieferten Beispiele und Manuals studieren...