线程中使用COMM口的问题
代码如下:
//先获取COM口状态
if(ClearCommError(m_COMHandle, &error, &stat) && error > 0) //清除错误
{
PurgeComm(m_COMHandle, PURGE_TXABORT | PURGE_TXCLEAR); /*清除输入缓冲区*/
return false;
}
//ClearCommError(m_COMHandle, &error, &stat);
unsigned long len = 0;
char buf[64];
len =(int)stat.cbInQue; //将缓冲区中的全部数据都取出
if (len<m_nbarCodeLen) //没有达到指定的数据长度则退出
{
return false;
}
if(!ReadFile(m_COMHandle, buf, len, &len, NULL)) //取数据失败
{
len = 0;
}
buf[len] = '\0';
使用以上代码从COM口获取数据,在非线程中调用时没有任何问题,但是在线程中调用失败,每次CLEARCOMMERROR时都出现错误16,MSDN的解释是CE_BREAK The hardware detected a break condition.
请问有大虾遇到过同样的问题没有?