LabVIEWForum.de - VISA Write/Read bündeln

LabVIEWForum.de

Normale Version: VISA Write/Read bündeln
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
<div align="left">Hallo zusammen,

erstmal mein lob für dieses forum. Ich bin recht neu bei LV, aber habe durch das forum schon viel gelernt.

Mein problem ist folgendes: ich soll mit LV einen laser über rs 232 ansteuern. dazu muss ich dem laser jedes mal einen hexadezimalen operationscode senden und dann auf die antwort warten. diese ein/ausgabe funzt auch wunderbar über das von LV mitgelieferte VISA Serial Writ/Read beispiel.

Das eigentliche problem ist nun, dass es sich nicht nur um einen operationscode handelt, den ich senden muss, um dann auf die antwort zu warten, sondern es handelt sich um nahezu 15 funktionen, die in regelmäßigen abständen geschrieben und gelesen werden müssen. (nach möglichkeit sogar gleichzeitig)

Meine erste Idee war, dass ich die ganze Geschicht in einer Sequenz aufbaue: 1...15. Funktion schreiben und auf antwort warten. Aber dann habe ich für jede Funktion einmal die Lese und Schreibfunktion, was sicherlich nicht die beste variante ist, oder ?

Nun zu der eigentlichen Frage: gibt es eine elegante lösung, die einzelnen Funktionen auf nur 1 mal VISA write zu bündeln, so dass sie hintereinander weg geschrieben werden und dann beim lesen wieder alle zurückkommenden antwortern auch sinnvoll auf die richtigen anzeigeelemente zu verteilen (temperatur, laserpower, pumpstrom usw. ) ?

Gestern habe ich bei den beispielen habe ich ein beispiel gefunden, dass sich mit Queues als multiplexer beschäftigt hat. funktioniert auch nachdem ich es angepasst habe für meine zwecke, aber wie zum teufel kann ich die funktionen nachher wieder demultiplexen ?

Ich wär für jede hilfe, auch wenn sie noch so klein ist dankbar. Blush</div>
HI

Du solltest zu erst klären ob der Laser das auch mitmacht
Denn wenn du befehle in schneller reinfolge sendest muß der Laser auch die Befehle buffern können oder erist so schnell.

Zu deiner Frage eine Idee

Du kannst deine Befehle alle in ein Array schreiben und dann das Array an eine For-schleife übergeben
In der Schleife sendest du dann nur die befehle danach liest du dann einmal auf der schnitsstele die anzahl der angekommenen bytes und liest sie dann mit der read funktion aus

so ich hoffe das gibt dir ein wenig hilfe

Gruß

Jürgen
' schrieb:nach möglichkeit sogar gleichzeitig

das wird nicht funktionieren. Wie der Name der Schnittstelle schon sagt, funktioniert diese seriell, d.h. sie sendet ein Byte nach dem anderen. Wenn du also parallel senden möchtes, musst du mehrere RS232-Schnittstellen gleichzeitig verwenden. Wenn nun dein Gerät aber nur einen Anschluss für ein RS232-Kabel hat, dann wird es auch nicht gleichzeitig empfangen können ...

Grüße
CB
<div align="left">Danke für die antworten.

Zitat:das wird nicht funktionieren. Wie der Name der Schnittstelle schon sagt, funktioniert diese seriell, d.h. sie sendet ein Byte nach dem anderen. Wenn du also parallel senden möchtes, musst du mehrere RS232-Schnittstellen gleichzeitig verwenden. Wenn nun dein Gerät aber nur einen Anschluss für ein RS232-Kabel hat, dann wird es auch nicht gleichzeitig empfangen können ...
Schon klar das es nicht ganz gleichzeitig funktionieren kann aber zumindest in sehr kleinen zeitlichen abständen.

Deswegen ja auch die idee mit dem multiplexer.... schön stück für stück durchschieben. aber ich bekomme die zurückkommenden teile nicht mehr auseinander.

Zitat:Du solltest zu erst klären ob der Laser das auch mitmacht

mit dem laser ist alles gut.... hab ich vorher getestet. habe ihn nur mit extrem kleinen delay sendezeiten (einselliger ms-bereich) aus der ruhe bringen können.

Gibt es vielleicht noch andere möglichkeiten, die befehle stück für stück an die schnittstelle zu übergeben ?</div>
HI

Wenn ich das richtig verstehe hat dein laser eine serielle schnittstelle
Also kannst du auch nur ein Befehl zur zeit schicken

Also befehl hin und antwort abwarten und dann immer soweiter

Oder wo ist dein problem

gruß

jürgen
<div align="left">
' schrieb:HI

Wenn ich das richtig verstehe hat dein laser eine serielle schnittstelle
Also kannst du auch nur ein Befehl zur zeit schicken

Also befehl hin und antwort abwarten und dann immer soweiter

Oder wo ist dein problem

gruß

jürgen
</div>

<div align="left">Hallo Jürgen,

in Vorversuchen habe ich die einzelnen Funktionen schon ausprobiert, auch hintereinander weg mit einer Sequenz. das problem dabei ist, dass ich für jede Funktion einmal VISA Write und dann VISA read benutzt habe.

Ich dachte es sei irgendwie möglich zentral einmal z. B. das VISA serial Write/Read_basic hinlege und dann nur noch vorne beim schreiben meine 15 verschiedenen Hexcodes habe und hinten beim leseteil nur noch die antworten rausziehe und weiterverarbeite. Ich wolte einfach nur nicht 15 mal die gleiche funktion(VISA serial Write/Read_basic) im VI haben. Nur leider beschäftige ich mich noch nicht so lange mit LV, so dass ich auf keine funktionierende version komme.

Ich hatte es mit einem Bsp. aus LV 8 versucht: Queues als Multiplexer, aber es hapert mit dem demultiplexen.
Auch mit einem array, dass meine operationscodes enthält bin ich noch nicht zum ziel gekommen, aber ich versuche mich noch dran.

Ich hoffe, ich habe das problem etwas deutlicher geschildert.

Gruß Sebastian
</div><div align="left"> </div>
Hallo.

Ich weiß immer noch nicht genau, was Du machen möchtest, oder wo das Problem ist.
Ich denke, Du möchtest nicht jedes mal neu die VISA-Routinen einbauen. Also bietet sich doch eine Schleife an.

Du könntest doch alle Kommandos in ein Array packen und dieses dann in der Schleife auflösen und die einzelnen Elemente senden. Die Antworten packst du genauso in ein Array. Das kannst du dann je nach Bedarf auflösen.

Ich hänge mal ein Bild an. Vielleicht kommen wir der Sache dann näher.

EDIT: Das Bild ist natürlich nur ein SCHEMA. Und so ohne weiteres nicht lauffähig. Es soll nur den prinzipiellen Ablauf darstellen.
/EDIT
Danke diplNisse

Dein bild ist genau mein vorschlag

Gruß

Jürgen
<div align="left">
' schrieb:Danke diplNisse

Dein bild ist genau mein vorschlag

Gruß

Jürgen

Der Vorschlag ist super. Funktioniert einwandfrei. muss es natürlich für meine zwecke noch etwas umschreiben, aber sonst erste sahne.

Da hatte ich wohl auch etwas verständnisprobleme. sorry leute.

...aber danke für die geduld Smile</div>
Referenz-URLs