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!
24.01.2007, 14:38 (Dieser Beitrag wurde zuletzt bearbeitet: 01.09.2008 20:00 von jg.)
Vielleicht erstmal vorweg: Ich bin nicht nur neu hier im Forum, sondern auch noch relativ neu was LabVIEW angeht, kann also sein dass dir Frage vielleicht in den Basics besser aufgehoben wäre...
Zum Problem: Ich möchte über VISA Daten von einem Meßgerät (genauer gesagt ein Optris LaserSight-Thermometer mit USB-Schnittstelle) ins LabVIEW bekommen.
Der Hersteller bietet keine passende library an, eine Kommandotabelle um das Thermometer anzusprechen hab ich aber bekommen.
Das Gerät zu finden war kein Problem, über 'Ressource finden' taucht es als 'ASRL3::INSTR' auf (Heißt für mich jetzt dass ich es eigentlich direkt über VISA open/write/read/close ansprechen und abfragen kann, oder?)
Bau ich mir jetzt ein kleines VI entsprechend dem 'USB Instrument Control Tutorial' von NI auf bekomme ich nur eine Fehlermeldung:
Fehler -1073807339 ist bei VISA: Lesen in USB-test.vi aufgetreten
Mögliche Gründe:
VISA: (Hex 0xBFFF0015) Timeout abgelaufen, bevor Operation vollständig.
Anscheinend hab ich zumindest schon mal ein Kommando zum Thermometer geschickt, die Fehlermeldung bezieht sich ja auf den VISA:read (und das Display am Gerät ging an), vermutlich bekomm ich einfach keine Antwort zurück?
Wenn ich am Schreibpuffer von write eine Hex-Bytefolge (das erwartet das Gerät) habe, wird die dann auch genau so übermittelt?
Meine Vermutung geht halt in die Richtung dass am Gerät etwas anderes ankommt und ich deshalb keine Rückmeldung bekomme...
Achja, und wo ich grad schon am Fragen bin: Wo ist eigentlich der Unterschied zwischen den 'Visa:open/read/write/close'-Funktionen und den 'Visa:USB'-Funktionen?
Irgendwie finde ich die Hilfe dazu recht nichtssagend...
Hi zusammen,
ich hänge exakt an der selben Stelle. Deswegen grab ich den Thread wieder aus und hoffe, das mir jetzt jemand weiterhelfen kann.
Wenn ich einen Befehl schicke (z.B. setup Einstellungen vornehme) wird das Display zwar kurz beleuchtet, die Einstellungen werden aber nicht übernommen. Deswegen schließe ich mich der Vermutung des Thread-Erstellers an, dass die Übergabewerte irgendwie verändert werden.
Gibt es eine Möglichkeit, die Kommunikation zu belauschen? Oder andere Möglichkeiten das Problem weiter einzugrenzen?
Ich wäre auch über aufschlussreiche Tutorials oÄ dankbar! (Ja, ich habe schon gesucht, aber nichts hilfreiches zu dem Problem gefunden)
Hallo mojo,
benutzt du das gleiche vi, wie der Thread Schreiber vor Dir? Wenn ja, dann probiere doch mal soviele Bytes zu lesen wie tatsächlich da sind. Du kannst einen Eigenschaftsknoten dazu verwenden. Mit NI Spy sollte es möglich sein die Kommunikation aufzunehmen.
Mike
02.09.2008, 09:57 (Dieser Beitrag wurde zuletzt bearbeitet: 02.09.2008 10:00 von mojo.)
danke erstmal für deine Mühe. Ich benutze das gleiche vi wie Nanzo, habe es allerdings etwas erweitert um zB den Timeout anzupassen. Die Zeitüberschreitung tritt bereits ab einem zu lesenden Byte auf, lt. Hersteller sollten zwei geliefert werden.
Laut NI Spy wird der Befehl richtig übertragen.
Ich werde mal direkt den Hersteller kontaktieren, für weitere Anregungen bin ich trotzdem dankbar.
Schönen Gruß
Mojo
02.09.2008, 10:48 (Dieser Beitrag wurde zuletzt bearbeitet: 10.09.2008 22:28 von jg.)
Ich hab doch selber noch ein bisschen rumgebastelt und mal selber alle Parameter gesetzt (obwohl das in im "Basic Serial Write and Read.vi", das ich auch getestet hab, auch gemacht wird). Kaum macht mans richtig...
Allerdings werden erst ab dem 2. Durchlauf gültige Werte geliefert.
Für zukünftige Suchende ist das leidlich dokumentierte vi im Anhang.
10.09.2008, 12:40 (Dieser Beitrag wurde zuletzt bearbeitet: 10.09.2008 22:31 von jg.)
' schrieb:Ich hab doch selber noch ein bisschen rumgebastelt und mal selber alle Parameter gesetzt (obwohl das in im "Basic Serial Write and Read.vi", das ich auch getestet hab, auch gemacht wird). Kaum macht mans richtig...
Allerdings werden erst ab dem 2. Durchlauf gültige Werte geliefert.
Für zukünftige Suchende ist das leidlich dokumentierte vi im Anhang.
Hallo,
ich habe das ännliche Problem mit meinem VI.Mit dem Vi möchte ich an einen Luminance Colorimeter Befehle schicken und die Daten , die er liefert auslesen können.Damit der Messvorgang verwirklicht werden kann, muss das Gerät einen Befehl aus 65 Zeichen über eine voraktivierte USB Schnittstelle bekommen.Mit MAX ist es schon kein Problem, aber in meinem VI stimmt villeicht etwas mit Syntaxis nicht.
Würdest du bitte dein VI so speichern , dass ich mit meiner LV 8.5.1 werde in der Lage sein ihn öffnen können.
Da ist mein VI
Könntest du evtl. von dem USB_Test das Blockdiagramm posten?? Weil hab 8.5 & kann dein 8.6 leider nicht öffnen.
Ich hock genau akkurat an dem selben Problem wie der TE & hab langsam die Faxen dicke, weil ich:
a) nix find um den fehler zu lokalisieren
b) der support mal net gut ist (um es mal ganz moderat auszudrücken)
c) mit USB_Trace genau dann kein Capture bekomme, wenn es nötig wäre (was drauf hindeutet, das entweder gar nix passiert oder LV das Capturen nicht zulässt)
d) viel zu viel Zeit an so einer 'lapalie' verliere die meiner Meinung nach gar nicht auftauchen sollte
e) mittlerweile so viel über USB weis, aber mir das bei LabVIEW absolut gar nix bringt
f) die Hilfe nicht im entferntesten Hilft
g) ich trotz eingehende Recherche & Supportnachfrage immer noch nicht den unterschied zwischen den VISA & USB - VI's kenne
h) LV untereindander kompatibel ist wie kein zweites Programm
so, tut mir leid wenn es etwas 'temperamentvoll' klingt aber das musste mal raus ... auch wenn hier absolut keiner was für diese 'Zustände' kann...
p.s.: was geht denn net:
Ich habe eine USB-Verbindung hergestellt, die senden & empfangen soll. Senden tut sie, aber empfangen tut sie nicht. Ausser mit dem Interrupt-Event. Das ist aber sehr unzuverlässig & geht nicht immer. Wenn ich einfach nur empfangen will & das viRead benutze, bekomm ich den 0xbfff003a.
Warum? Leider absolut keine ahnung.
Hab das VI file im anhang hochgeladen. Bin für jede Hilfe & Anteilnahme sehr dankbar!
Das NI-Spy file darf ich leider nicht hochladen.
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
Auslesen von Messdaten über USB
Ich habe mir Eure Bsp. nicht angeschaut, aber es hört sich so an, dass Euch das hier weiterhelfen könnte:
Ein VISA Read verwende ich nur, wenn ein Befehl ans Gerät geschickt wird, bei dem eine Antwort zurückkommt (meistens Befehle mit "?", also z.B. "READ?"). Bei allen anderen Befehlen (zum Einstellen irgendwelcher Parameter,...) verwende ich nur das VISA Write, indem ich meinen Befehl auf "?" untersuche und dies dann in einem Case auswerte (T = Read wird ausgeführt, F = Read wird nicht ausgeführt).
Weiterhin gibt es u.U. Probleme, wenn man Befehle gekoppelt ans Gerät schickt. Ich schicke jeden Befehl nur einzeln ans Gerät.
Gruß Markus
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
' schrieb:Ich habe mir Eure Bsp. nicht angeschaut, aber es hört sich so an, dass Euch das hier weiterhelfen könnte:
Ein VISA Read verwende ich nur, wenn ein Befehl ans Gerät geschickt wird, bei dem eine Antwort zurückkommt (meistens Befehle mit "?", also z.B. "READ?"). Bei allen anderen Befehlen (zum Einstellen irgendwelcher Parameter,...) verwende ich nur das VISA Write, indem ich meinen Befehl auf "?" untersuche und dies dann in einem Case auswerte (T = Read wird ausgeführt, F = Read wird nicht ausgeführt).
Weiterhin gibt es u.U. Probleme, wenn man Befehle gekoppelt ans Gerät schickt. Ich schicke jeden Befehl nur einzeln ans Gerät.
Gruß Markus
Hi!
Weis zwar grad' nicht ob es einen Unterschied macht, aber ich schicke Daten zu einem Controller. Auf dem Controller, habe ich die Desrkriptoren und Schreibe & Lesefunktionen herkömmlich in C programmiert. Von LV weis der µC nix. Ich bekomme alles im MAX wiedergegeben, also die Endpunkte & die Adressen vom Lesen bzw. scheiben & den Status und das alles. Ohne Probleme. Auch wärhend des Programmablaufs.
Also schicke ich zum µC mit viWrite & empfange mit viRead. Soweit die Theorie.
1.) Jetzt verstehe ich ihr "?" gerade nicht. Also schicken sie Daten mit einem '?' an das zu beschreibende Gerät & Read liest die ankommenden daraus resultierenden Daten??? Verstehe ich das richtig?
2.) Mit gekoppelt meinen sie direkt hintereinander ausgeführt ???
Ich habe sie in ein Ereignis geschrieben, das auf 'Knopfdruck' die VI's anspricht. Naja, ansprechen soll.