您的位置:首页 > 其它

用一个工作线程来发送询问命令,等待接收到下位机应答数据后退出。如果两秒下位机未应答,则重发询问命令。重发10次下位机不应答,则认为通信故障,

2011-05-03 23:29 555 查看
http://topic.csdn.net/u/20081107/09/69dbccb7-5da3-4b50-9792-8cd2df37f2b5.html

最后用线程同步的方法解决
//初始化同步事件
hTimer=::CreateEvent(NULL,FALSE,FALSE,NULL);

//线程中的相关代码
CRecordreaderView *m_pView = (CRecordreaderView *)lParam;
/////////////////////
发送查询命令相关代码
////////////////////
while(::WaitForSingleObject(hTimer,2000)==WAIT_TIMEOUT && m_pView-> m_iReSendcnt <10)
{
////////////////////////////////
发送查询命令相关代码(重发)
////////////////////////////////
m_pView-> m_iReSendcnt++;
}
m_pView-> m_iReSendcnt=0;

//接收到下位机应答数据后
::SetEvent(hTimer);//置进程同步变量

非常感谢各位大侠的帮助
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐