串行端口 - 没有可用的字节

时间:2014-01-14 14:44:55

标签: vb.net serial-port

我正在开发一个从COM端口获取字节并管理它们的应用程序 不幸的是,我没有机会在这个应用程序运行的PC上工作,所以我需要一种方法在我的COM端口上发送“假数据”,以便我的应用程序可以读取它。

无论我做什么,所选COM端口上都没有字节可用 这是一个基本样本:

'First I create and open desired COM port
Dim port = New SerialPort(cboPorts.SelectedItem, 9600, Parity.None, 8, StopBits.One)
port.Open()
If Not port.IsOpen Then Exit Sub

然后,使用计时器,我尝试在上面写,然后阅读:

Private Sub tmrTest_Tick(sender As Object, e As EventArgs) Handles tmrTest.Tick
    Dim tot = rnd.Next(0, 3)
    If tot > 0 Then
        Dim buffer(tot) As Byte
        rnd.NextBytes(buffer)
        port.Write(buffer, 0, tot)

        Dim t = port.BytesToRead
        Console.WriteLine("Got {0} bytes on COM port", t)
    End If
End Sub

在实际应用中,字节在写入后不会立即被读取(我有一个每秒读取COM端口的定时器)但结果是相同的:port.BytesToRead始终为零。

1 个答案:

答案 0 :(得分:2)

串口不能这样工作。您无法回读刚刚写完的数据。当您阅读时,您阅读了输入缓冲区,并在您写入时写入输出缓冲区(您无法读取 >输出缓冲区)

模拟所需内容的唯一方法是使用另一台机器并在它们之间连接一个串行端口,或者读取和写入同一台机器上的两个不同的串行端口AppA写入串行端口1并从端口2和AppB读取反其道而行之。