我有一个非常简单的VBasic控制台程序,它从串行com端口读取原始二进制输入数据并将其写入控制台窗口。
问题在于它不会读取所有传入的字节,也不会显示所有字节。
代码:
Module Module1
Private WithEvents SerialPort1 As New System.IO.Ports.SerialPort("COM3")
Sub main()
SerialPort1.BaudRate = 31250
SerialPort1.DataBits = 8
SerialPort1.Encoding = System.Text.Encoding.GetEncoding(1252)
SerialPort1.Open()
Console.ReadKey()
SerialPort1.Close()
End Sub
Private Sub SerialPort1_DataReceived(sender As Object, e As IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim byteReceived As Byte = SerialPort1.ReadByte
Console.Write(" " & Hex(byteReceived))
End Sub
End Module
因此,例如,如果我将十六进制序列53 aa 55 bb发送到串行端口,控制台将写入53 aa并停止,然后如果我重新发送该消息,则显示55 bb 53,依此类推。因此,好像程序没有完全从串行缓冲区中检索数据。
任何人都知道我错过了什么或错误在哪里?
谢谢!