| | |
| | | return nullptr; |
| | | } |
| | | |
| | | CGlass* CEquipment::getGlassFromSlot(int slotNo) |
| | | { |
| | | CSlot* pSlot = nullptr; |
| | | for (int i = 0; i < SLOT_MAX; i++) { |
| | | if (!m_slot[i].isEnable()) continue; |
| | | if (m_slot[i].getNo() != slotNo) continue; |
| | | pSlot = &m_slot[i]; |
| | | break; |
| | | } |
| | | |
| | | if (pSlot != nullptr) { |
| | | return (CGlass*)pSlot->getContext(); |
| | | } |
| | | |
| | | return nullptr; |
| | | } |
| | | |
| | | CGlass* CEquipment::getGlassWithCassette(int cassetteSequenceNo, int jobSequenceNo) |
| | | { |
| | | CSlot* pSlot = nullptr; |
| | | for (int i = 0; i < SLOT_MAX; i++) { |
| | | if (!m_slot[i].isEnable()) continue; |
| | | CGlass* pGlass = (CGlass*)m_slot[i].getContext(); |
| | | if (pGlass == nullptr) continue; |
| | | CJobDataS* pJobDataS = pGlass->getJobDataS(); |
| | | ASSERT(pJobDataS); |
| | | if (pJobDataS->getCassetteSequenceNo() == cassetteSequenceNo |
| | | && pJobDataS->getJobSequenceNo() == jobSequenceNo) { |
| | | return pGlass; |
| | | } |
| | | } |
| | | |
| | | |
| | | return nullptr; |
| | | } |
| | | |
| | | CJobDataS* CEquipment::getJobDataSWithCassette(int cassetteSequenceNo, int jobSequenceNo) |
| | | { |
| | | CSlot* pSlot = nullptr; |
| | | for (int i = 0; i < SLOT_MAX; i++) { |
| | | if (!m_slot[i].isEnable()) continue; |
| | | CGlass* pGlass = (CGlass*)m_slot[i].getContext(); |
| | | if (pGlass == nullptr) continue; |
| | | CJobDataS* pJobDataS = pGlass->getJobDataS(); |
| | | ASSERT(pJobDataS); |
| | | if (pJobDataS->getCassetteSequenceNo() == cassetteSequenceNo |
| | | && pJobDataS->getJobSequenceNo() == jobSequenceNo) { |
| | | return pJobDataS; |
| | | } |
| | | } |
| | | |
| | | |
| | | return nullptr; |
| | | } |
| | | |
| | | bool CEquipment::isAlarmStep(SERVO::CStep* pStep) |
| | | { |
| | | return CToolUnits::startsWith(pStep->getName(), STEP_ALARM_START); |
| | |
| | | return &m_slot[index]; |
| | | } |
| | | |
| | | CGlass* CEquipment::getGlassFromSlot(int slotNo) |
| | | { |
| | | CSlot* pSlot = nullptr; |
| | | for (int i = 0; i < SLOT_MAX; i++) { |
| | | if (!m_slot[i].isEnable()) continue; |
| | | if (m_slot[i].getNo() != slotNo) continue; |
| | | pSlot = &m_slot[i]; |
| | | break; |
| | | } |
| | | |
| | | if (pSlot != nullptr) { |
| | | return (CGlass*)pSlot->getContext(); |
| | | } |
| | | |
| | | return nullptr; |
| | | } |
| | | |
| | | CGlass* CEquipment::getAnyGlass() |
| | | { |
| | | CSlot* pSlot = nullptr; |
| | |
| | | // Cassette Sequence No 1W |
| | | // Job Sequence No 1W |
| | | // Job DataS 256W |
| | | char szBuffer[1024]; |
| | | index = 0; |
| | | memcpy(&szBuffer[index], &cassetteSequenceNo, sizeof(short)); |
| | | index += sizeof(short); |
| | | memcpy(&szBuffer[index], &jobSequenceNo, sizeof(short)); |
| | | index += sizeof(short); |
| | | |
| | | |
| | | CJobDataS* pJobDataS = getJobDataSWithCassette(cassetteSequenceNo, jobSequenceNo); |
| | | if (pJobDataS != nullptr) { |
| | | index += pJobDataS->serialize(&szBuffer[index], 1024 - sizeof(short) - sizeof(short)); |
| | | ((CEqReadStep*)pStep)->setReturnData(szBuffer, index); |
| | | } |
| | | |
| | | |
| | | // 缓存Attribute,用于调试时显示信息 |