11.08.2006, 17:05
|
cb
LVF-SeniorMod
Beiträge: 1.731
Registriert seit: Feb 2006
2018SP1
2001
EN
40xxx
Deutschland
|
Unvollständige Antwort an serieller Schnittstelle (VISA)
' schrieb:Hallo. Kurze erklärung zum Term-Char:
Nach dem Empangen dieses Zeichens wird die VISA-Read-Funktion beendet!!!
Wenn du da also ein {LF} oder {CR} oder sogar beides eingetragen hast, dann ist klar, warum das Empfangen nach der ersten Zeile abbricht.
Du solltest dich mal schlau machen, wie die Antwort deines Peripheriegerätes aussieht (was sendet es nach jeder Zeile, was sendet es, wenn es mit dem Senden fertig ist?).
Poste doch mal alle Parameter und das Datenformat.
dem kann ich mich nur anschliessen:
angenommen dein Gerät sendet nun einen String, der mit einem nr beginnt und der Termination Char ist TRUE, mit dem Wert 0x0A = n = {LF}, dann bekommst du genau 0 Byte, weil der Termination Char abgeschnitten wird und der String davor ausgegeben wird ...
Das Handshaking stellt man mit dem Enum "flow control" ein. Grob gibt es ein Software- und ein Hardware-Handshaking, das genau so eingestellt sein muss, wie die Gegenstelle. Die Parameter müssen in der Doku zum Gerät beschrieben sein ...
Falls du partout nicht weiterkommst und die Geschichte dringend ist, kannst du einen Tag Start-Up-Assistance bei mir bestellen, ich hab noch jedes RS232 Gerät zum sprechen gebracht ...
Grüße
CB
|
|
|
14.08.2006, 15:29
|
lise
LVF-Grünschnabel
Beiträge: 16
Registriert seit: Aug 2006
7.1
2005
kA
Deutschland
|
Unvollständige Antwort an serieller Schnittstelle (VISA)
Hi,
vielen Dank schon mal bis hierhin, allerdings komme ich noch nicht richtig in die Gänge was wohl leider an meinem leider noch Unverständnis der Datenübertragung liegt. Erst einmal poste ich Euch die Daten:
baud rate 115200
data bits 8
parity none
stop bits 1 (bis hierhin hab' ich alles so eingestellt)
HS: 0 (was ist das??)
Counters: (kann ich leider auch nicht viel mit anfangen...)
PUT = 0, PUC = 0
WrE = 0, WrF = 0
von 'flow control' ist leider nix zu lesen oder die info steht in den Angaben oben und ich kann's nicht erkennen?
flow control hatte ich bisher immer auf 'none'. Unter dem Stichwort 'Touch panel calibration' gibt es da noch Angaben zu XOff, XSlp, YOff und YSlp - muß ich deshalb 'flow control' auf XON/XOFF setzen? (Wobei ich das gerade auch relativ erfolglos versucht habe, aber vielleicht paßt ja auch noch was anderes nicht?)
Angaben zum Format der Daten gibt's nicht, ich kann wie gesagt nur durch das Terminalprogramm sagen, daß es mehrere Zeilen mit Buchstaben, (Fließkomma- und ganzen) Zahlen und anderen Zeichen (z.B. "/") gibt, das allerdings in den verschiedensten Ausführungen. (gibt es einen Ausdruck, den LabVIEW versteht und wo alles drin ist - alle Möglichkeiten der Zusammensetzung integriert sind?)
Und wie kann ich am besten herausfinden, welches Zeichen am Ende einer Zeile steht? Der Hersteller macht keine Angaben. Ich hab' im MAX schon mal ein 'n' am Ende einer Antwort stehen sehen (bei VISA Session), allerdings ist es mir bisher nicht gelungen, selbige Zeile nochmal zu erzeugen.
Habe also nun (unter anderem!) folgende Kombination versucht:
flow control XON/XOFF
enable Termination Char OFF
'termitation char' selbst wird doch nun nicht mehr berücksichtigt? Und für den Fall: ich kann 'termination char' (steht auf '0' auf alle natürlichen Zahlen zwischen 0 und 255 einstellen - ???
Jedenfalls krieg' ich immer noch (wenn überhaupt) meine Zeile 1...
lg,
lise
|
|
|
14.08.2006, 16:13
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
|
Unvollständige Antwort an serieller Schnittstelle (VISA)
Hallo,
probier' doch mal in Instrument I/O -> VISA -> VISA advanced den Property-Node auf Deinem Blockdiagramm zu platzieren und stelle ihn auf Timeout (Write) ein. Dann kannst Du eine Konstante anlegen. Mach' die mal groß genug (z.B. 3600000, so habe ich es) und schau' nach, ob es dann klappt.
Das war bei mir auch mal das Problem mit VISA, allerdings bei einem GPIB-Digitalmultimeter.
Aber vielleicht hilft es ja weiter.
Gruß Markus
--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
|
|
|
14.08.2006, 16:57
|
lise
LVF-Grünschnabel
Beiträge: 16
Registriert seit: Aug 2006
7.1
2005
kA
Deutschland
|
Unvollständige Antwort an serieller Schnittstelle (VISA)
' schrieb:Hallo,
probier' doch mal in Instrument I/O -> VISA -> VISA advanced den Property-Node auf Deinem Blockdiagramm zu platzieren und stelle ihn auf Timeout (Write) ein. Dann kannst Du eine Konstante anlegen. Mach' die mal groß genug (z.B. 3600000, so habe ich es) und schau' nach, ob es dann klappt.
Das war bei mir auch mal das Problem mit VISA, allerdings bei einem GPIB-Digitalmultimeter.
Aber vielleicht hilft es ja weiter.
Gruß Markus
wohin soll ich's bauen? Hab's gerade mit vor dem Zählen der Bytes probiert, ohne Erfolg - keine Veränderung.
Wartezeit ist beim Lesen auch schon drin (in der case loop), aber es werden ja schon zu wenig Bytes gezählt...
lg,
lise
|
|
|
15.08.2006, 06:23
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
|
Unvollständige Antwort an serieller Schnittstelle (VISA)
Es sollte halt irgendwann aufgerufen werden, bevor "Read" ausgeführt wird, wann genau ist aber egal.
Und Du kannst ja in Deinem Read auch mal eine vordefinierte Byteanzahl einstellen.
Gruß Markus
' schrieb:wohin soll ich's bauen? Hab's gerade mit vor dem Zählen der Bytes probiert, ohne Erfolg - keine Veränderung.
Wartezeit ist beim Lesen auch schon drin (in der case loop), aber es werden ja schon zu wenig Bytes gezählt...
lg,
lise
--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
|
|
|
15.08.2006, 08:18
|
lise
LVF-Grünschnabel
Beiträge: 16
Registriert seit: Aug 2006
7.1
2005
kA
Deutschland
|
Unvollständige Antwort an serieller Schnittstelle (VISA)
' schrieb:Es sollte halt irgendwann aufgerufen werden, bevor "Read" ausgeführt wird, wann genau ist aber egal.
Und Du kannst ja in Deinem Read auch mal eine vordefinierte Byteanzahl einstellen.
Gruß Markus
japp, hab' ich schon versucht... Fehlermeldung wenn Byteanzahl größer als erste Zeile und danach immer ("Timeout expired...")
ich denke, daran liegt's nicht...
lg,
lise
|
|
|
15.08.2006, 08:34
|
diplNisse
LVF-Gelegenheitsschreiber
Beiträge: 97
Registriert seit: Apr 2006
2010
2006
EN
Deutschland
|
Unvollständige Antwort an serieller Schnittstelle (VISA)
' schrieb:japp, hab' ich schon versucht... Fehlermeldung wenn Byteanzahl größer als erste Zeile und danach immer ("Timeout expired...")
ich denke, daran liegt's nicht...
lg,
lise
Hallo!
Wenn du einen Timeout bekommst bei einer Bytezahl größer als deine 1. Zeile, dann schätze ich, dass einfach nicht mehr als die erste Zeile gesendet wird!
Vielleicht ist es für Dich extrem hilfreich, dir einen "Spion" zu bauen: Einfach die Tx-Leitung vom Peripheriegerät anzapfen und an einem freien COM-Port an die Rx-Leitung anschließen (Ground natürlich auch, also GNG auf GND, Pin 5).
Dann kannst du mit einem Hyper-Terminal oder Comwatch "mithören". Das habe ich auch immer gemacht um Fehler zu suchen. Vorraussetzung ist natürlich ein zweiter COM-Port, oder ein zweiter Rechner.
Aber das ist nie verkehrt.
Nisse
|
|
|
15.08.2006, 09:39
|
lise
LVF-Grünschnabel
Beiträge: 16
Registriert seit: Aug 2006
7.1
2005
kA
Deutschland
|
Unvollständige Antwort an serieller Schnittstelle (VISA)
' schrieb:Hallo!
Wenn du einen Timeout bekommst bei einer Bytezahl größer als deine 1. Zeile, dann schätze ich, dass einfach nicht mehr als die erste Zeile gesendet wird!
Vielleicht ist es für Dich extrem hilfreich, dir einen "Spion" zu bauen: Einfach die Tx-Leitung vom Peripheriegerät anzapfen und an einem freien COM-Port an die Rx-Leitung anschließen (Ground natürlich auch, also GNG auf GND, Pin 5).
Dann kannst du mit einem Hyper-Terminal oder Comwatch "mithören". Das habe ich auch immer gemacht um Fehler zu suchen. Vorraussetzung ist natürlich ein zweiter COM-Port, oder ein zweiter Rechner.
Aber das ist nie verkehrt.
Nisse
hi,
mit einem Terminal-Programm kann ich sehen welche Antwort auf welchen Befehl vom Gerät zurückkommt. Daher weiß ich, daß mehrere Zeilen zurückkommen...
lg,
lise
|
|
|
30.08.2006, 21:42
|
lise
LVF-Grünschnabel
Beiträge: 16
Registriert seit: Aug 2006
7.1
2005
kA
Deutschland
|
Unvollständige Antwort an serieller Schnittstelle (VISA)
... nun isse da, die Antwort. Und wie? Man nehme lieber nicht VISA...
Danke noch mal für all Eure Mühen, aber die Sache mit VISA werde ich wohl lieber erst anpacken wenn ich groß bin...
lg,
lise
|
|
|
| |