使用MSCOMM控件,这段 串口接收数据的代码 如何写? 可能设计到延时.

vvvoid 2005-10-14 10:11:03
在使用MSCOMM控件接收数据时,有两种方式,
一种是事件方式:是当有数据到来时,调用OnComm函数
另一种是自己查询CommEvent属性的值.

我现在用第二种方法,我首先使用pComm->SetOutput(varOut);发送数据,对方收到此varOut后,会返回一个表示接收结果的字符,如"X",这时CommEvent属性应该是2,表示收到数据,我的代码如下:

//下面这个些代码在一个函数中,按下对话框上得按钮1后执行

void CDlg::OnButton1()
{
pComm->SetOutput(varOut);

j=pComm->GetCommEvent();
while(j!=2)
{
j=pComm->GetCommEvent();
}
}


执行结果:
这样好像不行,程序好像永远等不到pComm->GetCommEvent()变为2!

//我如果把上面这个些代码放在两个函数中,按下对话框上的两个按钮后分别执行

void CDlg::OnButton1()
{
pComm->SetOutput(varOut);
}

void CDlg::OnButton2()
{
j=pComm->GetCommEvent();
if(j==2)
AfxMessageBox("22222");
}
执行结果:
如果这样,先按按钮1,再按按钮2,按下按钮2时,就知道了pComm->GetCommEvent()变为2

问题:
现在我想把发送和接收得代码放在一个函数中,是否需要延时一段时间,然后再检测pComm->GetCommEvent()得值呢?如果这样,这段延时得代码如何写?
...全文
127 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jarrylogin 2005-10-14
  • 打赏
  • 举报
回复
GetTimeTick()
北京迅哥 2005-10-14
  • 打赏
  • 举报
回复
#include "Mmsystem.h"
工程里link加上winmm.lib
可以用timeGetTime()返回一个时间,单位是1/1000秒
你取俩时间,相减小于你要的延迟再继续

16,471

社区成员

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

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

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