VC中使用MScomm时,如何进行超时处理

我使用MScomm控件写一个串口通信程序,现在想添加一个串口通信超时处理的机制。于是我把超时处理函数加在了OnComm事件中,但每次串口超时后触发两次OnComm事件就不... 我使用MScomm控件写一个串口通信程序,现在想添加一个串口通信超时处理的机制。

于是我把超时处理函数加在了OnComm事件中,但每次串口超时后触发两次OnComm事件就不再触发了,如何解决??

MScomm控件如何处理通信超时?

急。。谢谢大家了!!
展开
 我来答
测绘地理信息
2010-12-01 · TA获得超过2204个赞
知道小有建树答主
回答量:516
采纳率:100%
帮助的人:472万
展开全部
这是我程序中的代码,已经使用了,没有问题。

在CMainFrame中添加两个成员变量,并在构造函数中初始化:
m_bPrepared = false;
m_bInitiated = false;

下面是OnComm函数和OnTimer函数:
void CMainFrame::OnComm()
{
if (!m_bInitiated) // 初始化一次,即第一次信号不接收
{
m_bInitiated = true;
m_bPrepared = true;
return;
}

if (m_msComm.GetCommEvent() == 3) // 接收到信号
{
if(m_bPrepared)
{
// 你的处理函数
Function();
m_bPrepared = false;
SetTimer(1, 500, NULL); // 延时500毫秒
}
}
}

void CMainFrame::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if (nIDEvent == 1)
{
KillTimer(1);
m_bPrepared = true;
}
CFrameWnd::OnTimer(nIDEvent);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式