| | |
| | | m_hReadSignalOff = ::CreateEvent(NULL, TRUE, FALSE, NULL); |
| | | m_nSignalType = 0; |
| | | m_nCurStep = 0; |
| | | m_szReturnBuf[1024] = {0}; |
| | | m_nReturnDataSize = 0; |
| | | m_nReturnDevNo = 0; |
| | | } |
| | | |
| | | CReadStep::~CReadStep() |
| | |
| | | void CReadStep::setWriteSignalDev(int dev) |
| | | { |
| | | m_nWriteSignalDev = dev; |
| | | } |
| | | |
| | | void CReadStep::setReturnDev(int dev) |
| | | { |
| | | m_nReturnDevNo = dev; |
| | | } |
| | | |
| | | void CReadStep::onReadSignal(int nSignalType) |
| | |
| | | m_pEquipment->onStepEvent(this, STEP_EVENT_READDATA); |
| | | } |
| | | |
| | | // 0426新增 |
| | | // 1.1,写return code or data |
| | | if (m_nReturnDataSize > 0) { |
| | | int nWriteRet = m_pCclink->WriteData(m_station, (short)DeviceType::W, |
| | | m_nReturnDevNo, m_nReturnDataSize, (short*)m_szReturnBuf); |
| | | if (0 != nWriteRet) { |
| | | onTimeout(); |
| | | goto RESET; |
| | | } |
| | | } |
| | | |
| | | // 2.给对方写ON |
| | | nextStep(); |
| | | m_pCclink->SetBitDevice(m_station, DeviceType::B, m_nWriteSignalDev); |
| | | m_pCclink->SetBitDeviceEx(m_station, (long)DeviceType::B, m_nWriteSignalDev); |
| | | |
| | | |
| | | // 3.等待对方OFF |
| | | nextStep(); |
| | | int nStep3Ret = ::WaitForSingleObject(m_hReadSignalOff, TIMEOUT * 1000); |
| | | if (nStep3Ret == WAIT_TIMEOUT) { |
| | | m_pCclink->ResetBitDevice(m_station, DeviceType::B, m_nWriteSignalDev); |
| | | m_pCclink->ResetBitDeviceEx(m_station, (long)DeviceType::B, m_nWriteSignalDev); |
| | | onTimeout(); |
| | | goto RESET; |
| | | } |
| | |
| | | |
| | | // 4.给对方写OFF |
| | | nextStep(); |
| | | m_pCclink->ResetBitDevice(m_station, DeviceType::B, m_nWriteSignalDev); |
| | | m_pCclink->ResetBitDeviceEx(m_station, (long)DeviceType::B, m_nWriteSignalDev); |
| | | |
| | | |
| | | // 6.完成 |
| | |
| | | ASSERT(m_pEquipment); |
| | | m_pEquipment->onStepEvent(this, STEP_EVENT_COMPLETE); |
| | | } |
| | | |
| | | // 回复数据清空 |
| | | m_nReturnDataSize = 0; |
| | | } |
| | | } |
| | | |
| | |
| | | CStep::getAttributeVector(attrubutes); |
| | | std::string strTemp; |
| | | |
| | | unsigned int weight = 21; |
| | | attrubutes.addAttribute(new CAttribute("Current Step", |
| | | std::to_string(m_nCurStep).c_str(), "")); |
| | | std::to_string(m_nCurStep).c_str(), "", weight++)); |
| | | attrubutes.addAttribute(new CAttribute("Signal Dev", |
| | | ("W" + CToolUnits::toHexString(m_nWriteSignalDev, strTemp)).c_str(), "")); |
| | | ("W" + CToolUnits::toHexString(m_nWriteSignalDev, strTemp)).c_str(), "", weight++)); |
| | | } |
| | | |
| | | void CReadStep::init() |
| | |
| | | { |
| | | return 0; |
| | | } |
| | | |
| | | int CReadStep::setReturnCode(short code) |
| | | { |
| | | memcpy(m_szReturnBuf, &code, sizeof(short)); |
| | | m_nReturnDataSize = sizeof(short); |
| | | |
| | | return 0; |
| | | } |
| | | } |