正文

[原]VC串口API超时的详细介绍2009-01-04 11:23:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/sword2008/40153.html

分享到:

_BAT_姜维    发表于2009年01月04日 11:09 阅读(0) 评论(0) 分类: 串口API 权限: 公开 昨天调了一下API结果发现同步ReadFile居然没堵塞就返回,那同步和异步岂不是一个样了,太阳!线程没错,都没错,所以又拿资料出来看,发现有个超时设置,应该就是他了,嘿嘿。我原本程序:COMMTIMEOUTS TimeOuts;//设定读超时TimeOuts.ReadIntervalTimeout=MAXDWORD;TimeOuts.ReadTotalTimeoutMultiplier=0;TimeOuts.ReadTotalTimeoutConstant=0;//在读一次输入缓冲区的内容后读操作就立即返回,//而不管是否读入了要求的字符。//设定写超时TimeOuts.WriteTotalTimeoutMultiplier=100;TimeOuts.WriteTotalTimeoutConstant=500;SetCommTimeouts(hCom,&TimeOuts); //设置超时我留意了一下,它所说的超时是指串口读写操作超时而总超时就是函数返回的标准,如果操作在总超时之前没完成,那么就结束了本次操作,如果在总超时之前完成了,那马上返回,官方资料:COMMTIMEOUTS结构的成员都以毫秒为单位。总超时的计算公式是:总超时=时间系数×要求读/写的字符数+时间常量 例如,要读入10个字符,那么读操作的总超时的计算公式为:读总超时=ReadTotalTimeoutMultiplier×10+ReadTotalTimeoutConstant 要注意到无论读或者写,都有个要求的数目和实际读到的数目引用ReadFile(hCom,str,wCount,&wCount,NULL);wCount要求读入的数目,&wCount读到的数目引用总超时=WriteTotalTimeoutMultiplier×wCount+ReadTotalTimeoutConstant而异步虽然是靠事件,但是其内部一定是另起了一个线程。OK,超时介绍到此

阅读(10895) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册