串口类如何判断数据接收完成。

wrhjyx 2010-08-03 10:18:35
有没有大侠告诉我,我用串口类接收了一个仪器传输过来的数据。但是数据没有结束标志。我把数据接收过来放在一个LISTBox里显示出来了,当数据传输完成后我想给一个提示框“MessageBox("数据接收完毕");”,但是我不知道怎么在程序里判断接收结束了,然后给提示框。
我发现我真是很白,都有些无地自容了。
...全文
1785 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
重装雷巡大井 2012-09-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 6 楼 wrhjyx 的回复:
因为协议已经定了,不能更改了。没有结束符。。。。很是郁闷,请高手们帮忙,拜谢!
那总得知道每次发送数据的长度吧。判断如果接收到了需要长度的字节数,就认为数据接收完成。
[/Quote]

正解啊+1
wrhjyx 2010-08-03
  • 打赏
  • 举报
回复
多谢大侠的指导,我自己解决了。我用了一个定时器SetTimers。数据传来时关定时器,然后显示存储数据,然后开定时器。当所有的数据都传完后,就进入Ontime函数进行处理。谢谢谢谢~
zxdlms 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wrhjyx 的回复:]
因为协议已经定了,不能更改了。没有结束符。。。。很是郁闷,请高手们帮忙,拜谢!
[/Quote]那总得知道每次发送数据的长度吧。判断如果接收到了需要长度的字节数,就认为数据接收完成。

wrhjyx 2010-08-03
  • 打赏
  • 举报
回复
因为协议已经定了,不能更改了。没有结束符。。。。很是郁闷,请高手们帮忙,拜谢!
wrhjyx 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wwgddx 的回复:]
串口的收发是建立连接后就可以不停得发送和监听接收的数据的,接收到的数据字段长度为0就表示目前没有数据发送过来,就是上一次数据已经发送完了。

最好的方法还是自己在发送数据的时候在结尾加个结束标致,这样,读的时候就可以判断数据是否接收完整还是丢失了。
[/Quote]
大侠能不能说细致点儿,我很菜。最后给我几句代码,谢谢谢谢
na_he 2010-08-03
  • 打赏
  • 举报
回复
只能自己拟定信息的边界了,呵呵
浅蓝马 2010-08-03
  • 打赏
  • 举报
回复
你可以判断最后数据接收之后的一个时间长短来判定上一个指令是否发送完成,
不过这样也算不上准确,
最好是双方有协商一致的指令才可能准确判断是不是发送完毕,
比如有结束标志,或者知道某个指令的固定长度等。
周药师 2010-08-03
  • 打赏
  • 举报
回复
自己订个协议
wwgddx 2010-08-03
  • 打赏
  • 举报
回复
串口的收发是建立连接后就可以不停得发送和监听接收的数据的,接收到的数据字段长度为0就表示目前没有数据发送过来,就是上一次数据已经发送完了。

最好的方法还是自己在发送数据的时候在结尾加个结束标致,这样,读的时候就可以判断数据是否接收完整还是丢失了。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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