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!
ich habe ein Gerät entwickelt,der unter windows als virtuelle COM-schnittstelle erkannnt wird.Der LabVIEW kommuniziert mittels dieses COM-Ports mit dem Gerät (VISA Protokol).Ich erzeuge dann eine .exe Datei von meinen .VI ,die aber immer nach dem starten auf COM1 zeigt.
Weist jemand,wie könnte ich es einstellen,damit meine .exe LabVIEW Applikation automatisch erkennt, am welchen COM-Port mein Gerät angeschlossen ist?
ich habe ein Gerät entwickelt,der unter windows als virtuelle COM-schnittstelle erkannnt wird.Der LabVIEW kommuniziert mittels dieses COM-Ports mit dem Gerät (VISA Protokol).Ich erzeuge dann eine .exe Datei von meinen .VI ,die aber immer nach dem starten auf COM1 zeigt.
Weist jemand,wie könnte ich es einstellen,damit meine .exe LabVIEW Applikation automatisch erkennt, am welchen COM-Port mein Gerät angeschlossen ist?
Im Voraus,Danke
Diplomand
Na hat denn Dein Gerät ein bestimmtes Kommando auf das es mit einer Identifikation antwortet? Wenn nicht dann ist es Ende der Geschichte, ansonsten alle verfügbaren Ports der Reihe nach öffnen, Kommando schicken auf Antwort warten und wenn nicht innerhalb sinnvoller Zeit die gewünschte Antwort kommt, abbrechen und zum nächsten Port gehen.
Nicht vergessen die Ports jeweils auch wieder mit VISA Close zu schliessen.
' schrieb:Na hat denn Dein Gerät ein bestimmtes Kommando auf das es mit einer Identifikation antwortet? Wenn nicht dann ist es Ende der Geschichte, ansonsten alle verfügbaren Ports der Reihe nach öffnen, Kommando schicken auf Antwort warten und wenn nicht innerhalb sinnvoller Zeit die gewünschte Antwort kommt, abbrechen und zum nächsten Port gehen.
Nicht vergessen die Ports jeweils auch wieder mit VISA Close zu schliessen.
Rolf Kalbermatter
Hallo,
zuerst Danke für die schnelle Antwort.Ich bin nicht sicher ob ich richtig verstanden bin.Das Gäret kann ich beliebig programmieren,es ist eine Platine mit dem PIC-Mikrocontroller,der die Kommunikation mit VISA steuert.Das Geret hat eigenes PID und VID Nummer.Das ganze System ist funktionsfähig, nur ist noch notwendig, nach dem Erzeugung von .exe Datei, ihr zu mitteilen, sich an der richtigen COM-Port anzupassen.Jetzt die zeigt immer auf COM1,was falsch ist.Also ich muss es immer das Lab VIEW stoppen und richtigen Com-Port selber einstellen und danach finktioniert alles .Meine Wünsch wäre aber ,dass LabVIEW( seine .exe Applikation) allein den COM-Port erkennt,am welchen das Gäret angeschlossen ist.
Kann man überhaupt es in Lab VIEW programmieren?
LG
Nedzad
11.10.2007, 17:58 (Dieser Beitrag wurde zuletzt bearbeitet: 11.10.2007 18:04 von eg.)
Nein, das kann LV direkt nicht. Deswegen der Vorschlag von Rolf: COM1 öffnen - schauen, ob dein Gerät dran ist - falls nicht, COM1 schließen und COM2 öffnen - schauen, ob Gerät dran ist - falls nicht, COM3 öffnen - usw.
MfG, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
zuerst Danke für die schnelle Antwort.Ich bin nicht sicher ob ich richtig verstanden bin.Das Gäret kann ich beliebig programmieren,es ist eine Platine mit dem PIC-Mikrocontroller,der die Kommunikation mit VISA steuert.Das Geret hat eigenes PID und VID Nummer.Das ganze System ist funktionsfähig, nur ist noch notwendig, nach dem Erzeugung von .exe Datei, ihr zu mitteilen, sich an der richtigen COM-Port anzupassen.Jetzt die zeigt immer auf COM1,was falsch ist.Also ich muss es immer das Lab VIEW stoppen und richtigen Com-Port selber einstellen und danach finktioniert alles .Meine Wünsch wäre aber ,dass LabVIEW( seine .exe Applikation) allein den COM-Port erkennt,am welchen das Gäret angeschlossen ist.
Kann man überhaupt es in Lab VIEW programmieren?
LG
Nedzad
Also wie schon von den anderen gesagt. PIC und VID sind USB spezifische Dinge. Das kann auf dem virtuellen COM Port niemand mehr sehen, aufspüren, eruieren oder was dann auch."
Es gibt für Dich prinzipiel also zwei Möglichkeiten.
1) Du verwendest die virtuelle COM Schnittstelle und pollst alle seriellen Ports ob da Dein Gerät in einer bestimmten (von Dir programmierten Weise antwortet) bis Du es findest.
2) Du kannst in VISA auch direkt USB Raw Communication machen. Dazu kommt der MAX oder so mit einem Wizard der Dir hilft um ein INF File zu generieren. Danach kannst Du in LabVIEW mit VISA direkt die USB Raw Schnittstelle ansprechen. Aber aufgepasst, Raw meint hier raw (roh). Kein Händchenhalten und schöne Strings schicken, sondern Du kümmerst Dich Bit für Bit selber darum, wie die Datenbotschaften zum Device aufgebaut sind und auch empfangen werden. Dazu musst Du das rohe USB Protokoll Deines Gerätes exakt kennen und vor Bitschiebereien und solchen low-level Dingen wirklich keine Angst haben. Wenn Du das verfolgen willst gibts auf http://www.ni.com ein paar Beispiele/Tutorials wie das geht.
Persönlich würde ich wohl den COM Port nehmen. Ist viel einfacher und hat keine wirklichen Nachteile, da Du VISA so oder so installieren musst.
Viellen Danke für die ausführliche Antworten.
Es handelt sich um ein USB Gerät,das aber als eine virtuelle COM_Schnittstelle erkannt wird.
Die Idee mit der Polling finde ich ,auf den ersten Blick,einfacher für die Implementation,da meine LabVIEW Kentnissen nicht so perfekt sind..Gibt es da jegenwo ein beispiel,wie man eine Com-Schnittstelle mit der Polling herrausfindet, die ich mich vielleicht anqucken konnten?
' schrieb:Viellen Danke für die ausführliche Antworten.
Es handelt sich um ein USB Gerät,das aber als eine virtuelle COM_Schnittstelle erkannt wird.
Die Idee mit der Polling finde ich ,auf den ersten Blick,einfacher für die Implementation,da meine LabVIEW Kentnissen nicht so perfekt sind..Gibt es da jegenwo ein beispiel,wie man eine Com-Schnittstelle mit der Polling herrausfindet, die ich mich vielleicht anqucken konnten?
Sorry,wenn ich zu viel Frage...
LG
Nedzad
Ok, verstanden. Du kannst den Gerätemanager abfragen um es rauszufinden. Ich habe sowas gemacht und es funktioniert, leider kann ich dir die Lösung (die ist ziemlich einfach) erst am Montag schicken. Warte bis dahin.
' schrieb:Viellen Danke für die ausführliche Antworten.
Es handelt sich um ein USB Gerät,das aber als eine virtuelle COM_Schnittstelle erkannt wird.
Die Idee mit der Polling finde ich ,auf den ersten Blick,einfacher für die Implementation,da meine LabVIEW Kentnissen nicht so perfekt sind..Gibt es da jegenwo ein beispiel,wie man eine Com-Schnittstelle mit der Polling herrausfindet, die ich mich vielleicht anqucken konnten?
Sorry,wenn ich zu viel Frage...
Also ich würde Dir erst mal zwei Dinge vorschlagen.
1) Rausfinden welche COM ports überhaupt existieren. Das kannst Du am Besten met "VISA Find Resources". Verbinde den "expression"Eingang mit einer Stringkonstante "ASRL[0-9]*::?*INSTR" und dann bekommst Du ein Array von Strings mit einem Element pro durch VISA erkannten seriellen Port.
2) Nun in einer Schlaufe jeden dieser Ports öffnen, ein Kommando dass Dein Instrument erkennt mit VISA Write rausschreiben und mit einem VISA Read mit einem oder zwei Sekunden Timeout auf die Antwort warten. Wenn nichts zurück kommt ist es nicht Dein Instrument (oder es ist nichts angeschlossen oder nicht angeschaltet). Wenn etwas zurückkomt checken dass es das Richtige ist.
Viele Messinstrumente antworten beispielsweise auf das Kommando "*IDN?rn" (rn sind Abkürzungen für die Steuerzeichen Carriage Return und Line Feed) mit einem String der den Namen des Instruments und eine Firmwareversionsnummer beinhaltet, etwa wie "CT4567A, V1.23". Nach dem jeweiligen Lesen der Antwort (oder Timeout) bitte den Port auch noch abschliessen mit VISA Close.