Hallo gifo,
Zitat:Unabhängig von dem Problem mit der Messung gleich zum Programmstart wird wieder nur das älteste Datenpaket ausgelesen?
Das kann ich nicht nachvollziehen.
In deiner Speicherschleife wird in jeder Iteration ein Element aus der Queue gelesen, egal ob gespeichert wird oder nicht. (Ich würde die Wartezeit aus der Speicherschleife entfernen, dies wird über das Dequeue erledigt, welches ja auf Daten in der Queue wartet…)
Was noch unsauber ist: Deine Verwaltung der File-Referenzen ist unschön. Du Öffnest innerhalb der Case-Struktur andauernd neue Dateireferenzen, schließt diese aber nicht. Dafür wird nach Ende der Speicherschleife eine einzige Referenz geschlossen, die aber (wenn gerade nicht gespeichert wurde) sogar eine "leere" Referenz ist…
Hallo GerdW,
ich denke ich habe den Fehler gefunden der für die kurze Speicherzeit verantwortlich war. Die File-Referenz habe ich jetzt außerhalb der Schleife angeordnet. Wie du schon geschrieben hattest, wurde in der vorigen Version ständig eine Datei geöffnet und in ihr kurz gespeichert. Weiter habe ich mir auch etwas einfallen lassen, bezüglich dass beim Programmstart automatisch gespeichert wird. Ich würde mich freuen wenn du da mal einen Blick drauf wirfst und mir deine Meinung dazu sagst. Ansonsten habe ich mir überlegt in dem Bedienelement für die „Zielzeit“ als Standartwert eine 0 zu speichern (Datenoperation). Das Löst das Problem zu mindestens beim aller ersten Programmstart.
Beim True-Zustand meiner Case-Struktur sind da die von mir verwendeten Konstanten erlaubt oder ist die Art wie ich das umgesetzt habe unüblich?
Viele Grüße,
Gifo
Hallo gifo,
ein VI zum Begutachten wäre nett…
Hallo gifo,
Zitat:Die File-Referenz habe ich jetzt außerhalb der Schleife angeordnet.
Nicht im hochgeladenen VI.
Du hast nur den Pfad außerhalb der Schleife, aber innerhalb wird trotzdem jedesmal eine neue Datei geöffnet und eine Referenz angelegt…
Zitat:Wie du schon geschrieben hattest, wurde in der vorigen Version ständig eine Datei geöffnet und in ihr kurz gespeichert.
Das ist immer noch so!
Nochmal: Es geht nicht um die Pfad-Angabe, sondern um das Datei-Öffnen und -Schließen!
Zitat:Weiter habe ich mir auch etwas einfallen lassen, bezüglich dass beim Programmstart automatisch gespeichert wird.
Ja genau: ein Rube-Goldberg-Konstrukt!
Zitat:IF TRUE THEN
TRUE
ELSE
Zeit verstrichen
ENDIF
Das ist eine klassische ODER-Verknüpfung!
Also müsste „TDMS: Öffnen“ auch außerhalb der Schleife! Wenn ich den Baustein jetzt auch außerhalb platziere
dann wird ja bereits eine Datei erstellt, ohne dass ich auf Speichern geklickt habe.
Wie kann ich dieses Problem umgehen? Mit einer Case-Struktur?
Hallo gifo,
wenn du nichts in die Datei speicherst, kannst du sie hinterher wieder löschen!
Wichtig ist nur, dass die Datei nur EINMAL geöffnet wird. Dein Problem ist, dass sie andauernd neu geöffnet wird! Ja, eine CASE-Struktur kann helfen: "IF FileRef invalid THEN OpenFile"!
Wenn ich „TDMS:Öffnen“ außerhalb der Schleife platziere dann werden die Werte des Bausteins ja nur beim Programmstart abgerufen, unabhängig davon ob ich diesen Baustein in einer Case-Struktur habe oder nicht.
Welche Möglichkeiten habe ich denn, damit der Baustein „TDMS:Öffnen“ abgefragt wird, während das Programm läuft und Speichern gedrückt wird?