![]() |
Binär lesen und schreiben - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO) +---- Thema: Binär lesen und schreiben (/Thread-Binaer-lesen-und-schreiben) |
Binär lesen und schreiben - Lex - 23.02.2009 10:35 Hallo, ich habe eine Frage zum Ausgeben und Einlesen von binären Daten. Ich habe versucht mich anhand der Beispiele in LabVIEW zu orientieren. Hat aber leider nicht ganz geklappt, da die Daten beim Auslesen nicht mehr die selben sind wie beim Einlesen. Das Programm soll sehr schnell sein. Weitere Anregungen und Kritik sind daher willkommen. Das Vi-Kalibrierung habe ich nicht mit hochgeladen. Es "verbiegt" nur dem Y-Wert des Waveforms. Kann also einfach verbunden werden. Wie mache ich es jetzt, die Werte in den beiden Graphen die selben sind? Möchte das dann im Anschluss in ein Array packen und in eine .lmv oder irgendwas anderes packen, was man ohne LabVIEW gut lesen kann... Danke und Gruß Axel ![]() PS: normal arbeite ich mit 8.5 (nur für die denen es auffällt ![]() Binär lesen und schreiben - rolfk - 24.02.2009 08:46 Du solltest halt schon das gleich reinschreiben wie Du dann auslesen willst. Erst Schreibst Du ein Array hinein ohne Längenangabe (prepend array or string size= False). Das ginge ja vielleicht noch wenn Du garantieren kannst dass Du dort immer genau zwei Elemente hineinschreibst, so wie Du dann ja auch liest. Aber danach wird es haarig. Du schreibst wiederholt eine Waveform ins File. Und probierst danach mit der Multiplikation der zwei Headerwerte eine entsprechende Anzahl Doubles einzulesen. Da scheint mir gleich mindestens zwei Dinge durcheinander. Das geht nicht so. Eine Waveform ist nicht einfach ein Array von Doubles. Das ist ein Cluster mit minimal einem tStart, td, und den Daten aber eventuel auch mehr und in Deinem Fall noch ein Array davon, da Du potentiel mehrere Kanäle hast. Wenn Du schon eine Wavefrom schreibst solltest Du die auch als solche lesen. Zudem kannst Du grundsätzlich die Loop mehre Male durchlaufen 1) weil Du diese nicht automatisch abbrichst nach dem Einlesen der eingestellten Anzahl Samples und 2) weil Du samples per channel to read kleiner einstellen könntest als die 1000 die Du beim DAQmx Timing (Sample Clock).vi einstellst. Du versuchst scheinbar die Daten als ein einziges 2D Array von Werten zu behandelen aber dann darfst Du die Daten nich in einer Loop wiederholt reinschreiben. Was Du da bekommst sind wiederholt Datenpakete von n Wafeforms mit der internen Datenlänge die Du am Samples to Read einstellst. Ok, bei den Defaulteinstellungen wird das ein einziges Packet von 1000 Samples pro Waveform, aber das ist alles ausser robust oder richtig programmiert. Zu guter Letzt wo soll denn das 2D Array von int32 her kommen dass Du danach noch zu lesen versuchst???? Das wird echt nirgends ins File reingeschrieben in Deinem VI. Rolf Kalbermatter Binär lesen und schreiben - Lex - 24.02.2009 09:25 Hallo, danke für die Antwort. Aber leider stehe ich immernoch etwas auf dem Schlauch. ![]() Kannst Du mir vielleicht etwas ausführlicher sagen wie ich das Problem beheben kann. Es ist das erste mal das ich mit binarys arbeite. Ich verstehe (denke ich) wo da Problem liegt. Habe bisher aber keinen richtigen Ansatz zur Lösung. Mit der Einstellungen hast Du recht. Es kann durchaus sein, dass ich die Sampkes per Channel ändern möchete. Ich glaube mein Problem ist, dass ich nicht genau weiß, was ich dann überhaupt genau schreibe. Gruß Lex Binär lesen und schreiben - rolfk - 24.02.2009 11:32 Ich würde es mal ungefähr so versuchen. Beim Read gebe als Datentyp eine Waveform an und sage ihm als Anzahl dass es soviele davon einlesen soll wie Du im Header als Anzahl Kanäle hast. Dann lese die Länge der eingelesenen Waveforms und wenn diese kürzer sind als die Länge der insgesamt eingelesenen finiten Samples die Du auch im Header hast musst Du das ganze halt noch solange wiederholen, bis die insgesamt eingelesenen Samples per Kanal mit der bei der Acquisition angegbenenen finiten Länge, die Du ja scheinbar in den Header schreibst übereinstimmt. Binäre Files sind kein grosses Geheimnis, aber wenn Du Waveforms reinschreibst musst Du auch Waveforms auslesen, usw. und natürlich in der genau gleichen Reihenfolge. Rolf Kalbermatter |