回 帖 发 新 帖 刷新版面

主题:求解 串口ReadFile函数阻塞问题

[code=c]
TimeOuts.ReadIntervalTimeout=100;
TimeOuts.ReadTotalTimeoutMultiplier=0;
TimeOuts.ReadTotalTimeoutConstant=0;
SetCommTimeouts(m_hComm,&TimeOuts);
PurgeComm(m_hComm,PURGE_RXCLEAR);
char str[100];
memset(str,'\0',100);
DWORD wCount = 100; //读取的字节数]
DWORD retCount =0;
bool ret = ReadFile(m_hComm,str,wCount,&retCount,NULL);
if(!ret)
{
    AfxMessageBox("读取数据失败");
}
if(retCount>0)
{
    AfxMessageBox("读取数据成功");
    data_analyse(str,retCount);
    CloseHandle(m_hComm);
}
[/code]
以上为部分代码,(win32工程修改了打印函数)
当该代码在win32工程中运行时,正常接收数据,加载到MFC工程中,就会在ReadFile函数处阻塞,
当TimeOuts.ReadIntervalTimeout=100;
TimeOuts.ReadTotalTimeoutMultiplier=100;
TimeOuts.ReadTotalTimeoutConstant=100;均设为100时,可以通过ReadFile,但是ReadFile读不到数据。
请高手帮助。

回复列表 (共1个回复)

沙发

SetCommTimeouts、PurgeComm函数很少用了,这都是旧时代的东西,现在系统支持不支持都不得而知,你把这两个函数注释掉,估计就可以了,如果你文件读取时间很长而你又不想等待的话,现在可以采用异步文件,完成端口。现在性能比较好的是完成端口。

我来回复

您尚未登录,请登录后再回复。点此登录或注册