vc++用多线程进行串口通信问题

用vc++做了一个串口接受程序,用createthread建立一个线程,在线程中扫描串口,子函数如下,结果运行的,虽然电脑不卡,但是任务管理器显示cpu占用%99,用什么办法可以解决这个问题哦?
DWORD WINAPI ProsComm(LPVOID lpParameter)
{
char buf[1000];
DWORD len=0;
HANDLE mhandle=((PARA*)lpParameter)->m_FileHandle;
HWND mhwnd=((PARA*)lpParameter)->m_Hwnd;
while(1)
{
if(!ReadFile(mhandle,buf,1000,&len,NULL))
{
AfxMessageBox("读取串口失败!");
return FALSE;
}
if(len>0)
{
buf[len]='\0';
::PostMessage(mhwnd,WM_RevcData,(WPARAM)buf,len);
}
}
}

用自定义消息,当有数据到达串口的时候触发消息,这时候才进行循环的读串口,你这样写他一直在读串口呢,当然到99%了,建议看看有个第三方的类serialport,不错,可以学学
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-03-30
在循环里使用WaitCommEvent函数来等待串口数据
这个函数会一直等待 当有串口数据到达 才会出继续执行
serialport等都是这么实现的
第2个回答  2009-03-30
在while加个sleep(200),0.2秒扫描一次,足够快了
相似回答