串口通信SerialPort控件,接收时会丢失数据

缭绕飘渺 2012-01-12 10:59:06
如题,硬件设备每秒发送一次数据,542字节,串口触发接收事件的字节大小已经设置好了
但是接收后发现有丢失数据的现象,尤其是第一帧过来的,基本都不完整,从第二帧开始还算可以
大家做串口一般怎么处理这个问题
我看了不少介绍,一般是先接收,比如建立一个较大的缓存,接收数据,先存入其中
然后从中根据协议取正确的数据
大家有什么其他好的方法或者源程序共享下的
...全文
451 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cust_hf 2012-01-15
  • 打赏
  • 举报
回复
串口通信与网络类似。都是串行通信,谁敢说数据是完整的,不丢呢?
既然服务器方和客户端方都是自己做的,那么问题也不是那么难以解决。

可以仿造网络协议的涉及方法,逐层封装。

在接收方解析较为麻烦。建议采用递归下降法(忘记了翻翻编译原理的书)。优点是,可以及时发现传输错误。
传输过程中大数据块,很可能被分解多个小块。所以需要一个字节一个字节自己解析。
熙风 2012-01-13
  • 打赏
  • 举报
回复
shashengduguzhe 2012-01-12
  • 打赏
  • 举报
回复
有的硬件串口会有问题,但你的问题好像不是硬件设备问题。串口触发接收事件最好做成收一个数据就存一个数据。不然有些缓冲数据会被接收的数据替换掉。
段传涛 2012-01-12
  • 打赏
  • 举报
回复
硬件一般不会的。
程序有转换吗?
EnForGrass 2012-01-12
  • 打赏
  • 举报
回复
一般是先接收,比如建立一个较大的缓存,接收数据,先存入其中
是的现在很多都这样子做
nandi_1 2012-01-12
  • 打赏
  • 举报
回复
很简单,system.threading.sleep(500);
testtestett 2012-01-12
  • 打赏
  • 举报
回复
换硬件试试,先排除不是硬件的问题。我以前就碰到是硬件坏了造成的。

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧