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 benutze den ND280 Winkelmesser bzw Counter von Heidenhain und möchte diesen mit LabVIEW auslesen. Dazu benutze ich Visa.
Leider funktioniert das nicht und ich bekomme immer wieder einen Fehler:
Error -1073807246 occurred at Property Node (arg 1) in VISA Configure Serial Port (Instr).vi->anglemeter2.vi
Könnt ihr mir helfen?
Benutze: LabVIEW 2011 unter Win7prof
DANKE
benutzt du einen USB<->Seriell-Wandler für die serielle Kommunikation? Wenn ja, möchte ich nur kurz auf meine Signatur verweisen Oder nutzt du den USB-B Anschluss direkt?
Ansonsten versucht auch National Instruments selbst eine Lösung für das Problem anzubieten, die hat bei mir aber nie funktioniert. Wie sieht es aus, wenn du das Gerät und den PC neu startest und sozusagen "frisch" die serielle Kommunikation aufrufst? Meckert er dann immer noch, dass die Session bereits verwendet wird?
Grüße,
Kasi
If you're havin' serial communication problems I feel bad for you, son, I got 99 problems but a baud ain't one! (except if using USB2serial converters, then I experience serialous problems)
Danke erstmal für die Antworten. Das Gerät ist nicht über den A/D-Wandler, sondern direkt über USB angeschlossen. Nach einem Systemneustart des Rechners, wobei das Gerät vorher eingeschaltet wurde, kommen keine Fehlermeldungen in meinem Programm mehr.
Vielen Dank Holger für deinen Treiber, allerdings fehlen mir im Ordner C:\Program Files\National Instruments\LabVIEW 2011\instr.lib\Vishay TEMT6000 die dazugehörigen VI`s und ich kann dein Programm somit nicht ausführen.
Ich habe nun folgendes Problem:
Das Programm ist ausführbar, keine Fehler, allerdings kein Inhalt.
Das Display des Gerätes zeigt einen Winkel an, den ich gerne auslesen möchte.
Hat jemand eine Idee, was ich falsch gemacht habe? Bei den Eigenschaften von VISA_read kann man die Darstellung von "read buffer" über Display-Style ändern. Das habe ich bereits getestet und bin zu keinem anderem Ergebnis gekommen.
Wenn die gesendeten und empfangenen Strings ein Abschlusszeichen haben- und das ist bei Dir der Fall - dann wird das Komnunikationsprogramm einfach bis zum Geht-nicht-mehr. Nix mit Lesen der Anzahl Byte im Buffer und anderem Cocolores rund um das Read-vi. Einfach nach dem Senden des Kommandos (mit write) Read auf den vollständigen Antwortstring warten lassen. Ich habe das hier schon 10 mal erklärt, suche mal selbst im Forum.
das mag ja sein, dass du das schon 10 mal oder sogar mehr erklärt hast. Bitte sei dann so gut und sende mir den Namen des Beitrages oder einen Link, weil ich in der Suche nichts gefunden habe.
Was meinst du mit "...dann wird das Komnunikationsprogramm einfach bis zum Geht-nicht-mehr" ? Und was meinst du mit " Nix mit Lesen der Anzahl Byte im Buffer und anderem Cocolores rund um das Read-vi"?
Also das Programm wird nicht undendlich ausgeführt. Also sei so nett und sende mir bitte den Link zu einem anderem Beitrag, indem das erklärt wurde, damit ich das dann in hoffentlich vollständigen Sätzen nachlesen kann.
Danke.
Anzeige
02.11.2012, 14:38 (Dieser Beitrag wurde zuletzt bearbeitet: 02.11.2012 14:43 von GerdW.)
Zitat:Hat jemand eine Idee, was ich falsch gemacht habe?
1.) Du nutzt zu viele lokale Variablen und hast damit RaceConditions erzeugt. Du kannst dir nicht mal sicher sein, was du da überhaupt für einen Befehl zum Gerät schickst!
2.) Das VISA-Read funktioniert tadellos. Dummerweise hast du aber BytesAtPort direkt nach dem Schreibbefehl abgefragt - und da ist der Lesepuffer noch leer! Also erhälst du "Null Bytes im Puffer" und dein VISA-Read liest entsprechend Null Bytes aus dem Puffer - genau so wie du es programmiert hast.
Zu Luckis Anmerkungen:
Da hat er recht. Es gibt hier so viele Threads zum Thema Umgang mit der seriellen Schnittstellen, dass man etwas Suchen und Eigeninitiative voraussetzen kann... Tipp: Guck mal im Unterforum "InstrumentIO", dort nach Themen zu RS232 oder VISA-Read. Ich habe direkt auf der ersten Seite mehrere Treffer gesehen!
Außerdem gibt es ja noch den Beispielfinder in LabVIEW: BasicSerialReadAndWrite erläutert den korrekten Umgang mit BytesAtPort (auch wenn der meist unnötig ist), AdvancedSerialReadAndWrite den Umgang mit RS232 ohne BytesAtPort!
Dass ich den Link nicht gebe, ist kein böser Wille. Ich bin ein vom Google- Suchmaschinen-Komfort verwöhnter User, mit der Suchmaschine eines Forums finde ich für gewöhnlich nichts, nicht einmal mich selbst
Als Anhaltspunkt mal dieses Bild:
Kannst ja mal suchen mit Benutzername: "Lucki", Stichworte: (der Reihe nach) Abschlusszeichen, Abschlußzeichen, termination char, Seriell
ich habe das Forum durchsucht. Unter LabVIEWForum.de / LabVIEW / LabVIEW Allgemein / Instrument IO & VISA finde ich unglaublich viele Beträge dazu. Die Beträge, die ich gelesen habe, haben mir nicht geholfen. In welchem Beitrag steht denn nun die Antwort auf speziell meine Frage? Ich habe mein Programm nun geändert und es wird immer noch nichts ausgelesen. Wenn du oder jemand anderes mir vielleicht sagen kannst, was ich falsch gemacht habe, wäre ich euch sehr dankbar. Wie soll ich "..Read auf den vollständigen Antwortstring warten lassen." ?
Danke
02.11.2012, 15:10 (Dieser Beitrag wurde zuletzt bearbeitet: 02.11.2012 15:12 von GerdW.)
zu deinem Bild:
- Warum gibst du ein TermChar vor (hier "#"), wenn du die Benutzung desselben ausschaltest?
- Statt der FOR-Loop, die nur einmal durchläuft, würde ich eine flache Sequenz nehmen. Oder (viel besser): mir ein VI erstellen, welches die Wartefunktion um ErrorIn/Out-Anschlüsse erweitert. Braucht man schließlich immer wieder...
- Stimmen alle Parameter für den seriellen Port?
- Funktioniert die Kommunikation, wenn du andere Programme verwendest (HyperTerm etc.)?
Zitat:Wie soll ich "..Read auf den vollständigen Antwortstring warten lassen." ?
Deine Geräteantwort müssen ein TermChar enthalten. Eben dieses musst du bei Init konfigurieren und Enablen. Dann VISA-Read mit einer beliebig großen Zahl zu lesender Zeichen aufrufen (jedenfalls größer als die erwartete Botschaft Zeichen enthält) und du erhälst (dank TermChar) automatisch deine komplette Botschaft. Das ist es, was Lucki mit "einfach bis zum Geht-Nicht-Mehr" bezeichnete...