C# Serialport串口通信,接收数据丢失
用DataReceived方法接收数据时有时候会丢失,尤其是在debug的时候,有时候甚至多定义几个变量,数据接收也会出现丢失,有什么办法可以解决吗?
请找缓冲区。。。之前有说过的求链接
http://bbs.csdn.net/topics/390316188
[解决办法]
如果是二进制,最好用流或buffer来操作。
while (i > 0)
{
int readBufCount = SerialPortClient.BytesToRead;
if (readBufCount > 8)
{
m_autoPortEvent.WaitOne(40, false);
readBufCount = SerialPortClient.BytesToRead;
recvData = new byte[readBufCount];
SerialPortClient.Read(recvData, 0, recvData.Length);
return recvData;
}
i--;
}
if (recvData == null)
{
throw new Exception("time out for getData");
}
------解决方案--------------------
这里需要做一下同步处理。
[解决办法]
楼主,我这个思路绝对可以解决问题:
1、首先,建立缓存,接收数据直接入缓存,不要处理,委托之类!!!
2、改动接收门限,不要用默认的1!!!!
3,数据处理转换操作,不要在接收里面进行!!!!可以建立一个线程,检测步骤1里面的缓存,有数据就处理!!!
其他不多言!!!
我做过串口这块!!,绝对可以帮到你!!!
[解决办法]
PC与下位机之间的通信都有协议的,是你没看懂他协议还是啥的。