c#接收串口数据的问题

今天早睡今天早起 2017-02-21 11:14:27
我写了一个跟北斗通信的串口接收软件,两分钟发一条报文,一开始运行稳定,但是运行一个小时之后就是报出,长度不能小于0,参数名:length,。。。这是什么原因,为什么之前可以。
...全文
275 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
XBodhi. 2017-03-06
  • 打赏
  • 举报
回复
所有代码都贴出来看下,有没有用 using{} 要注意这个别被释放掉,否则会出错。
  • 打赏
  • 举报
回复
引用 7 楼 qiaohuyue 的回复:
自己看下校验位。或是数据包是否丢失。
就是上述异常捕获的地方出来的错误,加了清楚缓存的语句之后能稳定运行一天左右,然后又出现同样的错误,感觉很奇怪,重启之后正常运行,会是卫星的问题吗
wanghui0380 2017-02-24
  • 打赏
  • 举报
回复
首先你得确认,这句话是哪里爆出来的 “长度不能小于0,参数名:length,。。。” 从报错信息上看,这句话不是对方报的,就是你自己报的,因为我印象里微软是不会这么写报错信息的,微软只会报标准的异常 比如标准的indexOutOfRangeExeption或ArgumentExeption这类错误,既然你报出““长度不能小于0,参数名:length,。。。””那就是自己或对方报的,所以你得先确定位置,然后我们再分析是什么原因
XBodhi. 2017-02-24
  • 打赏
  • 举报
回复
自己看下校验位。或是数据包是否丢失。
SoulRed 2017-02-24
  • 打赏
  • 举报
回复
可能是缓存或者脏读,读取的不是最新的
SoulRed 2017-02-21
  • 打赏
  • 举报
回复
也有可能是对方接口超时断开连接了
巴士上的邂逅 2017-02-21
  • 打赏
  • 举报
回复
加上DiscardInBuffer试试
  • 打赏
  • 举报
回复
引用 3 楼 yuankaiwsl 的回复:
不要用sleep阻塞来获取数据 一个字节一个字节的获取,利用包头、包尾、长度、校验码等元素判断一帧数据的完整性和正确性
能解释一下为什么吗。我运行一个多小时,解析没有问题,但是之后就断断续续出现了解析重复
巴士上的邂逅 2017-02-21
  • 打赏
  • 举报
回复
不要用sleep阻塞来获取数据 一个字节一个字节的获取,利用包头、包尾、长度、校验码等元素判断一帧数据的完整性和正确性
  • 打赏
  • 举报
回复
引用 1 楼 DOwnstairs 的回复:
也有可能是对方接口超时断开连接了
虽然报错但是,但是有报文能解析,,这出的错,读取的也是上一条报文,不是最新报文

110,561

社区成员

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

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

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