| | |
| | | m_bLocalAlarm = FALSE; |
| | | m_bAutoRecipeChange = FALSE; |
| | | m_bVCREnable[0] = FALSE; |
| | | memset(m_bLinkSignal, 0, sizeof(m_bLinkSignal)); |
| | | m_pCclink = nullptr; |
| | | m_nBaseAlarmId = 0; |
| | | m_pArm = nullptr; |
| | |
| | | } |
| | | */ |
| | | |
| | | // 以下解释和处理数据 |
| | | // 连接信号解释和保存 |
| | | BOOL bFlag; |
| | | int index = 0x540; |
| | | int index = 0; |
| | | for (int i = 0; i < 8; i++) { |
| | | m_bLinkSignal[i][SIGNAL_UPSTREAM_INLINE] = isBitOn(pszData, size, index + 0); |
| | | m_bLinkSignal[i][SIGNAL_UPSTREAM_TROUBLE] = isBitOn(pszData, size, index + 1); |
| | | m_bLinkSignal[i][SIGNAL_SEND_ABLE] = isBitOn(pszData, size, index + 3); |
| | | index += 0x40; |
| | | } |
| | | |
| | | |
| | | // 其它信号及响应 |
| | | index = 0x540; |
| | | |
| | | |
| | | // alive |
| | |
| | | return m_bVCREnable[index]; |
| | | } |
| | | |
| | | BOOL CEquipment::isLinkSignalOn(unsigned int path, unsigned int signal) |
| | | { |
| | | if (path >= PATH_MAX) return FALSE; |
| | | if (signal >= SIGNAL_MAX) return FALSE; |
| | | return m_bLinkSignal[path][signal]; |
| | | } |
| | | |
| | | void CEquipment::setLinkSignal(unsigned int path, unsigned int signal, BOOL bOn) |
| | | { |
| | | if (path >= PATH_MAX) return; |
| | | if (signal >= SIGNAL_MAX) return; |
| | | m_bLinkSignal[path][signal] = bOn; |
| | | } |
| | | |
| | | int CEquipment::onStepEvent(CStep* pStep, int code) |
| | | { |
| | | if (code == STEP_EVENT_READDATA) { |
| | |
| | | return 0; |
| | | } |
| | | |
| | | int CEquipment::storedJob(CJobDataB* pJobDataB, short& putSlot) |
| | | int CEquipment::storedJob(CJobDataB* pJobDataB, short putSlot) |
| | | { |
| | | if (m_pArm == nullptr) { |
| | | return -1; |
| | |
| | | |
| | | ASSERT(pGlass); |
| | | Lock(); |
| | | pGlass->addPath(m_nID); |
| | | pGlass->addPath(m_nID, getSlotUnit(putSlot)); |
| | | m_slot[putSlot - 1].setContext(pGlass); |
| | | pGlass->release(); // tempFetchOut需要调用一次release |
| | | Unlock(); |
| | |
| | | CGlass* pBuddy = pGlass->getBuddy(); |
| | | if (pBuddy != nullptr) { |
| | | Lock(); |
| | | pBuddy->addPath(m_nID); |
| | | pBuddy->addPath(m_nID, 0); |
| | | if (putSlot % 2 == 0) { |
| | | m_slot[putSlot - 2].setContext(pBuddy); |
| | | } |
| | |
| | | MaterialsType glassType = pGlass->getType(); |
| | | if (glassType == MaterialsType::G1 && putSlotType == MaterialsType::G2) continue; |
| | | if (glassType == MaterialsType::G2 && putSlotType == MaterialsType::G1) continue; |
| | | if (!pGlass->isProcessed(m_nID)) continue; |
| | | if (!pGlass->isProcessed(m_nID, 0)) continue; |
| | | |
| | | return &m_slot[i]; |
| | | } |
| | |
| | | int CEquipment::onProcessData(CProcessData* pProcessData) |
| | | { |
| | | LOGI("<CEquipment-%s>onProcessData.", m_strName.c_str()); |
| | | CGlass* pGlass = getGlass(pProcessData->getGlassId().c_str()); |
| | | if (pGlass != nullptr) { |
| | | pGlass->processEnd(m_nID); |
| | | } |
| | | |
| | | return 0; |
| | | } |