hur.cn - 华软网

 热门搜索

晕了。关于串口MSCOMM控件的问题。

  作者:未知    来源:网络    更新时间:2011/9/29
我现在while循环中一直向串口发送数据 ;此时 OnComm事件就被阻止了。只有当跳出while循环后,才会处理OnComm的事件。如果我想优先处理OnComm函数 。应该怎么做呢?
---华软 网友回答---
开线程.
---华软网友回复---
能具体一点吗?对线程不怎么了解 。谢谢关注 。
---华软网友回复---
while循环一直发,是不是速度太快了,而且CPU一直被占用,没有时间处理数据啊
---华软网友回复---
其实只要不是太快的话,用定时器发就可以了,SetTimer(1,200,NULL);//200m发一次或者怎的
---华软网友回复---
在while循环中,即使不发数据,它也不处理OnComm事件 。我希望OnComm事件能得到优先的处理,即使在WHILE循环中。类似硬件中断的作用。 现在看来这种事情似乎不会发生啊。如果我现在开一个线程想监视的通信控件的接收状态 ,如果有接收事件的发生,我就去处理;处理接收事件后,我在返回之前的语句位置继续执行。 不知应该怎么做啊。
---华软网友回复---
AfxBeginThread(CommWatchProc, this, THREAD_PRIORITY_NORMAL); 我用它开线程CommWatchProc ,结果编译不过去。可气。
---华软网友回复---
CWinThread *pThread = NULL;//全局

pThread = AfxBeginThread(CommWatchProc, this); 

UINT CommWatchProc (LPVOID lPvoid)
{
     while(1)
     {
          do something.....;
          sleep(100);
     {
}
就可以了吧
---华软网友回复---
引用 4 楼 echoyin59 的回复:
其实只要不是太快的话,用定时器发就可以了,SetTimer(1,200,NULL);//200m发一次或者怎的
 
 如果我用定时器来处理接收的话,应该也可以。我觉着值得一试。我看大部分多线程更适合于多个串口这样的应用。我现在是一个串口。不想搞的太麻烦。
---华软网友回复---
不行啊。OnTimer 也只能是在while循环跳出之后才能执行。 现在才觉得对VC的认识太浅了。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。