读书人

ReadComm()读串口数据,如何使它一次性

发布时间: 2012-01-16 23:36:51 作者: rapoo

ReadComm()读串口数据,怎么使它一次性读出全部数据?
用API写了个串口程序,如何使它读出全部的数据?
比如 下位机一次性回了50个字节数据,我跟踪发现Vc先接受了10个字节,再接收了40个字节?能不能让它一次收完呢?
ReadFile(m_hCom,buf,100,&m_osRead); //我要求它一次要读100个字节
是不是这里延时有讲究?

TimeOuts.ReadIntervalTimeout=MAXDWORD;
TimeOuts.ReadTotalTimeoutMultiplier=10;
TimeOuts.ReadTotalTimeoutConstant=2000;

[解决办法]
COMMTIMEOUTS comTimeOut; //设置超时
comTimeOut.ReadIntervalTimeout = 100;//两字符之间最大的延时
comTimeOut.ReadTotalTimeoutMultiplier = 50;//读取每字符间的超时
comTimeOut.ReadTotalTimeoutConstant = 1000;//一次读取串口数据的固定超时
comTimeOut.WriteTotalTimeoutMultiplier = 50;//写入每字符间的超时
comTimeOut.WriteTotalTimeoutConstant = 1000;//一次写入串口数据的固定超时
SetCommTimeouts(hCom,&comTimeOut);
[解决办法]
这个没办法,,winapi+线程
一个时间段你就读出这么多东西 就切换了线程
所以说把每次读出来的东西放到一个buff
一直累加下去,从前面读,也算是个队列吧

读书人网 >VC/MFC

热点推荐