1

我的设置:

  1. 使用 FTDI FT2232D 芯片的硬件设备使用 USB 连接到我的电脑。
  2. 我已经安装了 VCP(虚拟 COM 端口)驱动程序,它显示了通过 USB 连接的 FTDI 芯片作为 Windows 中的 COM 端口。
  3. 我正在使用一个简单的 VB.net 程序来读取 com 端口。

行为:

当我使用 realterm 通过 com 端口向我的设备发送数据时,设备总是成功回复。

当我使用我的 VB.net 测试程序然后使用 realterm 时,tx 工作,但 realterm 没有收到任何回复。

我可以通过拔下usb,重新插入然后重新发送命令来让realterm再次接收数据。

使用我的 vb.net 程序时,拔下和重新插入 USB 并不能解决问题。我的 vb.net 程序有时有效,但并非总是如此。

看起来我的程序中的某些东西导致 com 端口损坏,修复它的唯一方法是拔下 USB 电缆并重新插入。

我的代码看起来像这样:

Public Class SerialConnection

    Private MSerialPort As SerialPort
    Private Const StartByte As Byte = &H5B

    Public Sub New(ByVal Port As String)
        MSerialPort = New SerialPort()
        MSerialPort.PortName = Port
        MSerialPort.BaudRate = 9600
        MSerialPort.ReadTimeout = 5000
        MSerialPort.WriteTimeout = 5000
        MSerialPort.Open()
    End Sub

    Public Function SerialPacketTransaction()
        Dim SendPacketBytes = New List(Of Byte)
        Dim ReceivePacketBytes As List(Of Byte)

        MSerialPort.DiscardInBuffer()
    MSerialPort.DiscardOutBuffer()

        SendPacketBytes.Add(StartByte)

        MSerialPort.Write(SendPacketBytes.ToArray, 0, SendPacketBytes.Count)

        Dim TimeoutTime As DateTime = Now().AddMilliseconds(MSerialPort.ReadTimeout)
        Dim readbyte As Byte
        Do
            If Now() > TimeoutTime Then Throw New TimeoutException("Timeout waiting for response")
            Thread.Sleep(50)
            readbyte = ReadSerialByte()
        Loop Until (readbyte = StartByte)
    End Sub
End Class
4

1 回答 1

0

我有类似的问题,您可以尝试在阅读之前等待接收字节。

此处的详细信息:USB 串行虚拟 COM 端口:读取不工作但写入工作

于 2014-04-07T14:56:57.440 回答