串口通讯困惑

ftzzh 2005-04-20 02:07:20
串口通讯困惑:
1、在串口通讯中,对数据的采集基本都是通过先请求后应答的方式来实现的。计
算机通过读取设备返回到串口缓冲区中的数据的方式得到数据。串口缓冲器中的数据被读走后即被清空。
2、针对某一设备的数据采集,计算机为了得到设备的不同参数(这些设备的参数的长短是不一致的),发出的请求报文也各不相同。
3、问题:当计算机发出某一请求报文后,设备立即返回请求结果放置于串口缓冲器中,如果计算机是通过定时发送请求和定时读取串口缓冲器中的数据,那么怎样才能保证读出的数据是完成的结果?而不是请求结果的一部分?因为各个请求返回的数据长度是不一样的,这样就更难保证数据的完整性了,怎么解决?
4、如果采用事件触发通讯,这种方式又怎样保证读取的数据的完整性,而不至于只读到残缺的部分数据?这是本人在串口通讯中一直未能弄明白的基本问题,但通过使用控件通讯,不考虑以上的问题,也能实现通讯:),
...全文
100 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjg751206 2005-05-09
  • 打赏
  • 举报
回复
vckbase有现成的串口通讯代码,你只要修改修改就可以了。对收发数据进行处理就可以了
假以辞色 2005-05-09
  • 打赏
  • 举报
回复
3、问题:当计算机发出某一请求报文后,设备立即返回请求结果放置于串口缓冲器中,如果计算机是通过定时发送请求和定时读取串口缓冲器中的数据,那么怎样才能保证读出的数据是完成的结果?而不是请求结果的一部分?因为各个请求返回的数据长度是不一样的,这样就更难保证数据的完整性了,怎么解决?

一般设备返回的数据帧有一定的格式,自己要比较一下,判断是否接收到完整帧,这样在继续对数据帧进行分拆处理。如果不是完整数据帧,把读到的数据放在一个缓冲中,继续等待数据,至到有一个完整数据帧。 如果只是显示,不用这样,只接显示出来就行,但如果要考虑到汉字及英文混合时,也需要进行阅判断是否是一个完整汉字,这样才能显示出。

4、如果采用事件触发通讯,这种方式又怎样保证读取的数据的完整性,而不至于只读到残缺的部分数据?这是本人在串口通讯中一直未能弄明白的基本问题,但通过使用控件通讯,不考虑以上的问题,也能实现通讯:),

事件也不能保证数据帧的完整性,一般设事件是缓冲有一个字节就产生事件的。

2,643

社区成员

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

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