PingOfDeath1983
Grünschnabel
Hallo
Wie ich Daten über den COM-Port sende weiss ich inzwischen, aber jetzt habe ich ein neues Problem:
Ich möchte an ein über RS232 angeschlossenes Gerät einen Befehl senden "info" --> das Gerät antwortet dadrauf und gibt mir 3 Zeilen Code zurück (im Hyperterminal gesehen).
Wie kann ich es jetz hinbekommen, dass mein Programm dann ausliest wenn ich gerade den Befehl abgesendet habe (ich weiss ja nicht wie schnell das Gerät reagiert....).
Das Programm scheint dann zu hängen, jedenfalls kann man es nicht mehr minimieren, verschieben etc. ....
Jemand einen Lösungsvorschlag?
Gruß, PingOfDeath
Wie ich Daten über den COM-Port sende weiss ich inzwischen, aber jetzt habe ich ein neues Problem:
Ich möchte an ein über RS232 angeschlossenes Gerät einen Befehl senden "info" --> das Gerät antwortet dadrauf und gibt mir 3 Zeilen Code zurück (im Hyperterminal gesehen).
Wie kann ich es jetz hinbekommen, dass mein Programm dann ausliest wenn ich gerade den Befehl abgesendet habe (ich weiss ja nicht wie schnell das Gerät reagiert....).
Code:
Sub SendSerialData(ByVal data As String)
Dim readbuffer As Byte() = {}
If strComport = "COM ?" Then
Me.ComboBoxCOM.Enabled = True
Else
Using com As IO.Ports.SerialPort = _
My.Computer.Ports.OpenSerialPort(strComport, 9600, IO.Ports.Parity.None, 8, IO.Ports.StopBits.One)
com.Encoding = System.Text.Encoding.ASCII 'GetEncoding(850)
'portName ,baudRate ,parity ,dataBits ,stopBits
com.Encoding = System.Text.Encoding.UTF8
com.WriteLine(data)
End Using
End If
End Sub
Function ReadSerialData() As String
' Receive strings from a serial port.
Dim returnStr As String = ""
If strComport = "COM ?" Then
Me.ComboBoxCOM.Enabled = True
Else
Using com1 As IO.Ports.SerialPort = _
My.Computer.Ports.OpenSerialPort(strComport, 9600, IO.Ports.Parity.None, 8, IO.Ports.StopBits.One)
Do
Dim Incoming As String = com1.ReadLine()
If Incoming Is Nothing Then
Exit Do
Else
returnStr &= Incoming & vbCrLf
End If
Loop
com1.Close()
End Using
End If
Return returnStr
End Function
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
SendSerialData("info")
MsgBox(ReadSerialData())
End Sub
Das Programm scheint dann zu hängen, jedenfalls kann man es nicht mehr minimieren, verschieben etc. ....
Jemand einen Lösungsvorschlag?
Gruß, PingOfDeath