Hallo,
ich habe folgenden Code in vba6 (excel). Ich will ein Multimeter über
rs232c ansprechen. Dazu habe ich in vba das folgende kleine Programm:
1 | Sub CommandButton3_Click()
|
2 |
|
3 | //deklaration Kommunikation Fluke Multimeter
|
4 | Dim var_string As String
|
5 | Dim Port As New MSComm
|
6 |
|
7 | With Port
|
8 | .CommPort = 1 'Com-Port Nummer
|
9 | .Settings = "9600,N,8,1" 'Baudrate,Parity(N entspricht none),Datenbits,Stobbits)
|
10 | .PortOpen = True
|
11 | .Handshaking = comRTS
|
12 | End With
|
13 |
|
14 | Port.Output = "*IDN?" + Chr$(10) //sendet Befehl an Multimeter sich zu identifizieren.
|
15 |
|
16 | MsgBox "a"//Ausgabe von a
|
17 |
|
18 | var_string = Port.Input//fragt den eingang ab
|
19 | MsgBox "Antwort Com-Port: " & var_string, vbOKOnly, "Antwort"//Ausgabe der erhaltenen Zeichenkette vom rs232 Port
|
20 | End Sub
|
Das obige Programm gibt dann erst "a" aus und dann die Antwort vom
Multimeter(Seriennummer).
Das Problem ist, wenn ich die MsgBox "a" weglasse, enthält die zweite
MsgBox nicht mehr die Seriennummer des Multimeters...sondern gar nichts,
wenn man das Programm nochmal ausführt.
Meine Vermutung ist, dass die Abfrage des var_string = Port.Input zu
schnell kommt und das Multimeter noch gar nicht zurückgesendet hat...
Wie kann ich das beheben? Es gibt noch die Methode Port.commevent, aber
die Attribute haben meiner Meinung nach nichts, was mir helfen würde.
Ich bräuchte ein Flag, dass sagt, wann die Daten vollständig empfangen
wurden. Gibt es so etwas, oder hat jemand eine andere Idee?
Gruß guy