LabVIEWForum.de
Erste Schritte mit der ser. Schnittstelle - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA)
+---- Thema: Erste Schritte mit der ser. Schnittstelle (/Thread-Erste-Schritte-mit-der-ser-Schnittstelle)



Erste Schritte mit der ser. Schnittstelle - Herby07 - 18.12.2010 16:33

Hallo zusammen,
nach längerer Pause beschäftige ich mich nun wieder erstmalig mit der ser. Kommunikation über einen COM-Port.
Bei den ersten Schritten komm ich schon nicht weiter:
Welche VISA-Funktion nehme ich zum Öffnen/Konfigurieren des seriellen Ports ?
Es gibt ja einmal ´VISA öffnen´ und einmal ´VISA: Seriellen Port konfigurieren`.
Ist beim letzteren schon das Öffnen mit enthalten oder muß hierbei auch der Port noch geöffnet werden ?
Ich habe Beispiele gesehen, in denen nur ´VISA: seriellen Port konfigurieren" benutzt wird, aber auch Beispiel, in denen auch noch zusätzlich ´VISA öffnen´benutzt wird.
Kann mir da jemand weiter helfen ?

Vielen Dank,
Herby


Erste Schritte mit der ser. Schnittstelle - Kasi - 19.12.2010 02:14

Hallo Herby,

"Visa: seriellen Port konfigurieren" ist das VI, welches du benötigst. Oder du hängst einfach direkt nen Eigenschaftsknoten an die Visa-Leitung und suchst dir dort alles Notwendige selbst zusammen. Das Öffnen der Visa-Session wird mit dem Aufruf des VIs oder des Knotens implizit direkt mitgemacht. Das explizite Öffnen und Schließen der Visa-Ressource mittels VIs ist nur in Spezialfällen nötig. Meiner Meinung nach jedenfallsWink

Grüße,
Kasi


Erste Schritte mit der ser. Schnittstelle - Y-P - 19.12.2010 10:28

Ich mache grundsätzlich immer "Konfigurieren", dann "Öffnen", dann "Schreiben", dann "Lesen" (nach einer kurzen Wartezeit), dann "Schließen", wobei Konfigurieren, Öffnen und Schließen außerhalb einer evtl. vorhandenen Schleife liegen.

Gruß Markus


Erste Schritte mit der ser. Schnittstelle - Herby07 - 19.12.2010 12:04

Hallo Kasi, hallo Markus,
vielen Dank für die Antworten.
Leider weiß ich jetzt nicht, wie es grundsätzlich abläuft: beides scheint richtig zu sein und auch zu funktionieren: im NI-Beispiel "Basic Serial Write and Read.vi" wird nur konfiguiert und nicht noch zusätzlich geöffnet.
In anderen Beispielen wird beides gemacht.
Ich werde es also einmal so oder so versuchen.

Dann habe ich noch eine weitere Frage: im gerade genannten NI-Beispiel werden die Schnittstellen-Daten mit der VISA-Lesen-Funktion eingelesen. Die Bedienung dieser Funktion ist mir klar, aber in dem Beispiel befindet sich im Empfangsteil ein für mich noch "geheimnisvoller Kasten" mit der Bezeichnung: "Instr / Bytes at Port".
Wozu benötige ich den denn ?

Vielen Dank,
Herby


Erste Schritte mit der ser. Schnittstelle - Y-P - 19.12.2010 12:28

Hallo,

da werden immer genau so viele Bytes an Daten ausgelesen, die im Moment auch zur Verfügung stehen. Sind im Puffer also z.B. 10 Byte Daten, dann kommt aus Bytes at Port die Zahl 10. Schließt man das an Byte Count (am VISA Read) an, dann werden genau 10 Bytes ausgelesen.

Gruß Markus


Erste Schritte mit der ser. Schnittstelle - Kasi - 19.12.2010 12:37

mir hat diese Angabe am Anfang auch Kopfzerbrechen gemacht, speziell wenn ich nicht wusste, wieviele Bytes ich erwarte. Die meisten seriellen Geräte beenden ihre Kommunikation über ein Abschlußzeichen wie Carriage Return oder Line Feed. Sollte das bei deinem Gerät auch der Fall sein, so kannst du diesen sog. "Terminator" beim konfigurieren angeben (als ascii-code) und aktivieren. Danach gibst du dem Lesen-VI als Byte-Zahl mehr, als du maximal erwartest. Die Lese-Routine bricht dann automatisch erfolgreich ab, wenn vor erreichen des Byte-Limits der Terminator gelesen wird. Damit fällt auch der Eigenschaftsknoten "Bytes at Port" komplett weg, der dir im ungünstigsten Fall zu wenige Bytes liefert, weil das Gerät noch nicht seine komplette Antwort gesendet hat.


Erste Schritte mit der ser. Schnittstelle - Herby07 - 19.12.2010 12:39

Hallo Markus,
vielen Dank !

D.h. also: wenn ich bei "VISA Lesen" unter "Byte-Anzahl" z.B. fest 25 (Byte) eintrage, dann wartet diese Funktion auch wirklich so lange, bis die 25 Bytes empfangen wurden und schreibt sie erst dann komplett in den Lesepuffer.

Durch die "Trick-Konstruktion" im Beispiel erreiche ich dann, daß jedes empfangene Byte sofort in den Lesepuffer geschrieben und von dort aus weiter verarbeitet werden kann.
Ist das so richtig ?

Herby


Erste Schritte mit der ser. Schnittstelle - Herby07 - 19.12.2010 12:48

Hallo Kasi,
mit einem Terminator kann ich leider nicht arbeiten, denn ich möchte Roh-Messwerte, immer zwei Byte (16 Bit Meßwert) übertragen.
Wenn dann zufälliger Weise in den Messwerten der Terminater-Code auftaucht, bricht ja das Einlesen zu früh ab.
Das Messwert-Telegramm ist z.B. immer 20 Byte lang (10 Messwerte).
Dann trag ich also den Wert ´20´ bei Byte-Anzahl im VISA: Lesen ein ?

Herby


Erste Schritte mit der ser. Schnittstelle - Kasi - 19.12.2010 13:03

exakt. und für 20 bytes ist der default-timeout von....10(?) sekunden mehr als ausreichend.
...
ich bin mir gerade nicht sicher, aber ich glaube, wenn die antwort exakt genauso lang ist, wie die angeforderten bytes, kommt dann eine sehr verwirrende warnung aus dem fehlerausgang, dass die antwort genauso lang ist wie angefordert, was bedeuten KÖNNTE, dass noch mehr Bytes verfügbar sind. Was natürlich nicht stimmt. Nur so zu Info, FALLS du dir den Fehlercluster ansiehst und FALLS du diese Warnung siehst... das ist normal und kein Fehlverhalten.


Erste Schritte mit der ser. Schnittstelle - jg - 19.12.2010 13:10

Visa-öffnen wird bei Bedarf "intern" erledigt, deshalb klappt das auch mit "nur" Seriell-Konfigurieren.

Gruß, Jens