多线程串口读写
我在做一个读写串口的程序,为了防止过多占用CPU,我就另开了一个线程专门读写串口,通常情况下,另一端是不断地发送设备状态(9个字符),如果这端检查到文件则停止发送设备状态而发送文件,文件的发送是一帧72个字符。两者通过起始字符区别,代码如下:
UINT CommProc(LVOID pParam)
{
char ch;
DWORD dRes;
while ( 1 )
{
dRes = WaitForSingleObject(g_hExit, 10);
switch ( dRes )
{
case WAIT_OBJECT_0:
return 0;
default:
break;
}
// 读取一个字符
ch = sio_getch(g_nPort);
if ( ch < 0 ) continue;
switch ( ch )
{
case 1:
读取8个字符,并发送消息在主窗体中显示;
break;
case 2:
接收文件;
break;
}
}
}
整个的循环大概就是这样,在我的计算机上运行倒是正常,换一台计算机竟然CPU的占用率忽高忽低,有时候是0,有时侯是100%,不知道怎么回事?