Hallo i-Qmax,
ich vermute einmal, dass die Antworten des Geräts mit <CR><LF> abgeschlossen werden. Der Ausdruck der Daten aus dem Schnittstellenmonitor deutet jedenfalls darauf hin. Sie können dies überprüfen, indem Sie im Schnittstellenmonitor von DIAdem die Darstellung auf
Hex umstellen. In diesem Fall sollte die Ausgabe etwa so ähnlich aussehen:
Read COM1 "< ... >"
4F 4B 0D -- OK.
Read COM1 "< ... >"
0A -- .
In diesem Fall sollten Sie in Ihrem Script bei der Initialisierung der seriellen Schnittstelle den Delimiter auf <CR><LF> einstellen. Hierzu fügen Sie in Ihr Script nach dem Öffnen der seriellen Schnittstelle folgende Zeile ein:
Call oUDI.ParamSet("Delimiter",vbcrlf)
Damit wird der Delimiter auf <CR><LF> umgestellt.
Zum Einlesen der Daten von Ihrem Meßgerät müssen Sie zunächst den entsprechenden Befehl an das Gerät senden:
oUDIM.write ("MEAS:VOLT?")
Mit diesem Befehl wird der String
MEAS:VOLT?<CR><LF> an das Messgerät gesendet. Hierauf antwortet das Gerät mit folgenden drei Zeilen:
OK<CR><LF>
0.0120<CR><LF>
OK<CR><LF>
Die erste und dritte Zeile lesen können sie mit dem Befehl
Call oUDIM.Read
auslesen. Die Informationen aus diesen Zeilen werden nicht mehr benötigt und brauchen deshalb nicht gespeichert werden. Den eigentlichen Messwert lesen Sie wie folgt aus:
Wert = oUDIM.Read(20, 1)Mit dieser Zeile lesen Sie einen String von max. 20 Zeichen, wobei der Delimiter der Zeile (<CR><LF>) aus dem String entfernt wird. Die Variable Wert enthält nun die Zeichenkette
"
0.0120". Je nach Ländereinstellung Ihres Rechners müssen Sie diesen String noch anpassen. Für die Ländereinstellung Deutschland muß der Dezimalpunkt in ein Komma umgewandelt werden. Dies geschieht mit folgender Anweisung:
Wert = replace(Wert,".",",")Die Varibale Wert enthält nun den Wert "
0,0120". Dieser Wert muß nun noch in eine Zahl vom Typ Double umgewandelt werden, bevor sie der Ergebnisvariablen zugewiesen werden kann.
DataP = CDbl(Wert)Das Script zum Auslesen von Strom und Spannung sollte dann etwa so aussehen:
Sub SFD_ReadChannel( ChannelNumberP, ParamP, DataP, ErrorP )
Select case ChannelNumberP
case 0: 'Spannung
oUDIM.write ("MEAS:VOLT?")
case 1: 'Strom
oUDIM.write ("MEAS:CURR?")
End Select
call oUDIM.read
Value = replace (oUDIM.read(20, 1),".",",")
call oUDIM.read
DataP = CDbl(Value)
End Sub