| | |
| | | |
| | | unsigned __stdcall StepWorkThreadFunction(LPVOID lpParam) |
| | | { |
| | | CStep* pScale = (CStep*)lpParam; |
| | | return pScale->WorkingProc(); |
| | | CStep* pStep = (CStep*)lpParam; |
| | | return pStep->WorkingProc(); |
| | | } |
| | | |
| | | CStep::CStep() |
| | |
| | | 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); |
| | | } |
| | | |
| | |
| | | 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() |
| | |
| | | |
| | | // 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); |
| | |
| | | |
| | | // 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(); |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | void CStep::onSignal(BOOL bSignal) |
| | | { |
| | | TRACE(">>>>>>>>>>>>>>>>>>>> setSignal:%s\n", bSignal ? "ON" : "OFF"); |
| | | Lock(); |
| | | if (m_nCurStep == 0 && bSignal) { |
| | | SetEvent(m_hSignalOn); |
| | |
| | | } |
| | | |
| | | Unlock(); |
| | | } |
| | | |
| | | int CStep::onReadData() |
| | | { |
| | | return 0; |
| | | } |
| | | |
| | | int CStep::onComplete() |
| | | { |
| | | return 0; |
| | | } |
| | | |
| | | int CStep::onTimeout() |
| | | { |
| | | return 0; |
| | | } |
| | | |
| | | void CStep::resetStep() |
| | |
| | | Lock(); |
| | | m_nCurStep++; |
| | | Unlock(); |
| | | } |
| | | |
| | | void CStep::timeout() |
| | | { |
| | | TRACE(">>>>>>>>>>>>>>>> timeout:%d\n", m_nCurStep); |
| | | } |
| | | } |
| | | |