[英]Incomplete data reading from serial port c#
我在读取从串行端口传输的数据时遇到问题(每次运行该项目时,数据都不完整)。
我尝试了两种方法来读取:
byte[] data = new byte[_serialPort.BytesToRead];
_serialPort.Read(data, 0, data.Length);
txtGateway.Text = System.Text.Encoding.UTF8.GetString(data);
和
txtGateway.Text = _serialPort.ReadExisting();
但是,每次启动程序时,它仅在每次第一次读取14个字节。 当我跟踪程序时, _serialPort.BytesToRead
每次第一次仅给出14。 如果我第二次发送数据,则可以正确读取数据。
以上两种方法具有相同的结果。 我确信从串行端口写入数据可以提供完整的数据。
串行端口没有任何消息边界。 如果要构图,则必须自己添加。
至于程序启动时只有最近的14个字节在串行端口中,14个字节是串行端口的典型FIFO大小。 另请参见如何在Windows中以编程方式配置串行FIFO接收和发送缓冲区?
或者在程序启动时仅刷新接收缓冲区。
嗨,您可以将带有回车符\\ r和ASCII代码\\ x02的数组用于STX
string data = _serialPort.ReadExisting();
string[] arr1 = data.Split('\r');
checkFinal = checkFinal.Replace("\x02", "").ToString().Trim();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.