繁体   English   中英

从串口C#读取的数据不完整

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM