| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 950 人关注过本帖
标题:串口发送程序可以收发数据了,就是占CPU太多了,这是何故?
只看楼主 加入收藏
pxy94
Rank: 2
等 级:论坛游民
帖 子:59
专家分:20
注 册:2007-6-7
结帖率:100%
收藏
 问题点数:0 回复次数:1 
串口发送程序可以收发数据了,就是占CPU太多了,这是何故?
串口发送程序可以收发数据了,就是占CPU太多了,这是何故?
发现一运行接收数据的函数就会占CPU,我的代码如下,我是通过一个线程调用一个死循环来检测是否收到数据的。
DWORD WINAPI ComRead(HWND hWnd)
{
    char ReadBuff[101]="";
    DWORD ReadLength1=0;
    DWORD ReadLength2=0;
    DWORD ReadFlag;
    OverCom.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);
while(1)
{
        SetCommMask(hdCom,EV_RXCHAR);
        WaitCommEvent(hdCom,&ComEvent,&OverCom);
        if((ComEvent&EV_RXCHAR)==EV_RXCHAR)
        {
            ClearCommError(hdCom,&ComError,&ComStat);
            ReadLength1=ComStat.cbInQue;
            if(ReadLength1>0)
            {
                ReadFlag=ReadFile(hdCom,&ReadBuff,ReadLength1,&ReadLength2,&OverCom);
                ReadBuff[ReadLength2]='\0';
                if(!ReadFlag)
                {
                    if(GetLastError()==ERROR_IO_PENDING)
                    {
                        while(!GetOverlappedResult(hdCom,&OverCom,&ReadLength2,TRUE ))
                        {
                            ComError=GetLastError();
                            if(ComError==ERROR_IO_PENDING)continue;
                        }

                    }
                }
            }
         ::PostMessage(hWnd,COM_READ,(unsigned int)ReadBuff,ReadLength2);
       //  strcpy(ReadBuff,"");
         ComEvent=0;
        }
}
}
搜索更多相关主题的帖子: 数据 CPU 收发 何故 串口 
2010-01-22 22:27
zyk3306
Rank: 2
等 级:论坛游民
帖 子:10
专家分:11
注 册:2009-7-27
收藏
得分:0 
用接收事件触发就不会占CPU了,
2010-02-25 16:35
快速回复:串口发送程序可以收发数据了,就是占CPU太多了,这是何故?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037955 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved