INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Zu langsames schreiben in Datei: Daten vor Schreiben in Datei "zwischenspeichern" ?



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!

21.11.2011, 16:39
Beitrag #1

Sternhagel Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: Feb 2011

10
2010
EN


Deutschland
Zu langsames schreiben in Datei: Daten vor Schreiben in Datei "zwischenspeichern" ?
Hallo,

ich habe einen While-Loop und während eines Durchlaufs werden zu unterschiedlichen Zeiten drei Unterschiedliche Werte berechnet.

Jetzt würde ich gerne alle diese Werte mit dem jeweiligen Zeitpunkt an dem der jeweilige Wert ermittelt wurde in eine Datei speichern. Speichern kann ich die Werte mit dem "Write to Spreadsheed-File.vi" welches bei jedem Durchlauf den Wert in eine Datei schreibt, bzw. den anderen Werten in der Datei anhängt.
Das Problem ist nun, dass dieser Speichervorgang scheinbar einige ms dauert (die Datei muss wahrscheinlich ja immer wieder geöffnet und wieder geschlossen werden). Und selbst diese wenigen ms bremsten mein System aus!

Ich frage mich nun, ob es nicht irgendwie die Möglichkeit gibt, alle Werte im Speicher irgendwie zu zwischen-speichern, und erst zum Ende wird dann alles in eine Datei geschrieben?

Da ich die Datenermittlung ein- und wieder ausschalten will, kann ich denke ich nicht die Index-Funktion des While Loopes benutzen.

Gibt es vielleicht eine andere Möglichkeit die Werte möglichst schnell zwischen zu speichern und sie dann am Ende abzuspeichern? Oder hat jemand eine andere Idee?

Viele Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.11.2011, 17:09
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Zu langsames schreiben in Datei: Daten vor Schreiben in Datei "zwischenspeichern" ?
Hallo Sternhagel,

Ideen:
- Producer-Consumer-Schema: Parallele Schleifen
- Queues nutzen
- Beispiele dazu in der LabVIEW-Hilfe anschauen

Zitat:ob es nicht irgendwie die Möglichkeit gibt, alle Werte im Speicher irgendwie zu zwischen-speichern, und erst zum Ende wird dann alles in eine Datei geschrieben?
Abhängig von der Datenmenge ist das eine eher schlechte Idee. Was passiert mit deinen Daten, wenn das Programm aufgrund Speichermangels abstürzt?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.11.2011, 18:54
Beitrag #3

Sternhagel Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: Feb 2011

10
2010
EN


Deutschland
RE: Zu langsames schreiben in Datei: Daten vor Schreiben in Datei "zwischenspeichern" ?
Naja wegen Speichermangel abstürzen sollte, dann wäre das auch nicht so schlimm. Dann muss ich die Messung halt etwas anpassen, damit nicht so viele Daten ausgelesen werden. Also das wäre nicht das Problem.

Na ich versuche es dann mal mit Queues. Ich hatte eigentlich gehofft, dass es da eine einfachere Lösung gibt :-)

Vielen Dank!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.11.2011, 19:41
Beitrag #4

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Zu langsames schreiben in Datei: Daten vor Schreiben in Datei "zwischenspeichern" ?
Der einfachste Methode, die Werte zwischenzuspeichern, wäre die Indexierung des Ausgangs der For-Schleife. Wenn man sie verläßt, hat man das Array aller erzeugten Werte.

Zu Speicherzeit ist zu sagen, daß das "Write to Spreadshett" File so etwas wie eine eierlegende Wollmilchsau ist, vergleichbar mit einem Express-VI. U.a muß man sich nicht um Öffnen und Schließen kümmern, das macht bei jedem Zugriff das VI. Entsprechend langsam ist es dann.

Bessser ist, das Öffnen, Schließen der File und die Konvertierung der Daten in Text selbst zu besorgen und diesen reinen Text dann "In Textdatei speichern"

Beispiel:
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.11.2011, 22:15
Beitrag #5

Sternhagel Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: Feb 2011

10
2010
EN


Deutschland
RE: Zu langsames schreiben in Datei: Daten vor Schreiben in Datei "zwischenspeichern" ?
Hallo zusammen,

Wie ihr in der Angehängten Skizze sehen könnt, habe ich es nun folgendermaßen "gelöst":

Bei jedem Durchlauf wird eine neue Zeile in der Matrix hinzugefügt. Ich habe es nun noch nicht auf Geschwindigkeit getestet (das mache ich wohl erst Mittwoch), aber eigentlich sollte das so doch super schnell gehen, da erst ganz zum Schluss die Werte in die Datei gespeichert werden!

Was micht noch stört ist, dass ich zwei Mal die Matrix transponieren muss! Kann ich das irgendwie umgehen?

Viele Grüße


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.11.2011, 09:04 (Dieser Beitrag wurde zuletzt bearbeitet: 22.11.2011 09:06 von GerdW.)
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Zu langsames schreiben in Datei: Daten vor Schreiben in Datei "zwischenspeichern" ?
Hallo Sternhagel,

ganz allgemein zu deiner "Skizze":
Du willst ganz sicher nicht mit Matrizen arbeiten - was du brauchst, sind Arrays!

Zitat:Was micht noch stört ist, dass ich zwei Mal die Matrix transponieren muss! Kann ich das irgendwie umgehen?
Wurde doch schon gesagt: Autoindizierung am Schleifentunnel nutzen! Wenn du das Gefühl hast, in der erzeugten Datei wären Spalten/Zeilen vertauscht, kannst du direkt beim Speichern transponieren. (Einfach mal die Kontexthilfe zur Funktion lesen!)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
22.11.2011, 11:08 (Dieser Beitrag wurde zuletzt bearbeitet: 22.11.2011 11:10 von Sternhagel.)
Beitrag #7

Sternhagel Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: Feb 2011

10
2010
EN


Deutschland
RE: Zu langsames schreiben in Datei: Daten vor Schreiben in Datei "zwischenspeichern" ?
Ok ich habe deinen Rat beherzigt und das ganze mit Arrays realisiert. Und jetzt muss ich das ganze auch nicht mehr transponieren :-) (Siehe Anhang)

Aber was ist den grundsätzlich das Problem an Matrizen im Vergleich zu Arrays?

Die Indexfunktion wie vorgeschlagen möchte ich nicht benutzen, da ich die Datenaufnahme ein- und ausschalten möchte und ich wüsste nicht, wie ich das mit der Indexfunktion realisieren könnte.
In meiner Version im Anhang ist das hingegen ganz einfach zu lösen, einfach durch eine zusätzliche Case-Structure.


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.11.2011, 11:17
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Zu langsames schreiben in Datei: Daten vor Schreiben in Datei "zwischenspeichern" ?
Hallo Sternhagel,

Matrizen sind für mathematische Berechnungen gedacht. Aufgrund der Polymorphie funktionieren auch viele andere Funktionen mit diesem Datentyp - was aber nicht heißt, dass das immer problemlos läuft (es wurden Programmabstürze berichtet, der rote Punkt weist außerdem auf Datentyp-Konvertierungen hin).

Wenn du einfach nur Daten sammeln willst, nimmt man dafür üblicherweise (auch in anderen Programmiersprachen) Arrays...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Messdaten schreiben. Andi003 4 2.358 08.11.2021 09:45
Letzter Beitrag: th13
  kontinuierliches Schreiben mit Regeneration Ch.Mueller 2 2.088 21.10.2021 07:07
Letzter Beitrag: Ch.Mueller
  DAQMX Kanäle zusammenführen in Datei Herri 4 3.169 29.11.2019 09:11
Letzter Beitrag: Herri
  Digitale Kanäle hintereinander schreiben Christoph1993 4 3.860 04.06.2019 07:09
Letzter Beitrag: MaxP
  DAQmx schreiben und lesen Sakis 2 3.867 06.09.2018 09:36
Letzter Beitrag: Sakis
  Datalogging aus zwei Task in einer Datei Keppi 1 2.656 13.06.2018 11:51
Letzter Beitrag: GerdW

Gehe zu: