LabVIEWForum.de
TCP/IP Read liest nicht bis zum Termination Character - 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: TCP/IP Read liest nicht bis zum Termination Character (/Thread-TCP-IP-Read-liest-nicht-bis-zum-Termination-Character)



TCP/IP Read liest nicht bis zum Termination Character - Gabs - 04.02.2009 14:28

Hallo allerseits,
ich habe ein Problem mit einem Gerät, das über TCP/IP angesprochen wird. Der Termination Character für das Lesen von Antworten ist ein LineFeed und ist in der Initialisierungsroutine auch so eingestellt, Enable TermChar ist auf TRUE gesetzt. Auf bestimmte Kommandos, die ich an das Gerät über VISA schicke, sendet das Gerät ein 1+Linefeed oder 0+Linefeed. Nun erwarte ich logischerweise, daß VISA immer bis zum Termination Character liest. Meistens tut es das auch, aber manchmal kommt es vor daß die VISA Read Funktion schon nach der 0 (oder 1) aufhört zu lesen und erst im nächsten Lesevorgang das Linefeed eingelesen wird. Wie kann so etwas denn passieren? Das Gerät selbst kommuniziert intern über einen XPort. Unter RS-232 (auch über VISA) tritt der Effekt nicht auf, es ist also kein Problem der Firmware des Gerätes (die vom XPort ja nichts mitbekommt).
Hat jemand eine Idee was da los sein könnte? Tritt auf unter LabVIEW Version 7.1 mit VISA 3.6 und VISA 4.1.
Gruß,
Gabs


TCP/IP Read liest nicht bis zum Termination Character - Y-P - 04.02.2009 15:16

Hast Du das auch schon mal mit einem neuen LabVIEW getestet (Du hast ja bis 8.5.1), oder tritt das nur bei LabVIEW 7.1 auf?

Gruß Markus

' schrieb:Tritt auf unter LabVIEW Version 7.1 mit VISA 3.6 und VISA 4.1.



TCP/IP Read liest nicht bis zum Termination Character - Gabs - 04.02.2009 15:17

Hallo Markus,
nein, bisher nur mit LV 7.1, aber die Kommunikation sollte von der VISA Version abhängen, nicht von der LabVIEW Version (jedenfalls gehe ich davon aus).
Gruß,
Gabs


' schrieb:Hast Du das auch schon mal mit einem neuen LabVIEW getestet (Du hast ja bis 8.5.1), oder tritt das nur bei LabVIEW 7.1 auf?

Gruß Markus



TCP/IP Read liest nicht bis zum Termination Character - Y-P - 04.02.2009 15:31

Würde mich interessieren, ob das Problem auch auftritt, wenn Du eine neuere Version von LabVIEW und natürlich dann auch VISA verwendest. Bei VISA ist, soweit ich weiß, momentan die Version 4.4 die aktuellste Version.
Ich hatte so einen Fehler bisher nicht. Huh
Kannst Du das testen, oder ist das ein zu großer Aufwand? Interessant wäre es.

Gruß Markus

' schrieb:Hallo Markus,
nein, bisher nur mit LV 7.1, aber die Kommunikation sollte von der VISA Version abhängen, nicht von der LabVIEW Version (jedenfalls gehe ich davon aus).
Gruß,
Gabs



TCP/IP Read liest nicht bis zum Termination Character - eg - 04.02.2009 15:37

Ich verstehe nicht so ganz was VISA mit TCP/IP zu tun hat. Es sind doch unterschiedliche Bibliotheken.
Ansonsten, wenn du bei der konfiguration der Schnittstelle Termination Char eingeschaltet hast und bis zu Term. Char lesen willst, musst du beim Lesen eine große Zahl für Anzahl Bytes einstellen. Das Lesen wird automatisch am Term. Char abgebrochen.


TCP/IP Read liest nicht bis zum Termination Character - Gabs - 04.02.2009 16:17

' schrieb:Ich verstehe nicht so ganz was VISA mit TCP/IP zu tun hat. Es sind doch unterschiedliche Bibliotheken.

Was VISA mit TCP/IP zu tun hat??? Die TCP/IP Kommunikation läuft über VISA, TCP/IP ist das Protokoll, VISA der Treiber...

' schrieb:Ansonsten, wenn du bei der konfiguration der Schnittstelle Termination Char eingeschaltet hast und bis zu Term. Char lesen willst, musst du beim Lesen eine große Zahl für Anzahl Bytes einstellen. Das Lesen wird automatisch am Term. Char abgebrochen.

Genau so sollte es funktionieren, tut es aber nunmal nicht - das ist ja genau meine Frage.

@ Markus: prinzipiell können wir das noch testen, müssen uns aber erstmal eine Partition dafür bauen, das wird etwas dauern.

Gruß,
Gabs


TCP/IP Read liest nicht bis zum Termination Character - eg - 04.02.2009 16:20

' schrieb:Was VISA mit TCP/IP zu tun hat??? Die TCP/IP Kommunikation läuft über VISA, TCP/IP ist das Protokoll, VISA der Treiber...

Ah, sorry, klar. Ich benutze aber VIs aus der Data Communication->TCP Palette, wahrscheinlich benutzen diese intern auch die VISA-Library.


TCP/IP Read liest nicht bis zum Termination Character - rolfk - 06.02.2009 07:21

' schrieb:Ah, sorry, klar. Ich benutze aber VIs aus der Data Communication->TCP Palette, wahrscheinlich benutzen diese intern auch die VISA-Library.

Nein, ganz sicher nicht. Die waren zuerst da. Dann kam VISA für GPIB und RS-232 zuerst als reine VI Lösung. Das war aber ziemlich komisch, unhandlich und recht unzuverlässig.

Dann kam VISA als externe Library und irgenwann konnte VISA auch TCP/IP da das als neuer Standard bei Messinstrumenten anzukommen drohte. Die Idee ist an sich bestechend und funktioniert bei VXI-11 Protokoll Geräten sogar. Ein einziger Instrument Treiber ganz egal ob das Gerät eine GPIB, RS-232, TCP/IP oder USB Schnittstelle hat.

Rolf Kalbermatter


TCP/IP Read liest nicht bis zum Termination Character - Gabs - 06.02.2009 09:19

' schrieb:Die Idee ist an sich bestechend und funktioniert bei VXI-11 Protokoll Geräten sogar. Ein einziger Instrument Treiber ganz egal ob das Gerät eine GPIB, RS-232, TCP/IP oder USB Schnittstelle hat.

Hallo Rolf,
die Idee funktioniert auch sonst recht gut - wir nutzen VISA für RS-232, GPIB und TCP/IP Steuerung unserer Kontroller, mit eigener Kommandosprache (identisch für alle Systeme von uns) und unter verschiedensten Betriebssystemen. Schlecht ist, daß die Initialisierung für die 3 unterstützten Schnittstellenprotokolle komplett verschieden ist. Noch schlechter ist daß immer noch solche Effekte wie oben beschrieben auftauchen. Bisher hab ich noch keine Lösung für das Problem Noe
Gruß,
Gabs


TCP/IP Read liest nicht bis zum Termination Character - rolfk - 06.02.2009 19:19

' schrieb:Hallo Rolf,
die Idee funktioniert auch sonst recht gut - wir nutzen VISA für RS-232, GPIB und TCP/IP Steuerung unserer Kontroller, mit eigener Kommandosprache (identisch für alle Systeme von uns) und unter verschiedensten Betriebssystemen. Schlecht ist, daß die Initialisierung für die 3 unterstützten Schnittstellenprotokolle komplett verschieden ist. Noch schlechter ist daß immer noch solche Effekte wie oben beschrieben auftauchen. Bisher hab ich noch keine Lösung für das Problem Noe

Das mit der Initialisierung ist leider unvermeidbar. Die Ganze Abstraktion funktioniert in den anderen Bereichen sehr gut aber hier wird es einfach unmöglich um das einheitlich zu tun. Wenn Du einen Instrument Treiber gemacht hast beschränkt sich die ganze Schnittstellenspezifische Dudelei aber normalerweise auf das Initialize VI, es sei denn die Firmware Programmierer haben ihrerseits wieder schnittstellenabhängige Features zum Beispiel im Kommandoset eingebaut Pccrash.

Das Problem das Du beschreibst kenne ich eigentlich nicht aber ich habe TCP/IP über VISA schon ziemlich lange nicht mehr gemacht. Das letzte mal war so um VISA 2.5 und das funktionierte leider in Dauertesten nie ganz richtig.

Kann es sein dass die Firmware das Zeilenende Zeichen als seperaten TCP/IP Write abschickt? Ich weiss das sollte nichts ausmachen aber wenn die Delays gross genug sind oder der sendende IP Stack den Naggle Algorithmus disabled hat kann das manchmal sehr komische Folgen haben da dann die entsprechenden Teile in seperaten TCP/IP Packeten verschickt werden. Ich denke dass die Erkennung des Ende Characters im TCP/IP VISA Treiber dabei manchmal etwas aus dem Takt kommen könnte.

Eigentlich etwas woran die VISA Entwickler durchaus interessiert sein könnten. Ich weiss nicht ob Dan Mondrik dort noch arbeitet aber er war in der Vergangenheit manchmal um die offiziellen Supportkanäle gegangen wenn er irgendwo von spezifischen Problemen mit VISA gehört hatte.

Rolf Kalbermatter