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

    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);//置进程同步变量 

    非常感谢各位大侠的帮助

  • 相关阅读:
    activiti--操作例子
    activiti--服务表
    spring--加载资源文件
    Day17
    Day15
    Day14
    Day13
    Day12
    Day16
    Day11
  • 原文地址:https://www.cnblogs.com/carl2380/p/2035994.html
Copyright © 2011-2022 走看看