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!
29.09.2009, 09:37 (Dieser Beitrag wurde zuletzt bearbeitet: 29.09.2009 09:38 von physiker13.)
hi
ich hab ein problem mit dem speichern meiner daten. bis jetzt hab ich die in einem array(2D) gespeichert und schreib sie mit der write to spreadsheed file.vi in meine datei. allerdings nur die messwerte. jetzt würd ich gern einen header mit datum, uhrzeit, kommentar und vor allen einheiten der messwerte vorn anhängen. das ganze sollte dann so formatiert sein dass ich das auch später wieder auslesen kann.
gibts da eine spezielle create header vi oder muss ich dass alles über die array pallette oder über file i/o machen? bzw wie geht das am besten?
bis jetzt siehts so aus:
[code]0,000000E+0
29.09.2009, 10:08 (Dieser Beitrag wurde zuletzt bearbeitet: 29.09.2009 10:10 von GerdW.)
den Header musst du dir selbst zusammenbasteln (string-Funktionen) und dann als erstes in die Datei schreiben. Beim weiteren Schreiben der Daten dann darauf achten, dass die Daten angehangen werden ("append to file")...
Wenn du statt der generischen "Write to spreadsheet file" auf eine eigene Formatierung der Daten zurückgreifst, kannst du die (erste) Zählerspalte auch als Dezimalzahl formatiert ausgeben - ist besser lesbar für den unbedarften Nutzer
den Header musst du dir selbst zusammenbasteln (string-Funktionen) und dann als erstes in die Datei schreiben. Beim weiteren Schreiben der Daten dann darauf achten, dass die Daten angehangen werden ("append to file")...
Wenn du statt der generischen "Write to spreadsheet file" auf eine eigene Formatierung der Daten zurückgreifst, kannst du die (erste) Zählerspalte auch als Dezimalzahl formatiert ausgeben - ist besser lesbar für den unbedarften Nutzer
also erstmal danke vielmals für die schnelle hilfe. hab den header schon hinbekommen allerdings versteh ich nicht ganz was/wie du mit der eigenen formatierung meinst.
und ich hab da auch noch ein problem mit dem auslesen. ich kann zwar den header auslesen(mit read from text file.vi) allerdings hab probleme mit dem daten auslesen da ich in der read from spreadsheed.vi nur ein character offset aber kein line offset möglich ist. da mein header aber nicht immer die gleiche character länge hat geht das nicht ordenlich.
wie kann ich da also erst ab der 7. zeile zum lesen anfangen?
Indem du nach dem Lesen deiner Headerzeilen dir per VI die Position des "File-Lesezeiger" holst, und das dann als Offset für dein Read from Spreadsheet nimmst:
Alternativ liest du die Spreadsheet-Zeilen selber ein und wandelst "zu Fuß" den String in eine Zahlen-Array.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
30.09.2009, 08:12 (Dieser Beitrag wurde zuletzt bearbeitet: 30.09.2009 08:17 von GerdW.)
nach einem genaueren Blick auf deine Beispieldatei würde ich dir sogar sehr zu einer "manuellen" Formatierung raten.
Du verwendest einen englisch-sprachigen Header mit Zahlen im "deutschen" Format (d.h. mit einem Komma als Dezimaltrennzeichen)! Beim Arbeiten mit Messdaten würde ich generell nur die "englische" Schreibweise empfehlen - zuviel Software (von Drittanbietern) ist darauf geeicht!
Wenn die Daten zeilenweise eintreffen, kannst du mit FormatIntoString und einem Formatstring a la "%.;%dt%.6gt%.6grn" arbeiten... Das "%.;" schaltet den Punkt als Dezimaltrennzeichen ein. Die Context-Hilfe zu den Formatstrings ist da sehr ausführlich!
Edited: Der angegebene Formatstring ist natürlich im ""-Code angegeben, d.h. String-Konstante erzeugen, auf -Code-Anzeige umschalten und dann den String editieren...
WriteToSpreadsheet ist eine Art Expressfunktion, die dir einiges an Arbeit abnimmt - mit dem Nachteil, nur für Standardfälle gut geeignet zu sein. Wenn man seine eigene Formatierung haben will, dann muss man sie auch programmieren. Eine Möglichkeit habe ich oben schon angedeutet
Warum soll die Datei eigentlich ein eigens dafür erdachtes Layout aufweisen? Ich meine, es gibt so viele gängige Format, die von LV über Plugins unterstützt werden, da tut es doch nur noch selten not, das Rad neu zu erfinden.
weil
1) es Firmen gibt, die strikte Anweisungen für Dateiheader vorgeben?
2) weil man ältere Hard-/Software ersetzen will und die Kollegen ihre Excel-Makros nicht umschreiben wollen/können?