LabVIEWForum.de - Event-Handling für File Control

LabVIEWForum.de

Normale Version: Event-Handling für File Control
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

für ein Datenkonversionstool, das ich mit LabVIEW realisieren will möchte ich auf Eventhandling zurückgreifen. Das Problem sieht folgendermassen aus:
Die Oberfläche enthält ein File-Control sowie diverse Schalter um irgendwelche Parameter der Auswertung zu verändern, sowie ein XY Graph um das Ergebnis der Auswertung anzuzeigen. Wenn ein Change Value-Event am Filecontrol auftritt soll die dort eingetragene Datei eingelesen werden und als Input für die Auswertung zur Verfügung stehen. Dann soll man aber weiterhin irgendwelche Parameter verändern können und das Ergebnis am XY Graph ausgegeben werden. Für die Auswertung und Anzeige verwende ich nun eine Endlosschleife und möchte das Eventhandling für den Filecontrol einbinden. Leider weiss ich aber nicht, wie ich den ausgelesenen File-Inhalt dauerhaft für die Auswertung zur Verfügung stellen kann, ohne ständig die Datei neu auszulesen. Über irgendwelche Variablen? Wie könnte man das am einfachsten realisieren.

Vielen Dank für eure Tipps...
Am besten mit einem Schieberegister. Linksklick auf die While-Schleife -> Add Shift Register.

Gruss, Eugen
Du musst einen "Rechtsklick" (nicht "Linksklick") auf die Whileschleife machen und das Schieberegister dann auch am besten vorinitialisieren.

Gruß Markus
Vielen Dank für eure Antworten. Die Idee mit dem Schieberegister hatte ich auch schon - und zwar sollte also die Auswertung in einer Endlosschleife ablaufen, das Schiebereigster liefert einerseits die Daten zur Verarbeitung, schleift sie aber auch für die nächste Runde unverändert durch. Das Problem ist nun aber: wie kann ich es erreichen, dass das Event "Datei laden" die neuen Daten importiert und den Inhalt des Schieberegisters aktualisiert -> die Eventstructure hat ja keine Schieberegister. Und wenn die Event-Struktur sich ausserhalb der Endlosschleife befindet wird sie ja nie abgearbeitet...
Tut mir leid falls die Frage doof ist, ich fange erst gerade an mich überhaupt mit Events zu beschäfigen. Wenn ihr mir ausserdem noch einen Tipp geben könnt, wo die Verwendung von Events gut und ausführlich erklärt ist, würde ich mich auch freuen - die NI Dokumentation dazu finde ich, naja, etwas dürftig...

Vielen Dank und viele Grüße
Oli
Also ein Schieberegister liefert dir ja auf der linken Seite das, was du in der vorhergegangenen Runde rechts reinverbindest.

Ziehst du jetzt einfach einen Draht von links nach rechts durch, so hast du ständig die Daten gleich.
Bei deinem Event verbindest du dann einfach die neuen Daten mit dem Register.

Aber was versuch ich da irgendwas zu erklären, sieh dir einfach das Bild an, dann weißt du was ich meine (frei nach Luckis Signatur über Vis und WorteWink)

Gruß

edit: In dem Screenshot fehlt natürlich noch eine Timeoutkonstante, aber das Prinzip sollte erklärt sein.
' schrieb:In dem Screenshot fehlt natürlich noch eine Timeoutkonstante, aber das Prinzip sollte erklärt sein.

Vielen Dank, jetzt ist mir das doch einiges klarer.
Aber vielleicht doch noch eine doofe Frage fürs Verständnis: Wenn ich jetzt also Event-Handling verwende und quasi z.B. alle 20ms ein TimeOut Event auslöse (um den Inhalt des Schieberegisters auf der linken Seite in das Register rechts durchzuschleifen.), verursache ich dann wirklich weniger CPU Last als wenn ich sowieso das ganz normale Polling in einer Endlosschleife mit einem 20ms Delay benutze?
' schrieb:Vielen Dank für eure Antworten. Die Idee mit dem Schieberegister hatte ich auch schon - und zwar sollte also die Auswertung in einer Endlosschleife ablaufen, das Schiebereigster liefert einerseits die Daten zur Verarbeitung, schleift sie aber auch für die nächste Runde unverändert durch. Das Problem ist nun aber: wie kann ich es erreichen, dass das Event "Datei laden" die neuen Daten importiert und den Inhalt des Schieberegisters aktualisiert -> die Eventstructure hat ja keine Schieberegister. Und wenn die Event-Struktur sich ausserhalb der Endlosschleife befindet wird sie ja nie abgearbeitet...
Tut mir leid falls die Frage doof ist, ich fange erst gerade an mich überhaupt mit Events zu beschäfigen. Wenn ihr mir ausserdem noch einen Tipp geben könnt, wo die Verwendung von Events gut und ausführlich erklärt ist, würde ich mich auch freuen - die NI Dokumentation dazu finde ich, naja, etwas dürftig...

Vielen Dank und viele Grüße
Oli

Ok, ich habe glaube ich dein Problem verstanden. Du kannst aber einen unsauberen Trick versuchen:

mach die Eventstruktur innerhalb deiner While-Schleife, wie Kvasir vorgeschlagen hat, aber mit einem kleinen Timeout, und platziere deinen completten While-Schleifen-Inhalt in das Timeout-Event.

Ich würde es aber irgendwie anders lösen, es gibt ja viel zu viele Möglichkeiten dafür. Aber die Lösung ist halt am einfachsten und am dreckigsten.

Gruss, Eugen
Andere Möglichkeit wäre gar keine Event-Struktur zu benutzen, sondern alte Methode = Case-Struktur. Vergiss aber nicht deinem Button die Eigenschaft "latch" zuzuweisen.

Gruss, Eugen
@ Eugen:
Warum ist diese Methode dreckig? Ich mach das eigentlich immer so. Bzw. verwende ich eine StateMaschine (also Case Struktur) und pack vor die Case Struktur noch das Event. Dadurch kann ich dann im Event die Cases schalten.
Sehe da nicht, warum man das anders lösen sollte.

@Oli:
Weniger CPU Last verursacht das nicht. Aber du kannst nun halt auf Events zugreifen. Wie Eugen aber schon schrieb, eine Case Struktur tut es in deinem Fall vermutlich auch.
' schrieb:@ Eugen:
Warum ist diese Methode dreckig? Ich mach das eigentlich immer so. Bzw. verwende ich eine StateMaschine (also Case Struktur) und pack vor die Case Struktur noch das Event. Dadurch kann ich dann im Event die Cases schalten.
Sehe da nicht, warum man das anders lösen sollte.

@Oli:
Weniger CPU Last verursacht das nicht. Aber du kannst nun halt auf Events zugreifen. Wie Eugen aber schon schrieb, eine Case Struktur tut es in deinem Fall vermutlich auch.


Schau mal hier, da steht was ich dazu denke:

http://www.LabVIEWforum.de/index.php...ost&p=22766

Gruss, Eugen
Seiten: 1 2
Referenz-URLs