Vb.net 串行端口-无可用字节
我正在开发一个从COM端口获取字节并管理它们的应用程序。Vb.net 串行端口-无可用字节,vb.net,serial-port,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
不幸的是,我没有机会在运行此应用程序的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端口),但结果是相同的:
端口。BytesToRead
始终为零。串行端口不以这种方式工作。你不能读回你刚刚写出来的数据。读取时,读取输入缓冲区;写入时,写入输出缓冲区(无法读取输出缓冲区)
模拟所需内容的唯一方法是使用另一台机器并在它们之间连接一个串行端口,或者读写同一台机器上的两个不同串行端口AppA写入串行端口1并从端口2读取,而AppB则做相反的操作。不知道:(感谢您的回答!有几个Ethernet2RS232适配器。我使用它们来实现这些功能。因此,您可以从板载串行端口发送数据,并通过适配器或其他方式接收数据。在调用Write()后立即调用discardorBuffer()BytStutead将永远是零,字节需要写入,设备响应。抱歉,@汉斯潘,这是我后来修改的一个尝试。编辑我的问题,但是即使在10秒之后,数据仍然不被读取。考虑这只是一个示例:真正的应用程序读取每个端口的串行端口。第二,什么都没有,从来没有!!这是一个很常见的问题,忘记打开DtrEnable和RtsEnable属性是常见的原因。@HansPassant:对不起,Hans,这并没有解决我的问题;最后我决定用另一种方式测试这个应用程序:
\if DEBUG生成随机数#else阅读COM端口#endif
…这是最好的我可以这样做,等待在目标pc上运行应用程序:)