在使用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()得值呢?如果这样,这段延时得代码如何写?
一种是事件方式:是当有数据到来时,调用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()得值呢?如果这样,这段延时得代码如何写?
解决方案 »
- 各位大虾帮忙啊!!treeview的问题
- 怎样动态的登录域或注销?
- 我的VC为什么没有ODBCINST.LIB?
- MDI编程的问题
- ×××我写了一个MFC Dll,但是在这个Dll中不能使用datagrid,为什么?如何解决×××
- 有什么好的算法可以打乱数组内的元素位置?
- 如何从远程主机下载一个文件(知道这个文件的URL)?
- 请教如何对CEDIT控件进行指定的键盘输入?
- Windows 核心编程的第5章的关于 job.h 的问题..
- 如何在9x下列举所有的进程(id,应用程序名)
- 请问CTreeCtrl里的SetCheck( HTREEITEM hItem, True)为什么不能选中打钩?
- link 2005!!!!!!!!!!在线等待!
工程里link加上winmm.lib
可以用timeGetTime()返回一个时间,单位是1/1000秒
你取俩时间,相减小于你要的延迟再继续