| | |
| | | #include "CEquipmentPage2.h" |
| | | #include "CEquipmentPage3.h" |
| | | #include "CPagePortProperty.h" |
| | | #include "CPagePortStatus.h" |
| | | #include "CPageCassetteCtrlCmd.h" |
| | | #include "CJobDataB.h" |
| | | #include "CRobotCmdContainerDlg.h" |
| | | #include "CRobotCmdTestDlg.h" |
| | | |
| | | |
| | | // CPageGraph2 对话框 |
| | |
| | | SERVO::CEquipment* pEquipment = nullptr; |
| | | if (pAny->getPtrValue("ptr", (void*&)pEquipment)) { |
| | | if (pEquipment != nullptr) { |
| | | m_pEqsGraphWnd->ShowItemIndicator((DWORD_PTR)pEquipment, !pEquipment->isGlassListEmpty()); |
| | | m_pEqsGraphWnd->ShowItemIndicator((DWORD_PTR)pEquipment, pEquipment->hasGlass()); |
| | | } |
| | | } |
| | | } |
| | |
| | | ASSERT(pItem); |
| | | SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)pItem->pData; |
| | | |
| | | CHMPropertyDlg dlg(pEquipment->getName().c_str(), 600, 680); |
| | | CHMPropertyDlg dlg(pEquipment->getName().c_str(), 658, 788); |
| | | |
| | | CEquipmentPage1* pPage1 = new CEquipmentPage1(); |
| | | pPage1->setEquipment(pEquipment); |
| | | pPage1->Create(IDD_PAGE_EQUIPMENT1); |
| | | dlg.addPage(pPage1, "Link Signal"); |
| | | |
| | | if (_strcmpi(pEquipment->getClassName(), "CLoadPort") == 0) { |
| | | CPagePortProperty* pPage1 = new CPagePortProperty(); |
| | | pPage1->setLoadPort((SERVO::CLoadPort*)pEquipment); |
| | | pPage1->Create(IDD_PAGE_PORT_PROPERTY); |
| | | dlg.addPage(pPage1, "属性"); |
| | | CPagePortProperty* pPageA = new CPagePortProperty(); |
| | | pPageA->setLoadPort((SERVO::CLoadPort*)pEquipment); |
| | | pPageA->Create(IDD_PAGE_PORT_PROPERTY); |
| | | dlg.addPage(pPageA, "属性"); |
| | | |
| | | CPagePortStatus* pPageB = new CPagePortStatus(); |
| | | pPageB->setLoadPort((SERVO::CLoadPort*)pEquipment); |
| | | pPageB->Create(IDD_PAGE_PORT_STATUS); |
| | | dlg.addPage(pPageB, "Status"); |
| | | } |
| | | |
| | | CEquipmentPage2* pPage2 = new CEquipmentPage2(); |
| | | pPage2->setEquipment(pEquipment); |
| | | pPage2->Create(IDD_PAGE_EQUIPMENT2); |
| | | dlg.addPage(pPage2, "Glass"); |
| | | dlg.addPage(pPage2, "Slots"); |
| | | |
| | | if (pEquipment->getID() == EQ_ID_EFEM) { |
| | | CEquipmentPage3* pPage3 = new CEquipmentPage3(); |
| | |
| | | |
| | | // 测试 |
| | | else if (nCmd == ID_EQSGRAPHITEM_TEST1) { |
| | | BOOL bTestGenerate = FALSE; |
| | | SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)pItem->pData; |
| | | if (pEquipment->getID() == EQ_ID_LOADPORT1) { |
| | | ((SERVO::CLoadPort*)pEquipment)->testGenerateGlassList(SERVO::MaterialsType::G1, 10, |
| | | if (pEquipment->getID() == EQ_ID_LOADPORT1 && !pEquipment->hasGlass()) { |
| | | ((SERVO::CLoadPort*)pEquipment)->testGenerateGlassList(SERVO::MaterialsType::G1, |
| | | "P20250320G1X", 1); |
| | | bTestGenerate = TRUE; |
| | | } |
| | | else if (pEquipment->getID() == EQ_ID_LOADPORT2) { |
| | | ((SERVO::CLoadPort*)pEquipment)->testGenerateGlassList(SERVO::MaterialsType::G2, 10, |
| | | else if (pEquipment->getID() == EQ_ID_LOADPORT2 && !pEquipment->hasGlass()) { |
| | | ((SERVO::CLoadPort*)pEquipment)->testGenerateGlassList(SERVO::MaterialsType::G2, |
| | | "P20250320G2X", 1); |
| | | bTestGenerate = TRUE; |
| | | } |
| | | SERVO::CGlass* pGlass = pEquipment->getFrontGlass(); |
| | | if (pGlass != nullptr) { |
| | | SERVO::CJobDataB* pJobDataB = pGlass->getJobDataB(); |
| | | SERVO::CJobDataS* pJobDataS = pGlass->getJobDataS(); |
| | | if (pJobDataB != nullptr && pJobDataS != nullptr) { |
| | | pEquipment->fetchedOutJob(pJobDataB); |
| | | pEquipment->onSentOutJob(0, pJobDataS); |
| | | |
| | | if (!bTestGenerate) { |
| | | SERVO::CRobotTask* pTask = theApp.m_model.getMaster().getActiveRobotTask(); |
| | | if (pTask != nullptr) { |
| | | SERVO::CGlass* pGlass = (SERVO::CGlass*)pTask->getContext(); |
| | | SERVO::CJobDataB* pJobDataB = pGlass->getJobDataB(); |
| | | SERVO::CJobDataS* pJobDataS = pGlass->getJobDataS(); |
| | | if (pJobDataB != nullptr && pJobDataS != nullptr) { |
| | | pEquipment->onFetchedOutJob(0, pJobDataB); |
| | | pEquipment->onSentOutJob(0, pJobDataS); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)pItem->pData; |
| | | SERVO::CArm* pArm = (SERVO::CArm*)pEquipment->getArm(); |
| | | if (pArm != nullptr) { |
| | | SERVO::CGlass* pGlass = pArm->getFrontGlass(); |
| | | SERVO::CGlass* pGlass = pArm->getAnyGlass(); |
| | | if (pGlass != nullptr) { |
| | | SERVO::CJobDataB* pJobDataB = pGlass->getJobDataB(); |
| | | SERVO::CJobDataS* pJobDataS = pGlass->getJobDataS(); |
| | |
| | | else if (nCmd == ID_EQSGRAPHITEM_TEST3) { |
| | | SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)pItem->pData; |
| | | if (pEquipment != nullptr) { |
| | | SERVO::CGlass* pGlass = pEquipment->getFrontGlass(); |
| | | SERVO::CGlass* pGlass = pEquipment->getAnyGlass(); |
| | | if (pGlass != nullptr) { |
| | | SERVO::CProcessData pd; |
| | | pd.setGlassId(pGlass->getID().c_str()); |
| | |
| | | } |
| | | else if (nCmd == ID_EQSGRAPHITEM_TEST4) { |
| | | SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)pItem->pData; |
| | | |
| | | /* 测试 RobotCMD */ |
| | | if (pEquipment->getID() == EQ_ID_EFEM) { |
| | | SERVO::CEFEM* pEFEM = (SERVO::CEFEM*)pEquipment; |
| | | |
| | | //SERVO::ROBOT_CMD_PARAM cmds[4]; |
| | | //cmds[0].sequenceNo = 1; |
| | | //cmds[0].rcmd = (short)SERVO::RCMD::Move; |
| | | //cmds[0].armNo = 1; |
| | | //cmds[0].getPosition = 1; |
| | | //cmds[0].putPosition = 2; |
| | | //cmds[0].getSlotNo = 3; |
| | | //cmds[0].putSlotNo = 4; |
| | | //cmds[0].subCmd = 5; |
| | | //cmds[1].sequenceNo = 2; |
| | | //cmds[1].rcmd = (short)SERVO::RCMD::Transfer; |
| | | //cmds[1].armNo = 2; |
| | | //cmds[1].getPosition = 6; |
| | | //cmds[1].putPosition = 7; |
| | | //cmds[1].getSlotNo = 8; |
| | | //cmds[1].putSlotNo = 9; |
| | | //cmds[1].subCmd = 10; |
| | | //pEFEM->robotCmds(cmds, 2); |
| | | |
| | | //CRobotCmdContainerDlg dlg; |
| | | //if (dlg.DoModal() == IDOK) { |
| | | // std::vector<SERVO::ROBOT_CMD_PARAM>& cmds = dlg.GetResultCmds(); |
| | | // if (!cmds.empty()) { |
| | | // pEFEM->robotCmds(cmds.data(), (int)cmds.size()); |
| | | // } |
| | | //} |
| | | |
| | | CRobotCmdTestDlg dlg; |
| | | dlg.SetEFEM(pEFEM); |
| | | dlg.DoModal(); |
| | | if (pEquipment != nullptr) { |
| | | pEquipment->setLinkSignal(0, SIGNAL_UPSTREAM_INLINE, TRUE); |
| | | pEquipment->setLinkSignal(0, SIGNAL_UPSTREAM_TROUBLE, FALSE); |
| | | pEquipment->setLinkSignal(0, SIGNAL_INTERLOCK, TRUE); |
| | | pEquipment->setLinkSignal(0, SIGNAL_SEND_ABLE, TRUE); |
| | | pEquipment->setLinkSignal(1, SIGNAL_UPSTREAM_INLINE, TRUE); |
| | | pEquipment->setLinkSignal(1, SIGNAL_UPSTREAM_TROUBLE, FALSE); |
| | | pEquipment->setLinkSignal(1, SIGNAL_INTERLOCK, TRUE); |
| | | pEquipment->setLinkSignal(1, SIGNAL_SEND_ABLE, TRUE); |
| | | } |
| | | |
| | | |
| | | if (pEquipment != nullptr && (pEquipment->getID() == EQ_ID_Bonder1 |
| | | || pEquipment->getID() == EQ_ID_Bonder2)) { |
| | | SERVO::CGlass* pGlass = pEquipment->getAnyGlass(); |
| | | if (pGlass != nullptr) { |
| | | SERVO::CProcessData pd; |
| | | pd.setGlassId(pGlass->getID().c_str()); |
| | | pEquipment->onProcessData(&pd); |
| | | } |
| | | } |
| | | } |
| | | else if (nCmd == ID_EQSGRAPHITEM_TEST5) { |
| | | SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)pItem->pData; |
| | | if (pEquipment != nullptr) { |
| | | pEquipment->setLinkSignal(0, SIGNAL_UPSTREAM_INLINE, TRUE); |
| | | pEquipment->setLinkSignal(0, SIGNAL_UPSTREAM_TROUBLE, TRUE); |
| | | pEquipment->setLinkSignal(0, SIGNAL_INTERLOCK, TRUE); |
| | | pEquipment->setLinkSignal(0, SIGNAL_SEND_ABLE, FALSE); |
| | | } |
| | | } |
| | | else if (nCmd == ID_EQSGRAPHITEM_TEST6) { |
| | | SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)pItem->pData; |
| | | |
| | | |
| | | // 测试下发Cim Message |
| | |
| | | |
| | | |
| | | /* |
| | | SERVO::CGlass* pGlass = pEquipment->getFrontGlass(); |
| | | SERVO::CGlass* pGlass = pEquipment->getAnyGlass(); |
| | | if (pGlass != nullptr) { |
| | | std::string strDescription; |
| | | SERVO::CPath* pPath = pGlass->getPath(); |
| | |
| | | m_pEqsGraphWnd->AddPin(pItem, OUTPIN, outPin->getName().c_str(), (DWORD_PTR)outPin); |
| | | } |
| | | |
| | | m_pEqsGraphWnd->ShowItemIndicator((DWORD_PTR)pEquipment, !pEquipment->isGlassListEmpty()); |
| | | m_pEqsGraphWnd->ShowItemIndicator((DWORD_PTR)pEquipment, pEquipment->hasGlass()); |
| | | } |
| | | |
| | | void CPageGraph2::OnTimer(UINT_PTR nIDEvent) |