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!
Ich benötige für ein Projekt einen Zähler, das alleine ist ja noch machbar. Der Zähler soll kontinuierlich bei jedem Drücken eines Buttons um 1 hochzählen.
So, nun aber zum Problem. Wenn man die Vi schließt soll der Zählerstand quasi eingefroren oder abgespeichert werden und beim nächsten Start der letzte Wert des Zählers wieder angezeigt werden.
Als Idee hatte ich, den Zähler als SubVi mit einer Eventstruktur zu basteln, der automatisch eins hochzählt wenn die SubVi gestartet wird, aber ich habe keine Ahnung wie man den Zählerstand speichern kann.
Ich wäre über jede Anregung, Beispiel und vor allem Erklärung sehr dankbar.
Um etwas so zu speichern, dass wieder davon gebrauch gemacht werden kann, nachdem der rechner neu gebootet oder also das VI wieder geöffnet wurde geht nur via Datei.
Also, speichere den Wert in eine Datei. Da Du einen zahlenwert eines Elementes speichern möchtest, empfehle ich Dir, dies in einer XML Datei zu tun - dazu findest Du hier im Forum Beispiele.
Ich bin Fan davon geworden, da dies die unkomplizierteste Art ist, solche Daten wegzuspeichern.
Gruß
Mit einem freundlichen Wort und etwas Gewalt erreicht man viel mehr als nur mit einem freundlichen Wort. [...Marcus zu Lennier, B5]
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
Zähler, der Zählerstand abspeichert
Hallo,
ich hab' Dir was mit einer INI-Datei gebastelt. Die wird nach dem ersten Durchlauf automatisch in dem Verzeichnis dieses VIs abgespeichert und muss auch dort bleiben. Dann kannst Du das VI wieder starten und siehst Deinen letzten Zählerwert.
Gruß Markus
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Da gibts doch besimmt auch was von Ratiopha^H^H^H mit der Windows-Registry..
Wobei natürlich ini oder xml schöner sind.
Gruß, Rob
Bitte Beachten:
Die obenstehenden Texteile können unter Umständen Sarkasmus und Ironie enthalten, für nicht erkannten Sarkasmus oder nicht erkannte Ironie wird keine Haftung übernommen.
N.B.: "Multiple exclamation marks, " he went on, shaking his head, "are a sure sign of a deseased mind." - Terry Pratchett
Ergänzen möchte ich noch dies: Falls Dein Projekt (- unwahrscheinlich, aber könnte ja sein -) immer nur in der Entwicklungsumgebung laufen sollte, d.h wenn Du keine .exe erzeugst, geht es natürlich auch ganz einfach. Es gibt da die VI-Methode "Aktuelle Werte als Standard", mit der die momentanen Werte aller FP-Elemente als neue Standardwerte eingefroren werden.
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
Zähler, der Zählerstand abspeichert
Das muss er doch dann jedesmal vor dem Schließen manuell machen, oder geht das auch mit einem Property-Node?
Gruß Markus
' schrieb:Ergänzen möchte ich noch dies: Falls Dein Projekt (- unwahrscheinlich, aber könnte ja sein -) immer nur in der Entwicklungsumgebung laufen sollte, d.h wenn Du keine .exe erzeugst, geht es natürlich auch ganz einfach. Es gibt da die VI-Methode "Aktuelle Werte als Standard", mit der die momentanen Werte aller FP-Elemente als neue Standardwerte eingefroren werden.
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
' schrieb:Das muss er doch dann jedesmal vor dem Schließen manuell machen, oder geht das auch mit einem Property-Node?
Gruß Markus
ja, das geht, ist aber ein schmutziger Trick (ich glaube, ich hatte das schonmal erzählt hier ...) und das geht so:
Das VI, mit dem man Arbeitet nenn ich mal A ...
Da man die Standardwerte NICHT zur Laufzeit speichern kann muss man im VI A ein ein VI B haben, das beim Beenden vom A mittels VI Server gestartet wird. B öffnet wiederum A per VI Server und wartet so lange bis VI A den Status "idle" erreicht hat, liest dann von allen Controls die aktuellen Werte ein, setzt diese per Property als Standard-Wert und speichert das VI A. Beim nächsten Öffnen hat man dann die letzten Werte als Standardwert in den Controls.
Ist nicht wirklich einfach und ist nicht wirklcih schön. Mit einemer INI-Datei oder einem XML-File geht das ganze viel einfacher und viel schöner. Mit der Registry würde ich nichts machen, weil man viel einfacher mit einem Text-Editor in die INI-Datei oder das XML-File schauen kann als mit dem regedit in die Registry ...
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
Zähler, der Zählerstand abspeichert
Wie Du das beschreibst, ist mir meine Lösung mit der ini-Datei echt lieber.
Gruß Markus
' schrieb:ja, das geht, ist aber ein schmutziger Trick (ich glaube, ich hatte das schonmal erzählt hier ...) und das geht so:
Das VI, mit dem man Arbeitet nenn ich mal A ...
Da man die Standardwerte NICHT zur Laufzeit speichern kann muss man im VI A ein ein VI B haben, das beim Beenden vom A mittels VI Server gestartet wird. B öffnet wiederum A per VI Server und wartet so lange bis VI A den Status "idle" erreicht hat, liest dann von allen Controls die aktuellen Werte ein, setzt diese per Property als Standard-Wert und speichert das VI A. Beim nächsten Öffnen hat man dann die letzten Werte als Standardwert in den Controls.
Ist nicht wirklich einfach und ist nicht wirklcih schön. Mit einemer INI-Datei oder einem XML-File geht das ganze viel einfacher und viel schöner. Mit der Registry würde ich nichts machen, weil man viel einfacher mit einem Text-Editor in die INI-Datei oder das XML-File schauen kann als mit dem regedit in die Registry ...
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
' schrieb:Das muss er doch dann jedesmal vor dem Schließen manuell machen, oder geht das auch mit einem Property-Node?
Ich habe die Methode nie selbst probiert und wollte das jetzt nachholen. Ergebnis: ich war großmäulig, es funktioniert überhaupt nicht so wie ich mir das vorgestellt hatte.
So sollte es funktionieren:
Bei der Ausführung kommt die Fehlermeldung: "Dies Methode steht nur dann zur Verfügung, wenn sich das VI im Bearbeitungsmodus befindet". Ja, und im Bearbeitungsmodus, da wird doch überhaupt nichts ausgeführt, also auch die Methode nicht. Jetzt verstehe ich gar nichts mehr....
Noch etwas anderes:
Eines der mich am meisten faszinierenden VI's, die je hier gepostet wurde, hieß "Loading_SavingControlValues.vi" Ohne sich um die Elemente im einzelnen bemühen zu müssen, speichert es pauschal die Werte aller Elemente eines VI's ab und lädt sie auch wieder ein. Weiß jetzt nicht mehr wo das war, aber auch jeden Fall habe ich das VI noch. Bei mir kommen beim Aufruf Warnungen, die man aber ignorieren kann. Warum ich das VI "OpenCreateReplaceFile.vi" extra abgespeichert habe, weiß ich jetzt nicht mehr, wahrscheinlich weil es in LV8x nicht mehr in dieser Form existiert.
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
Zähler, der Zählerstand abspeichert
@Lucki:
Das ist auch eine schöne Lösung, vor allem, wenn man viele Elemente sichern möchte.
Gruß Markus
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------