01.03.2007, 10:06
Hallo Experten,
ich möchte Binärdaten an ein serielles Gerät schreiben und die "Rohantwort" erhalten. Dazu habe ich das anhängende (Standard)-VI für serielle Kommunikation erstellt. Ich kann verschiedene "write buffers" als Hexadezimalzahlen eingeben und erhalte da unterschiedlich lange Antworten.
Die Kommunikation mit dem Port funktioniert, ich habe das mit einem Portsniffer überprüft. Dort tauchen genau die richtigen Befehle und Antworten auf.
Einer der Befehle besteht z.B. aus drei Bytes, ich erwarte sechs Bytes als Antwort. Allerdings:
bytes written sagt drei.
bytes at port sagt sechs.
return count sagt zwei, mein "read string" ist entsprechend auch nur zwei bytes lang.
der Portsniffer erhält alle sechs bytes als Antwort, irgendwo liest VISA-Read also weniger Bytes als am Port anliegen. Wie kann das kommen?
Ein anderer Befehl (auch drei Sendebytes lang) soll 13 Antwortbytes ergeben. Hier sind "bytes at port" und "return count" jeweils 13 bytes lang, alles wird korrekt erfaßt.
Mein VI (ich kann es auch gerne nochmal anhängen) scheint mir ja eigentlich korrekt zu sein.
Nachtrag: VISA-Read scheint irgendwie den Hexcode "0A" (also dez. 10) nicht zu mögen - sobald in der Antwort (also den 13 Antwortbytes) ein 0A vorkommt, so wird der Lesevorgang an dieser Stelle abgebrochen. Die Daten liegen aber lt. Sniffer korrekt am Port an.
ich möchte Binärdaten an ein serielles Gerät schreiben und die "Rohantwort" erhalten. Dazu habe ich das anhängende (Standard)-VI für serielle Kommunikation erstellt. Ich kann verschiedene "write buffers" als Hexadezimalzahlen eingeben und erhalte da unterschiedlich lange Antworten.
Die Kommunikation mit dem Port funktioniert, ich habe das mit einem Portsniffer überprüft. Dort tauchen genau die richtigen Befehle und Antworten auf.
Einer der Befehle besteht z.B. aus drei Bytes, ich erwarte sechs Bytes als Antwort. Allerdings:
bytes written sagt drei.
bytes at port sagt sechs.
return count sagt zwei, mein "read string" ist entsprechend auch nur zwei bytes lang.
der Portsniffer erhält alle sechs bytes als Antwort, irgendwo liest VISA-Read also weniger Bytes als am Port anliegen. Wie kann das kommen?
Ein anderer Befehl (auch drei Sendebytes lang) soll 13 Antwortbytes ergeben. Hier sind "bytes at port" und "return count" jeweils 13 bytes lang, alles wird korrekt erfaßt.
Mein VI (ich kann es auch gerne nochmal anhängen) scheint mir ja eigentlich korrekt zu sein.
Nachtrag: VISA-Read scheint irgendwie den Hexcode "0A" (also dez. 10) nicht zu mögen - sobald in der Antwort (also den 13 Antwortbytes) ein 0A vorkommt, so wird der Lesevorgang an dieser Stelle abgebrochen. Die Daten liegen aber lt. Sniffer korrekt am Port an.