LabVIEWForum.de - MatLab, Vektor ->LabVIEW

LabVIEWForum.de

Normale Version: MatLab, Vektor ->LabVIEW
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Leute,

entweder sehe ich das nicht oder stehe irgendwie auf der Leitung....
folgendes Problem:
Ich habe in Matlab folgenden Code
fwrite(s,dsH,'unit8'Wink
Dies entspricht:[list=1]
[*]serielles schreiben mit dem Befehl "fwrite()"<>
[*]"s" entspricht dem Handle<>
[*]"dsH" ist ein Vektor mit den Werten [250;250;0;120]<>
[*]unit8 ist das Format<>
[st]So wie ich das richtig verstehe, wird der Vektor mithilfe vom Scghreibbefehl "fwrite" auf die Schnittstelle geschrieben.

Nun meine Frage:
Ich habe mir ein VI mit Visa-Open, Visa-Write, Visa-Close geschrieben, jedoch kann ich bei Visa-Write nur einen String im Schreibpuffer einfügen jedoch keinen Vektor! Wie muss ich den in Visa-Write die Elemnte im Schreibpuffer aneinanderreihen, damit es wie in Matlab ein Vektor übergeben wird?
Ich möchte also im Grunde den oberen Vektor mit den angegebenen Zahlen mit LabVIEW auf mein Gerät schreiben können.

Gruß Joe

PS: Sicher ist es ziehmlich einfach, aber ich komme irgendwie nicht darauf.
Mal kurz google anwerfen...

such, such, such

<strike>:hmm:fwrite ist ein Befehl, der Daten binär in einen File schreibt. Was soll das mit VISA zu tun haben?</strike>

EDIT: Kommando zurück, da findet man doch tatsächlich was mit fwrite und RS232.

Trotzdem, fwrite scheint die Daten in einen Binärstring zu wandeln (erster Eindruck). Sowas geht auch mit LabVIEW, z.B. mit Typecast oder Flatten To String.

Gruß, Jens
' schrieb:Mal kurz google anwerfen...

such, such, such

Moment Mal....
Gegoogelt habe ich schon. Wie fwrite aufgebaut ist, weiss ich auch und für die, die es wissen wollen:
http://www.mathworks.com/access/helpdesk/h...ref/fwrite.html

Meine Frage ist ja, wie "baue" ich sowas in LabVIEW auf?
Bis jetzt habe ich immer VISA benutzt und es hat sowohl bei USB als auch bei Seriellen Schnittstellen hervorragend funktioniert. (Ich Muss ehrlich gesagt sagen, ich habe bis jetzt auch nur gekaufte Geräte verwendet!)
Nun habe ich mir ein Gerät sozusagen ausgeliehen und außer dem Matlab-Programm habe ich keine Hilfen zum Gerät. Ich kann hier auch bei keinem Nachfragen, leider! :-(
Deswegen wandte ich mich an das Forum.

Also damit hier die Frage nicht untergeht, wie kann ich denn Matlab-Befehl "fwrite" in LabVIEW realisieren?

Gruß Joe
' schrieb:Also damit hier die Frage nicht untergeht, wie kann ich denn Matlab-Befehl "fwrite" in LabVIEW realisieren?
Eigentlich schon beantwortet, aber damit es ebenfalls nicht untergehtWink

fwrite wandelt (soweit ich verstehe) beliebige Daten in einen Binärstring und schreibt diesen dann als String auf das geöffnete Handle (in der Regel ein File, kann aber auch eine Schnittstelle sein, das habe ich kapiert).

In LabVIEW kannst du das Wandeln in einen String mit Typecast oder Flatten To String machen:
[attachment=22997]

Den Rest mit VISA-Open, Write, Close hast du schon...

Gruß, Jens

EDIT: Zwecks google, ich kenn mich mit MatLab gar nicht aus, musste deshalb überhaupt erst mal nachschlagen, was fwrite für ein Befehl ist.
Danke Jens,
habes es bei ersten Mal nicht gleich verstanden...Unsure
Ich Probiere das jetzt aus und wenn es geklappt hat, werde ich das VI später hier reinstellen.

Gruß Joe
So, ich habe doch noch ein Problem...
Auf die Schnelle bekomme ich es nicht hin, kannst du mir da weiter helfen?
VI liegt bei.

Gruß Joe

Lv09_img2[attachment=22999]
Einfach mal zum Verständnis:
fwrite wandelt die Daten in Binärcode um und schickt sie dann über die serielle Schnittstelle. In meinem Fall ist es der Vektor dsH=[250;250;0;120]. Da es mi unit8 Format ist, wird immer eine Zahl (z.B: 250) in 8 Bit umgewandelt/dargestellt und dann übertragen -> so habe ich es verstanen.

Wie macht es denn die VISA-Schnittstelle von LabVIEW? Im Grunde müssten doch auch Binärzahlen herauskommen, oder? Wenn ja, wozu dann die Typecast/Typenumwandlung?

Gruß Joe
Nein, am Ende von fwrite kommt ein String raus.

Zur Wandlung, das Format-Feld besagt, welches Datenformat jedes der Elemente haben soll, das verstehst du schon richtig.

Vielleicht musst du dir das in LabVIEW eher so aufbauen:

Du hast ein Array. Mit einer Typ-Konversion wandelst du jetzt das Array in das durch "Format" spezifizierte Zahlenformat:
[attachment=23005]

So, und jetzt wird dieses Array in einen Binärstring gewandelt. Denn per VISA-Write (oder auch File-Write) kannst du nur einen String schreiben.

Gruß, Jens
Hi Jens,

danke, es funktioniert einwandfrei. Wir haben nur einen wirklich groben Fehler in unserem SubVI. Das SubVI "Visa Open" muss aus der While-Schleife heraus, sonst wird ja der Port ständig geöffnet!!!
Wenn ich zu Hause bin, mache ich das richtige VI rein.
Also nochmal: Visa-Open einfach VOR die While-Schleife schieben, dann klappts!!!

Gruß Joe
Referenz-URLs