LabVIEWForum.de - Zähler, der Zählerstand abspeichert

LabVIEWForum.de

Normale Version: Zähler, der Zählerstand abspeichert
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2

Guest

Hallo alle miteinander,

ich als Anfänger habe mal wieder ein Problemchen.

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.

Mfg Karl-Heinz
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.Big Grin

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ß
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
Da gibts doch besimmt auch was von Ratiopha^H^H^H mit der Windows-Registry.. Rolleyes

Wobei natürlich ini oder xml schöner sind.

Gruß, Rob
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.
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.
' 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 ...
Wie Du das beschreibst, ist mir meine Lösung mit der ini-Datei echt lieber. Wink

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 ...
' 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:
[attachment=5761]
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.
@Lucki:
Das ist auch eine schöne Lösung, vor allem, wenn man viele Elemente sichern möchte.

Gruß Markus
Seiten: 1 2
Referenz-URLs