1

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
4

1 に答える 1

0

WriteLine Method代わりにWrite Method

   If e.KeyChar = Convert.ToChar(Keys.Enter) Then 
        connSerial.WriteLine(textSend.Text & vbCr)
        textSend.Clear();
        e.Handled = True 
   End If
于 2013-02-15T22:38:09.590 に答える