Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Hi,
ich habe versucht den Vorschlag von Jens umzusetzen.
Bin mal gespannt ob man das so machen kann?
Testen konnte ich es noch nicht, da ich mein mein Enum für die Stats zwar in das Cluster bekomme aber es bei der Funktion"Cluster nach Namen aufbündeln" nicht aufgelesen bekomme. Geht nur der Funktion aufschlüsseln, aber das ist unpraktisch , da ich einmal in der Messen Schleife nur die Arrays reingebe und in der Eventstruktur nur die Stats vom Enum.
Aber seht selbst, dann wisst Ihr schon was gemeint ist.
PS: Die Eventstruktur ganz oben kann und sollte gelöscht werden.
Ja, stimmt. Werde ich in Zukunft tun.
In der unteren Schleife stimmt noch was nicht, nur Daten Speichern würde funktionieren (wenn das mit dem CLuster gehen würde), weil nur da das Timeout False in die Schleife geschrieben wird , wenn die Messung gestartet wurde.
Da muss ich nochmal drüber nachdenken.....
06.11.2015, 16:50 (Dieser Beitrag wurde zuletzt bearbeitet: 06.11.2015 16:57 von GerdW.)
- wenn du keinen TimeOut-Event benötigst, kann man eine -1 anschließen - oder einfach den Eventcase löschen…
- im Event "Filter erstellen" in mehreren Events hast du einen Verdrahtungsfehler
- die Messdatenerfassungs-Schleife läuft immer noch ungebremst (wenn "Messung starten"=FALSE)
- die Statemachine "Txt." ist momentan noch keine Statemachine, da du den auszuführenden State über eine Konstante fest vorgibst
- du hast so viele Dateien angehangen und trotzdem noch mindestens eine vergessen…
- dein Cluster mit den Datenarrays und dem Enum ist nicht typdefiniert…
Edit:
- die subVIs "Txt.Dateiposition festlegen" und "String_Array nach TB String" sind (IMHO) unnötig: wie sinnvoll ist es, genau eine einzige grundlegende LabVIEW-Funktion darin zu kapseln?
Hi,
habe in den nachfolgenden Beitrag (13) erwähnt das die obere Eventstruktur gelöscht werden soll.
In dem darunterliegenden Event Case ist eine -1 angeschloßen bzw. ich habs jetzt gelöscht.
Der Verdrahtungsfehler ist ja auch nur wegen dem Cluster mit den Arrays und dem Enum, ich kann dies nicht nach dem namen aufbündeln (schon erwähnt)
Das mit der unteren Schleife habe ich ebenfalls in Beitrag 13 erwähnt, das das noch nicht stimmt.
Ja ich hätte die SubVis nicht ranhängen sollen, sind ja auch ertsmal für den Strukturaufbau unrelevant.
Hatte es nicht typdefiniert, da es schon soviele Dateien waren (ist aber korregiert)
Primär geht es mir jetzt erstmal um das Cluster mit dem Arrays und dem Enum. Wieso kann ich es nicht nach dem Namen aufbündeln?
Danke für die bisherige Hilfe
Gruß HCO
06.11.2015, 17:23 (Dieser Beitrag wurde zuletzt bearbeitet: 06.11.2015 17:24 von GerdW.)
Zitat:Primär geht es mir jetzt erstmal um das Cluster mit dem Arrays und dem Enum. Wieso kann ich es nicht nach dem Namen aufbündeln?
Die Antwort findest du hier:
Zitat:Hatte es nicht typdefiniert, da es schon soviele Dateien waren (ist aber korregiert)
Genauer gesagt: du kannst es "nach Namen aufbündeln", wenn die Clusterelemente auch Namen haben.
Und wenn man einen Cluster ordentlich typdefiniert, dann haben die Clusterelemente auch vernünftige Namen…
Zitat:Habe nun 2 Queue Prozesse genommen und es klappt nun fast.
Sieht nett aus.
Zitat:klappt nur wenn ich imme wieder auf den Button "Messung starten" drücke.
So hast du es programmiert: die Consumer-Schleife wartet auf ein Element in der Befehls-Queue. Nur wenn ein (neuer) Befehl kommt, wird etwas konsumiert…
Zitat:Wo ist in diesem Vi mein Fehler und kann man es so machen mit der Statue Maschine?
Ich sehe keinen "Fehler" - alles funktioniert so, wie du es programmiert hast.
Ja, man kann es "so machen mit der Statemachine".
Was du vielleicht überdenken solltest: Formuliere deine Aufgabenstellung nochmal mit klaren Worten. Was soll wann passieren?
Das dann mit deinem aktuellen VI vergleichen…
Ziel ist es, dass wenn ich auf die Button "File erstellen" und File schließen" drücke, der Case in der State Maschine nur einmal ausgeführt wird.
Wenn "Messung starten" gedrückt wird dann sollen solange Messdaten (Arrays) ausgegeben werden bis "Messung beenden".
Habe es erstmal so gemacht, das wenn ich ein Button drücke eine -1 in die Dequeue ins Timeout gegeben wird und dann dann im Output Timeout Case bei False der Case des Buttons durchgeführt wird.
Danach springt die Dequeue wieder zu True.
Gemessen wird dann wenn " Messung starten " True auf gesetzt wird und in Timeout der Dequeue ne 0ms eingegeben wird, um im True case die ganze Zeit zu messen (solange bis Messung beenden ).
Nun ist aber der " Daten speichern" Case überflüssig, da ich es ja mit den 0 ms gelöst habe.
Funktionieren tuts ja , aber gibts nicht noch eine elegantere Lösung?
eine andere Idee:
Wenn die Messung aktiviert wird, setzt du den Timeout für die Eventsteuktur auf das gewünschte Messintervall und schickst im timeout den Messung-Befehl. Wenn die Messung beendet wird, setzt du den Timeout wieder auf -1...