VB.NET でハイパーターミナル タイプのアプリを作成していますが、シリアル接続に問題があります。デバイスにデータを送信すると、期待どおりの応答が得られますが、応答に余分な CR が含まれています。つまり、ハイパーターミナルでコマンドを送信すると、次のような応答が返されます。
response one
response two
しかし、私のアプリではそれが返されます。
response one
response two
コードは次のとおりです。
Private Sub textSend_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textSend.KeyPress
If e.KeyChar = Convert.ToChar(Keys.Enter) Then
connSerial.Write(textSend.Text & vbCr)
textSend.Text = ""
e.Handled = True
End If
End Sub
と
Private Sub connSerial_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles connSerial.DataReceived
ReceivedText(connSerial.ReadExisting())
End Sub
Private Sub ReceivedText(ByVal [text] As String)
If Me.textReply.InvokeRequired Then
Dim x As New SetTextCallback(AddressOf ReceivedText)
Me.Invoke(x, New Object() {(text)})
Else
textReply.AppendText([text])
End If
End Sub
私は 1200 ボー レートを使用しており、文字通りすべての行が別の行で区切られていますが、ボー レートを 57600 に上げると、まれにしか発生しません。すなわち;
response 1
response 2
response 3
response 4
response 5