LAPTOP-SNT8I5JK\Boounion
2025-02-21 f2ec2ff2640e8f02507e6fa44cd1ba1487a303ea
SourceCode/Bond/Servo/CStep.cpp
@@ -7,8 +7,8 @@
   unsigned __stdcall StepWorkThreadFunction(LPVOID lpParam)
   {
      CStep* pScale = (CStep*)lpParam;
      return pScale->WorkingProc();
      CStep* pStep = (CStep*)lpParam;
      return pStep->WorkingProc();
   }
   CStep::CStep()
@@ -19,6 +19,8 @@
      m_hSignalOn = ::CreateEvent(NULL, TRUE, FALSE, NULL);
      m_hSignalOff = ::CreateEvent(NULL, TRUE, FALSE, NULL);
      m_nCurStep = 0;
      m_pCclink = nullptr;
      m_nWriteSignalDev = 0;
      InitializeCriticalSection(&m_criticalSection);
   }
@@ -33,6 +35,16 @@
      m_hSignalOff = nullptr;
      DeleteCriticalSection(&m_criticalSection);
   }
   void CStep::setCcLink(CCCLinkIEControl* pCcLink)
   {
      m_pCclink = pCcLink;
   }
   void CStep::setWriteSignalDev(int dev)
   {
      m_nWriteSignalDev = dev;
   }
   void CStep::init()
@@ -79,20 +91,21 @@
            // 1.读取数据
            nextStep();
            TRACE("m_nCurStep:%d\n", m_nCurStep);
            ASSERT(m_pCclink);
            onReadData();
            // 2.给对方写ON
            nextStep();
            TRACE("m_nCurStep:%d\n", m_nCurStep);
            m_pCclink->SetBitDevice(m_station, DeviceType::B, m_nWriteSignalDev);
            // 3.等待对方OFF
            nextStep();
            TRACE("m_nCurStep:%d\n", m_nCurStep);
            int nStep3Ret = ::WaitForSingleObject(m_hSignalOff, TIMEOUT * 1000);
            if (nStep3Ret == WAIT_TIMEOUT) {
               timeout();
               m_pCclink->ResetBitDevice(m_station, DeviceType::B, m_nWriteSignalDev);
               onTimeout();
               goto RESET;
            }
            ResetEvent(m_hSignalOff);
@@ -100,17 +113,12 @@
            // 4.给对方写OFF
            nextStep();
            TRACE("m_nCurStep:%d\n", m_nCurStep);
            // 5.对接CIM等
            nextStep();
            TRACE("m_nCurStep:%d\n", m_nCurStep);
            m_pCclink->ResetBitDevice(m_station, DeviceType::B, m_nWriteSignalDev);
            // 6.完成
            nextStep();
            TRACE("m_nCurStep:%d\n", m_nCurStep);
            onComplete();
         }
      }
@@ -125,7 +133,6 @@
   void CStep::onSignal(BOOL bSignal)
   {
      TRACE(">>>>>>>>>>>>>>>>>>>> setSignal:%s\n", bSignal ? "ON" : "OFF");
      Lock();
      if (m_nCurStep == 0 && bSignal) {
         SetEvent(m_hSignalOn);
@@ -135,6 +142,21 @@
      }
      Unlock();
   }
   int CStep::onReadData()
   {
      return 0;
   }
   int CStep::onComplete()
   {
      return 0;
   }
   int CStep::onTimeout()
   {
      return 0;
   }
   void CStep::resetStep()
@@ -149,11 +171,6 @@
      Lock();
      m_nCurStep++;
      Unlock();
   }
   void CStep::timeout()
   {
      TRACE(">>>>>>>>>>>>>>>> timeout:%d\n", m_nCurStep);
   }
}