注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mie

 
 
 

日志

 
 

VC:重叠IO读写串口的问题  

2010-07-04 00:41:48|  分类: Windows开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

        重叠方式操作串口。波特率:9600。每秒向串口发送8字节,同时接收11字节的反馈数据。但是很不幸,有时候接收到3字节,有时候接收到8字节,更有些时候,每次都是接收3字节,8字节的数据直接丢失了!

        是波特率低了?是我的代码不对?

        很可能是重叠操作的代码不对!很反感重叠IO的代码,服务器和文件操作时都很绕。

 

        为了查出错误,请出Bus Hound。监视结果大出所料!确实常常只收到了3个字节!但是,我使用Com assistant模拟我的程序操作,测试结果却正确!看来是Windows的重叠IO方式存在BUG?——因为,Com assistant正常,而我使用重叠IO就不正常!

        但是,还有可能是,我的程序不对!有没有这种可能性?没有!因为Bus Hound监视结果是,我发出的数据包成功抵达了总线,而硬件线路板也成功给串口反馈了数据!只不过,到达总线时只有三个字节!另外的8个字节,很可能是由于重叠IO操作而丢失了!

       

        缓冲区不足?重叠IO的原理是基于缓冲区投递的,那么,有没有可能是缓冲区被销毁而导致数据接收失败呢?很有可能!因为这个串口操作的库是以前写的,写的时候,对重叠IO还不是很明白。

 

          解决!在串口数据发送完毕之后,我强制调用了清除串口状态的函数,这就导致,硬件线路板反馈的前一部分数据被我给强制清除了!以至于驱动层也没能获取到数据!——应该是,串口出现错误时才清除数据,否则不清除!

  评论这张
 
阅读(1217)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016