DIAdem

cancel
Showing results for 
Search instead for 
Did you mean: 

Kommunikation über RS232

Hallo DIAdem'ler,

habe folgendes Problem: über RS232 sollen Spannung und Strom eingelesen werden.
Im Interfacemonitor klappt das auch, jedoch kriege ich es nicht hin, die Werte per Script-DAC-Treiber automatisch einzulesen.
Im Interfacemonitor sieht es folgendermaßen aus:

 Write COM1 "MEAS:VOLT?"

 Read COM1 "< ... >"
 OK.
 Read COM1 "< ... >"
.0.0120.
 Read COM1 "< ... >"
.OK.
 Read COM1 "< ... >"
.
 
 
 Write COM1 "MEAS:CURR?"

 Read COM1 "< ... >"
 OK.
 Read COM1 "< ... >"
.0.0200.
 Read COM1 "< ... >"
.OK.
 Read COM1 "< ... >"
.


Die Prozedur im DAC-Script-Treiber sieht folgendermaßen aus:
Sub SFD_ReadChannel( ChannelNumberP, ParamP, DataP, ErrorP )
  DataP = 0
  Select case ChannelNumberP
  case 0:  'Spannung
    oUDIM.write ("MEAS:VOLT?")
    VoltageValue = replace (oUDIM.read(),".",",")
    DataP = VoltageValue
  case 1: 'Strom
    oUDIM.write ("MEAS:CURR?")
    CurrentValue = replace (oUDIM.read(),".",",")
    DataP = CurrentValue
  End Select
End Sub


Wie kann ich aus den gesendeten 4 Zeilen nur den Zahlenwert herausfischen?
 
0 Kudos
Message 1 of 3
(5,906 Views)
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





0 Kudos
Message 2 of 3
(5,883 Views)
Hallo i-Qmax,

unter folgendem Link finden Sie einen Knowledge Base Eintrag mit einer ausführlichen Beschreibung des Script-DAC-Treibers von DIAdem.

0 Kudos
Message 3 of 3
(5,881 Views)