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!
' schrieb: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.
Rolf Kalbermatter
Viellen,viellen Dank für ihre Hilfsbereitschaft ,
ich habe jetzt diese Beitrege gelesen und habe ungefehr etwa verstanden,wie es gehen sollte.
Natürlich bin ich auch gespannt,wegen der Lösung von Eg, die ich gerne sehen möchte.Ein konkretes Anwendungsbeispiel ist immer sehr hilfsreich in solcher Situationen..
Ist die "USB Virtual Serial Port", die Name des Geräts unter Geräte-Menager, oder ist es Sstandard bei den Virtuelen Ports?
Ich bekomme keine Anzeige an den Variable "Ports". Was sollte ich vielleicht noch adaptieren um diese Anzage(Name von meine Gerät) auch am Frontpanel zu bekommen?Hier meine Lösung,ich was nicht kann mann es optimieren?
Das ist kein Standard, das Beispiel stammt aus einem meiner älterer Projekte, das Gerät hat einen USB Anschluss = 3 virtuelle COM-Ports mit den Namen "XXX USB Virtual Serial Port". Bei dir können diese anders heißen, also du muss es selbst anpassen.
P.S. bei diesem Beispiel sehe ich gerade einen Fehler, der mit Race Conditions zu tun hat, also nicht lachen.
Hallo,
ich habe eingentlich gerade gesehen,dass mien virtuelles Port zwar sofort erkannt wird,aber wenn ich die Daten von Lab View (nach dem Betätigung des Startsknopfs) nach Mikrocontroller schicken möchte funktioniert nicht.Der Mikrocontroller bekommt keine Daten.Erst dann, wenn ich VI ausschallte und wieder einschalte, funktioniert es.
Ich habe versucht mit dem Wartenzeiten aber funktioniert nicht. Hier ist mein VI,viellecht können Sie mir so besser helfen,um die Fehler zu korrigieren...
Ich entschuldige mich, dass ich Ihnen so viel Zeit nehme..
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
Erkennung des Com-Ports mit *.exe Datei
Mal was anderes zwischendurch. Hast Du mal was von einer State-Machine (mit Schieberegister) gehört. Du hast nämlich extrem viele lokale Variablen in Deinem Programm, die sich vermeiden ließen. Und noch was.... Nicht ein großes VI ist ein gutes VI, sondern ein VI, das auf max. einer Bildschirmgröße angezeigt werden kann. "View as Icon" würde ich in dem Zusammenhang auch gleich deaktivieren.
Sieh es einfach als Anregung.
Gruß Markus
' schrieb:Hallo,
ich habe eingentlich gerade gesehen,dass mien virtuelles Port zwar sofort erkannt wird,aber wenn ich die Daten von Lab View (nach dem Betätigung des Startsknopfs) nach Mikrocontroller schicken möchte funktioniert nicht.Der Mikrocontroller bekommt keine Daten.Erst dann, wenn ich VI ausschallte und wieder einschalte, funktioniert es.
Ich habe versucht mit dem Wartenzeiten aber funktioniert nicht. Hier ist mein VI,viellecht können Sie mir so besser helfen,um die Fehler zu korrigieren...
Ich entschuldige mich, dass ich Ihnen so viel Zeit nehme..
Gruss,Nedzad
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
' schrieb:Erst dann, wenn ich VI ausschallte und wieder einschalte, funktioniert es.
Genau so hast du es ja auch programmiert.
Du hast eine ganz wichtige Sache von LabVIEW vergessen - respektive unterschlagen: Das Prinzip des Datenflusses.
Ganz am Anfang hast du das VI "Visa: Öffnen" mit dem Eingang "Port Nummer". Parallel dazu hast du eine For-Schleife, in der du deinen Port aber erst suchen willst. Und genau diese beiden Sachen - Port suchen und Visa-Öffnen - laufen (quasi) gleichzeitig ab. Das heißt natürlich, beim ersten Start des VIs ist "Port Nummer", also der Eingang in das VI "Visa: Öffen" leer!. Erst beim zweiten Mal starten steht in "Port Nummer" ein (möglicherweise richtige) Wert drinnen. Der wurde beim ersten Durchlauf hineingeschrieben und steht nun beim zweiten Durchlauf bereits von Anfang an drinnen.
Du musst also die beiden Vorgänge "Visa suchen in der For-Schleife" und das VI "Visa: Öffnen" (respektive dessen Eingangsparameter "Port Nummer") sequenzieren! Das kannst du mit einer Sequenzstruktur machen.
Noch eine Anmerkung:
So wie du das programmiert hast, kann das zwar richtig funktionieren (nach der Sequenzierung) - aber das ist Zufall. In "Port Nummer" steht nämlich immer die letzte VISA-Schnittstelle drinnen. Und die ist halt zufällig genau dein Port. Sicher ist das aber nicht. Eigenlich müsstest du den Ausgang der For-Schleife (also das StringArray Ports) weiter verarbeiten.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
' schrieb:Mal was anderes zwischendurch. Hast Du mal was von einer State-Machine (mit Schieberegister) gehört. Du hast nämlich extrem viele lokale Variablen in Deinem Programm, die sich vermeiden ließen. Und noch was.... Nicht ein großes VI ist ein gutes VI, sondern ein VI, das auf max. einer Bildschirmgröße angezeigt werden kann. "View as Icon" würde ich in dem Zusammenhang auch gleich deaktivieren.
Sieh es einfach als Anregung.
Gruß Markus
Hallo,Markus
erlich gesagt, die Bemerkung ist etwas was ich sehr gerne umsetzen möchte, nur leider habe ich noch nicht eine State-Machine in LabVIEW programmieret.Mein Mikrocontroller arbeitet schon als eine State-Machine und natürlich wäre es ideal so änliches in LabVIEW zu programmieren.Ich habe mich machnhe Beispiele eingeschaut, nur ist leider die Zeit bis zum Abgabe meine Diplomarbet das Problem mich einbissen mehr mit der Beispielen auseinanderzu setzen.
Jetzt weiss ich nicht,ob es zu viel ist,wenn ich frage:
Könen Sie aus meinen VI nur ein oder zwei Zustände Ansatzweise programmieren, so dass ich das Prinzip verstehe und danach rest selber programmiere..
LG
Nedzad
P.S: Viellen Dank an alle die mich bis jetzt unterstützt haben!!!
Die virtuelle Port-Erkennung funktioniert jetzt richtig