各位高手进来帮帮忙,如何在向端口循环传输数据时,使之停下?

zhonghuashen 2004-05-08 10:33:26
最近,做了一个小程序,是在MFC环境下向一块A/D转换板循环的传输数据,我是用一个while来循环的。现在的问题是我如何才能在循环过程中按ESC键使它从循环中跳出?
(最好用消息方式回答)
谢谢。
...全文
103 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ymbymb 2004-05-11
  • 打赏
  • 举报
回复
这就是你传输数据的while循环啊,只是加了一个条件而已!
zhonghuashen 2004-05-11
  • 打赏
  • 举报
回复
下面一段程序放哪啊?
m_bCancel = FALSE;
while(!m_bCancel)
{
....
DoEvents();
}
zhonghuashen 2004-05-11
  • 打赏
  • 举报
回复
各位高手请继续看看。急啊。
madhappy 2004-05-09
  • 打赏
  • 举报
回复
2 ESC按键默认的响应函数是OnCancel():
-----------------------------------------------------------------------
这个函数响应的就是ESC的默认消息(取消)。这样就不用另外写ESC按键处理函数了。还有麻烦点的办法,写一个hook,截获ESC,不过没这个必要了,我认为。
zhonghuashen 2004-05-09
  • 打赏
  • 举报
回复
首先要感谢ymbymb(毛病大哥),我还有一个地方不懂,如下
void CMyDlg::OnCancel()
{
m_bCancel = TRUE;
}
这段代码是不是自己做的对话框?
还有msg 是从哪得到的?
zhonghuashen 2004-05-09
  • 打赏
  • 举报
回复
那就是说 ymbymb(毛病大哥) 是用一个对话框来实现的?

然后Oncancel()是ESC的默认响应函数

是这样吧。
接下来就是那个msg从哪得到的?

jEditor 2004-05-08
  • 打赏
  • 举报
回复
你的操作必须在一个单独的线程里面执行。要不时不能响应的。
设立条件
BOOL bBreak = FALSE;



... CopyThread(...)
{
while(bBreak)
{
cpoy.....
}
}
madhappy 2004-05-08
  • 打赏
  • 举报
回复
ymbymb(毛病大哥)的办法也很好,适用于非暴力运算的情况。
madhappy 2004-05-08
  • 打赏
  • 举报
回复
1 生成一个线程,在线程中执行循环。
2 ESC按键默认的响应函数是OnCancel.你重载这个函数,并把一个变量,比如:
IsContiune=FALSE;

这样在你的线程函数里面检查这个数。
while(1)
{
.....
if(IsContiune==FALSE)
retuen; //or AfxEndThread();
}

ymbymb 2004-05-08
  • 打赏
  • 举报
回复
很简单,在循环中如下调用
m_bCancel = FALSE;
while(!m_bCancel)
{
....
DoEvents();
}

void CMyDlg::OnCancel()
{
m_bCancel = TRUE;
}

void DoEvents()
{
MSG msg;
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return;
}
PiggyXP 2004-05-08
  • 打赏
  • 举报
回复
在While循环中添加一个判断 如

if(bExit) break;
然后在 KeyDown 里面判断按下的键,如果是 esc就把 bExit设置为True

如果楼主的while循环是个死循环的话最好是放到别的线程去执行,或者在while循环中添上
sleep(100)之类的语句
zhonghuashen 2004-05-08
  • 打赏
  • 举报
回复
不会的,up 一下,谢谢。
madhappy 2004-05-08
  • 打赏
  • 举报
回复
jEditor(jEditor) ( )
你的操作必须在一个单独的线程里面执行。要不时不能响应的。
--------------------------------------------------------

???????何以见得?我自己一直都是这个办法阿

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧