LabVIEWForum.de - Visa schliessen und Referenz übertragen

LabVIEWForum.de

Normale Version: Visa schliessen und Referenz übertragen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich hätte da eine Frage zu einer seriellen Ansteuerung.

Ich bin gerade dabei eine Bibliothek zu erstellen mit Vis wie

ini
read
tara
close

-zuerst wird das ini Vi das Gerät initialisiert mit TermChar, Baudrate...
-dann im Prg. an einer beliebigen Stelle möchte ich das read.vi einsetzen, usw.


Die VisaResourceOut Verdrahtung soll über eine Variable o.ä. geschehen da manche Vi`s über Ref. aufgerufen werden, wie löse ich das über eine String Variable?

Zum Schluss des Programmes soll mit dem close.vi alles finalisiert werden also dann
darf ich erst dort die Visa schliessen?
Vielen Dank schon einmal für Tipps und Ratschläge.
(11.02.2011 13:26 )GT123 schrieb: [ -> ]-zuerst wird das ini Vi das Gerät initialisiert mit TermChar, Baudrate...
-dann im Prg. an einer beliebigen Stelle möchte ich das read.vi einsetzen, usw.
Die VisaResourceOut Verdrahtung soll über eine Variable o.ä. geschehen da manche Vi`s über Ref. aufgerufen werden, wie löse ich das über eine String Variable?
Bei den Visa-VIs ist es nicht so bei den DAQmx-VIs, bei denen bei der Initialisierung ein Task erzeugt wird und dann bei den Lese-Scheib-VIs immer der entsprechende Taskeingang angeschlossen sein muß.
Du kannst irgendwo im Haup-VI den COM-Port initialisieren, und dann irgendwo anders Lesen und Schreiben, ohne daß eine Verbindung zum Initialisierungs-VI vorhanden sein muß. Natürlich muß bei jedem VI am Resourcen-Eingang der entsprechende COM-Port angeschlossen sein, z.B mittel einer Konstanten oder lokale Variablen (Ausnahme: Wenn man COM1 benutzt: das ist der Defaultwert wenn nichts angeschlossen ist).
Natürlich braucht man Verbindungen innerhalb des VI - nur hat das etwas mit dem richtigen Ablauf im VI zu tun und nicht mit dem Funktionieren der seriellen Funktionen an sich. Man darf also nicht denken, das Initialisierungs-VI generiert so etwas wie eine Task, die an die anderen VIs angeschlossen werden muss.

Oder noch mal anders gesagt: Das serielle Initialisierungs-VI hat zwar - so wie die anderen seriellen VIs auch - einen Ausgang "VISA-ResourcenName". Dabei handelt es sich aber um eine reine Durchverbindung vom gleichnamigen Eingang. Zusätzliche Informationen, die nachfolgende VIs gebrauchen könnten, z.B über die durchgeführte Initialisierung, sind darin nicht enthalten. Man darf also nicht denken, das Initialisierungs-VI generiert so eine Art Task oder Referenz, die an die anderen VIs anzuschliessen ist.
Hallo Lucki,

ok, was ist jedoch mit den Einstellungen wie TermChar, Baudrate, Stopbits... die ich einmal vergebe im IniVi.
Die sind ja dann nur im IniVi gültig. In allen anderen Vi´s fehlen doch diese Informationen wenn ich sie nicht
wieder neu vorgebe?!
(13.02.2011 10:29 )GT123 schrieb: [ -> ]ok, was ist jedoch mit den Einstellungen wie TermChar, Baudrate, Stopbits... die ich einmal vergebe im IniVi.
Die sind ja dann nur im IniVi gültig. In allen anderen Vi´s fehlen doch diese Informationen wenn ich sie nicht
wieder neu vorgebe?!
Das war auch jahrelang mein Wissensstand - bis ich merkte, daß es nicht stimmt. Einmal initialisiert, ist die Initialisierung in der gesamtem Entwicklungsumgebung, also in allen aufgerufenen VIs gültig. Sie ist nicht gültig für fremde Programme außerhalb der Entwicklungsumgebung, die auch auf den Port zugreifen wollen. Dort gilt der Port als belegt. Wenn zwei kompilierte LV-Programme, die nichts miteinander zu tun haben, als zwei EXE gleichzeitig laufen, denn verhalten sie sich auch wie Fremdprogramme zueinander, d.h für das "zu spät" gestartete Programm gilt der Port als belegt.

Zu den Eigenschaftsknoten: Die haben zwar einen Eingang, der sich "Referenz" nennt, aber es ist in Wirklichkeit nur die verwendete COM-Port Ressource:
[attachment=32258]
Referenz-URLs