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!
Hi,
ich möchte ein VI programmieren, dass eine Reihe von Binärworten per FPGA auf eine Datenleitung schreibt. Bisher kann ich nur ein einzelnes Wort auf dem Frontpanel einstellen. Ich dachte daran, eine einfache Textdatei zu erstellen in der alle Worte untereinander in Binärdarstellung geschrieben sind. Diese Datei soll dann zeilenweise eingelesen werden, das Binärwort in ein boolshes Array gewandelt und geschrieben werden. Ich bekomms leider nicht hin, die Worte korrekt einzulesen und als boolshes Array darzustellen. Entweder wird nur der erste Charakter gelesen, oder die Zeile wird nur als Integer interpretiert usw.
Ich häng das hostVI mal an. Darin wird über das read/write control das Array an das FPGA-VI übergeben. Dort wird es dann zusammengestückelt und Bitweise auf den Kanal geschrieben. Das Zusammenstückeln könnte aber auch im Host erfolgen. Ich denke das Einlesen der Datei ist im Prinzip keine schwierige Sache, aber ich komm nicht drauf. Darum bräucht ich mal eine kleine Anregung.
Danke!
Anzeige
09.01.2013, 11:12 (Dieser Beitrag wurde zuletzt bearbeitet: 09.01.2013 11:15 von GerdW.)
das mit deinem VI-Anhang ging wohl etwas daneben.
Du kannst dir aber einfach in eine *.txt-Datei untereinander die später zu schreibenden Werte als Dezimal- oder Hex, oder was auch immer-Werte schreiben. Wenn du diese Datei generieren willst, dann kannst du sie natürlich auch als Binärfile ablegen, musst dich dann nur mit dir selbst einigen, wieviele bytes ein Datum umfassen soll.
Beim Einlesen dieses Files kannst du dann auch gleich zeilenweise machen, oder du separierst später den file string. Dann musst du das ganze mit den entsprechenden Wandlungsfunktionen zurückwandeln und kannst dann sicher auch pro Wert ein Bool-Array erstellen.
Wenn du mit Binärworten je einen 16Bit-Wert meinst, dann musst du es eben als Low- und Highbyte im Binärfile ablegen.
Schwer zu sagen, was du willst.
Gruß, Marko
09.01.2013, 12:18 (Dieser Beitrag wurde zuletzt bearbeitet: 09.01.2013 12:22 von talarion.)
Ich möchte eine .txt Datei haben, in der zeilenweise Binärworte stehen. Also sowas wie z. B.
1100
0101
0000
1010
Später sollen es dann 29 Bits sein, die restlichen 3 werden dann im VI angehängt weil es spezielle Bits zur Synchronisation sind. Aus einer Zeile in der Datei soll dann ein Array aus boolshes Werten erstellt werden. Dieses Array wird dann an das FPGA-VI übergeben.
Mit Number to Boolean Array hab ich das nicht geschafft, weil diese Funktion mir die Zahl als Dezimalzahl interpretiert hat und dann die Binärdarstellung dieser Zahl ins Array geschrieben hat. Ich möchte aber, wenn man das kleine Beispiel oben nimmt, nicht die Zahl 1100 in Binär haben, sonder ein Array TRUE TRUE FALSE FALSE.
Ich fürchte, wenn du die Datei in dieser Form speichern willst, wirst du wohl jedes Zeichen auseinandernehmen müssen und prüfen, ob es denn eine "0" oder eine "1" ist und dementsprechend das jeweilige Bit deines Arrays setzen.
Was anderes fällt mir hierfür nicht ein.
Bist du dir mit dem Format deiner Datei sicher?
Gruß, Marko
09.01.2013, 12:39 (Dieser Beitrag wurde zuletzt bearbeitet: 09.01.2013 12:39 von GerdW.)
Ich kann die Datei natürlich auch in einem anderen Format speicher. Das war nur das erste das mir eingefallen ist weil es sehr simpel ist. Hauptsache ist nur dass am Ende das entsprechende Array raus kommt. Welches Format würdest du denn vorschlagen?
EDIT:
GerdW, was ist das denn für eine Funktion die du da verwendet hast?
09.01.2013, 12:53 (Dieser Beitrag wurde zuletzt bearbeitet: 09.01.2013 12:53 von GerdW.)
Danke, hatte erst in der File I/O Palette gesucht, darum hab ichs nicht gefunden. Ich bekomme aber nicht das Ergebnis das ich möchte. In dem Array stehen nur die Dezimalzahlen drin. Ich möchte aber pro Zeile ein Array der boolschen Werte.
Kurze Frage noch dazu, wie kann man den Parameter delimiter dieser Funktion umstellen? Es ist auf Tab gestellt, und damit es geht hab ich jetzt alles in eine Zeile geschrieben mit Tabs getrennt. Bei dir ist als delimiter aber Return eingestellt, oder?