1.使用CEqReadStep替换CEqJobEventStep, 实现ReceivedJob
2.实现SentOutJob
| | |
| | | } |
| | | } |
| | | |
| | | // 使用CEqReadStep替换CEqJobEventStep |
| | | { |
| | | // Received Job Report Upstream #1~9 |
| | | char szBuffer[256]; |
| | | for (int i = 0; i < 9; i++) { |
| | | CEqReadStep* pStep = new CEqReadStep((m_nIndex == 0 ? 0x8c90 : 0xcc90) + 320 * i, 320 * 2, |
| | | [&](void* pFrom, int code, const char* pszData, size_t size) -> int { |
| | | if (code == ROK && pszData != nullptr && size > 0) { |
| | | int port = (int)(__int64)((CEqReadStep*)pFrom)->getProp("Port"); |
| | | if (port > 0) { |
| | | decodeReceivedJobReport((CStep*)pFrom, port, pszData, size); |
| | | } |
| | | } |
| | | return -1; |
| | | }); |
| | | sprintf_s(szBuffer, "%s%d", STEP_EQ_RECEIVED_JOB_UPSn, i + 1); |
| | | pStep->setName(szBuffer); |
| | | pStep->setProp("Port", (void*)(__int64)(i + 1)); |
| | | pStep->setWriteSignalDev((m_nIndex == 0 ? 0x300 : 0x600) + i); |
| | | if (addStep(STEP_ID_RECIVE_JOB_UPS1 + i, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | } |
| | | { |
| | | // Sent Out Job Report Downstream #1~9 |
| | | char szBuffer[256]; |
| | | for (int i = 0; i < 9; i++) { |
| | | CEqReadStep* pStep = new CEqReadStep((m_nIndex == 0 ? 0x8000 : 0xc000) + 320 * i, 320 * 2, |
| | | [&](void* pFrom, int code, const char* pszData, size_t size) -> int { |
| | | if (code == ROK && pszData != nullptr && size > 0) { |
| | | int port = (int)(__int64)((CEqReadStep*)pFrom)->getProp("Port"); |
| | | if (port > 0) { |
| | | decodeReceivedJobReport((CStep*)pFrom, port, pszData, size); |
| | | } |
| | | } |
| | | return -1; |
| | | }); |
| | | sprintf_s(szBuffer, "%s%d", STEP_EQ_SENT_OUT_JOB_DOWNSn, i + 1); |
| | | pStep->setName(szBuffer); |
| | | pStep->setProp("Port", (void*)(__int64)(i + 1)); |
| | | pStep->setWriteSignalDev((m_nIndex == 0 ? 0x30a : 0x60a) + i); |
| | | if (addStep(STEP_ID_SENT_OUT_JOB_DOWNS1 + i, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /* |
| | | { |
| | | CEqJobEventStep* pStep = new CEqJobEventStep(); |
| | | pStep->setName(STEP_EQ_RECEIVED_JOB_UPS1); |
| | |
| | | delete pStep; |
| | | } |
| | | } |
| | | */ |
| | | |
| | | { |
| | | // Fetched Out Job Report #1~15 |
| | |
| | | } |
| | | } |
| | | |
| | | int CEFEM::onFetchedOut(int port, const char* pszGlassId) |
| | | int CEFEM::onFetchedOutJob(int port, const char* pszGlassId) |
| | | { |
| | | if (port == 1) { |
| | | return m_pPort[0]->fetchedOut(pszGlassId); |
| | | return m_pPort[0]->fetchedOutJob(pszGlassId); |
| | | } |
| | | if (port == 2) { |
| | | return m_pPort[1]->fetchedOut(pszGlassId); |
| | | return m_pPort[1]->fetchedOutJob(pszGlassId); |
| | | } |
| | | if (port == 3) { |
| | | return m_pPort[2]->fetchedOut(pszGlassId); |
| | | return m_pPort[2]->fetchedOutJob(pszGlassId); |
| | | } |
| | | if (port == 4) { |
| | | return m_pPort[3]->fetchedOut(pszGlassId); |
| | | return m_pPort[3]->fetchedOutJob(pszGlassId); |
| | | } |
| | | if (port == 5) { |
| | | return m_pArmTray[0]->fetchedOut(pszGlassId); |
| | | return m_pArmTray[0]->fetchedOutJob(pszGlassId); |
| | | } |
| | | if (port == 6) { |
| | | return m_pArmTray[1]->fetchedOut(pszGlassId); |
| | | return m_pArmTray[1]->fetchedOutJob(pszGlassId); |
| | | } |
| | | if (port == 7) { |
| | | return m_pAligner->fetchedOut(pszGlassId); |
| | | return m_pAligner->fetchedOutJob(pszGlassId); |
| | | } |
| | | if (port == 8) { |
| | | return m_pFliper->fetchedOut(pszGlassId); |
| | | return m_pFliper->fetchedOutJob(pszGlassId); |
| | | } |
| | | |
| | | return -1; |
| | | } |
| | | |
| | | int CEFEM::onStore(int port, const char* pszGlassId) |
| | | int CEFEM::onStoreJob(int port, const char* pszGlassId) |
| | | { |
| | | if (port == 1) { |
| | | return m_pPort[0]->storedJob(pszGlassId); |
| | |
| | | virtual int recvIntent(CPin* pPin, CIntent* pIntent); |
| | | virtual BOOL glassWillArrive(CGlass* pGlass); |
| | | virtual void onReceiveLBData(const char* pszData, size_t size); |
| | | virtual int onFetchedOut(int port, const char* pszGlassId); |
| | | virtual int onStore(int port, const char* pszGlassId); |
| | | virtual int onFetchedOutJob(int port, const char* pszGlassId); |
| | | virtual int onStoreJob(int port, const char* pszGlassId); |
| | | |
| | | public: |
| | | void setPort(unsigned int index, CLoadPort* pPort); |
| | |
| | | |
| | | void CEqJobEventStep::getAttributeVector(CAttributeVector& attrubutes) |
| | | { |
| | | CReadStep::getAttributeVector(attrubutes); |
| | | |
| | | unsigned int weight = 31; |
| | | std::string strTemp; |
| | | attrubutes.addAttribute(new CAttribute("Dev", |
| | | ("W" + CToolUnits::toHexString(m_nJobDataADev, strTemp)).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("CassetteSequenceNo", |
| | | std::to_string(m_jobDataS.getCassetteSequenceNo()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("JobSequenceNo", |
| | | std::to_string(m_jobDataS.getJobSequenceNo()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("LotId", |
| | | m_jobDataS.getLotId().c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("ProductId", |
| | | m_jobDataS.getProductId().c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("OperationId", |
| | | m_jobDataS.getOperationId().c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("Glass1Id", |
| | | m_jobDataS.getGlass1Id().c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("Glass2Id", |
| | | m_jobDataS.getGlass2Id().c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("JobType", |
| | | std::to_string(m_jobDataS.getJobType()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("MaterialsType", |
| | | std::to_string(m_jobDataS.getMaterialsType()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("ProductType", |
| | | std::to_string(m_jobDataS.getProductType()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("DummyType", |
| | | std::to_string(m_jobDataS.getDummyType()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("SkipFlag", |
| | | std::to_string(m_jobDataS.getSkipFlag()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("ProcessFlag", |
| | | std::to_string(m_jobDataS.getProcessFlag()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("ProcessResonCode", |
| | | std::to_string(m_jobDataS.getProcessResonCode()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("LastGlassFlag", |
| | | std::to_string(m_jobDataS.getLastGlassFlag()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("FirstGlassFlag", |
| | | std::to_string(m_jobDataS.getFirstGlassFlag()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("QTime1", |
| | | std::to_string(m_jobDataS.getQTime(0)).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("QTime2", |
| | | std::to_string(m_jobDataS.getQTime(1)).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("QTime3", |
| | | std::to_string(m_jobDataS.getQTime(2)).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("QTimeOverFlag", |
| | | std::to_string(m_jobDataS.getQTimeOverFlag()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("MasterRecipe", |
| | | std::to_string(m_jobDataS.getMasterRecipe()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("ProductRecipeId", |
| | | m_jobDataS.getProductRecipeId().c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("PCode", |
| | | m_jobDataS.getPCode().c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("UseType", |
| | | m_jobDataS.getUseType().c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("PanelMeasure", |
| | | m_jobDataS.getPanelMeasure().c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("SlotUnitSelectFlag", |
| | | std::to_string(m_jobDataS.getSlotUnitSelectFlag()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("SourcePortNo", |
| | | std::to_string(m_jobDataS.getSourcePortNo()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("SourceSlotNo", |
| | | std::to_string(m_jobDataS.getSourceSlotNo()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("TargetPortNo", |
| | | std::to_string(m_jobDataS.getTargetPortNo()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("TargetSlotNo", |
| | | std::to_string(m_jobDataS.getTargetSlotNo()).c_str(), "", weight++)); |
| | | m_jobDataS.getAttributeVector(attrubutes, weight); |
| | | } |
| | | |
| | | int CEqJobEventStep::onReadData() |
| | |
| | | return pGlass; |
| | | } |
| | | |
| | | int CEquipment::fetchedOut(const char* pszGlassId) |
| | | int CEquipment::fetchedOutJob(const char* pszGlassId) |
| | | { |
| | | if (m_pArm == nullptr) { |
| | | return -1; |
| | |
| | | return m_recipesManager.decodeRecipeParameterReport(pszData, size); |
| | | } |
| | | |
| | | int CEquipment::decodeReceivedJobReport(CStep* pStep, int port, const char* pszData, size_t size) |
| | | { |
| | | CJobDataS jobDataS; |
| | | int nRet = jobDataS.unserialize(&pszData[0], (int)size); |
| | | if (nRet < 0) return nRet; |
| | | |
| | | // 缓存Attribute,用于调试时显示信息 |
| | | unsigned int weight = 201; |
| | | CAttributeVector attrubutes; |
| | | jobDataS.getAttributeVector(attrubutes, weight); |
| | | pStep->addAttributeVector(attrubutes); |
| | | |
| | | |
| | | onReceivedJob(port, &jobDataS); |
| | | |
| | | return nRet; |
| | | } |
| | | |
| | | int CEquipment::onReceivedJob(int port, CJobDataS* pJobDataS) |
| | | { |
| | | LOGI("<CEquipment-%s>onReceivedJob.", m_strName.c_str()); |
| | | // return fetchedOutJob(pszGlassId); |
| | | return 0; |
| | | } |
| | | |
| | | int CEquipment::decodeSentOutJobReport(CStep* pStep, int port, const char* pszData, size_t size) |
| | | { |
| | | CJobDataS jobDataS; |
| | | int nRet = jobDataS.unserialize(&pszData[0], (int)size); |
| | | if (nRet < 0) return nRet; |
| | | |
| | | // 缓存Attribute,用于调试时显示信息 |
| | | unsigned int weight = 201; |
| | | CAttributeVector attrubutes; |
| | | jobDataS.getAttributeVector(attrubutes, weight); |
| | | pStep->addAttributeVector(attrubutes); |
| | | |
| | | |
| | | onReceivedJob(port, &jobDataS); |
| | | |
| | | return nRet; |
| | | } |
| | | |
| | | int CEquipment::onSentOutJob(int port, CJobDataS* pJobDataS) |
| | | { |
| | | LOGI("<CEquipment-%s>onSentOutJob.", m_strName.c_str()); |
| | | // return fetchedOutJob(pszGlassId); |
| | | return 0; |
| | | } |
| | | |
| | | int CEquipment::decodeFetchedOutJobReport(CStep* pStep, int port, const char* pszData, size_t size) |
| | | { |
| | | int index = 0; |
| | |
| | | jobDataB.getGlassId().c_str(), "", weight++)); |
| | | |
| | | |
| | | onFetchedOut(port, jobDataB.getGlassId().c_str()); |
| | | onFetchedOutJob(port, jobDataB.getGlassId().c_str()); |
| | | |
| | | return index; |
| | | } |
| | | |
| | | int CEquipment::onFetchedOut(int port, const char* pszGlassId) |
| | | int CEquipment::onFetchedOutJob(int port, const char* pszGlassId) |
| | | { |
| | | LOGI("<CEquipment-%s>onFetchedOut:port:%d|GlassId:%s", |
| | | LOGI("<CEquipment-%s>onFetchedOutJob:port:%d|GlassId:%s", |
| | | m_strName.c_str(), port, pszGlassId); |
| | | return fetchedOut(pszGlassId); |
| | | return fetchedOutJob(pszGlassId); |
| | | } |
| | | |
| | | int CEquipment::decodeStoredJobReport(CStep* pStep, int port, const char* pszData, size_t size) |
| | |
| | | jobDataB.getGlassId().c_str(), "", weight++)); |
| | | |
| | | |
| | | onStore(port, jobDataB.getGlassId().c_str()); |
| | | onStoreJob(port, jobDataB.getGlassId().c_str()); |
| | | |
| | | return index; |
| | | } |
| | | |
| | | int CEquipment::onStore(int port, const char* pszGlassId) |
| | | int CEquipment::onStoreJob(int port, const char* pszGlassId) |
| | | { |
| | | LOGI("<CEquipment-%s>onStore:port:%d|GlassId:%s", |
| | | m_strName.c_str(), port, pszGlassId); |
| | |
| | | virtual BOOL glassWillArrive(CGlass* pGlass); |
| | | virtual int outputGlass(int port); |
| | | virtual int glassArrived(CGlass* pGlass); |
| | | virtual int onFetchedOut(int port, const char* pszGlassId); |
| | | virtual int onStore(int port, const char* pszGlassId); |
| | | virtual int onReceivedJob(int port, CJobDataS* pJobDataS); |
| | | virtual int onSentOutJob(int port, CJobDataS* pJobDataS); |
| | | virtual int onFetchedOutJob(int port, const char* pszGlassId); |
| | | virtual int onStoreJob(int port, const char* pszGlassId); |
| | | void getGlassList(std::list<CGlass*>& list); |
| | | CGlass* getFrontGlass(); |
| | | BOOL removeClass(CGlass* pGlass); |
| | |
| | | int recipeParameterRequest(short masterRecipeId, short localRecipeId, short unitNo); |
| | | |
| | | public: |
| | | int fetchedOut(const char* pszGlassId); |
| | | int fetchedOutJob(const char* pszGlassId); |
| | | int storedJob(const char* pszGlassId); |
| | | BOOL isGlassListEmpty(); |
| | | |
| | |
| | | void addGlassToList(CGlass* pGlass); |
| | | short decodeRecipeListReport(const char* pszData, size_t size); |
| | | short decodeRecipeParameterReport(const char* pszData, size_t size); |
| | | int decodeReceivedJobReport(CStep* pStep, int port, const char* pszData, size_t size); |
| | | int decodeSentOutJobReport(CStep* pStep, int port, const char* pszData, size_t size); |
| | | int decodeFetchedOutJobReport(CStep* pStep, int port, const char* pszData, size_t size); |
| | | int decodeStoredJobReport(CStep* pStep, int port, const char* pszData, size_t size); |
| | | |
| | |
| | | memcpy(&pszBuffer[index], &m_nJobSequenceNo, sizeof(short)); |
| | | index += sizeof(short); |
| | | |
| | | int strLen = min(40, m_strLotId.size()); |
| | | int strLen = min(40, (int)m_strLotId.size()); |
| | | memcpy(&pszBuffer[index], m_strLotId.c_str(), strLen); |
| | | index += 40; |
| | | |
| | | strLen = min(20, m_strProductId.size()); |
| | | strLen = min(20, (int)m_strProductId.size()); |
| | | memcpy(&pszBuffer[index], m_strProductId.c_str(), strLen); |
| | | index += 20; |
| | | |
| | | strLen = min(20, m_strOperationId.size()); |
| | | strLen = min(20, (int)m_strOperationId.size()); |
| | | memcpy(&pszBuffer[index], m_strOperationId.c_str(), strLen); |
| | | index += 20; |
| | | |
| | | strLen = min(20, m_strGlass1Id.size()); |
| | | strLen = min(20, (int)m_strGlass1Id.size()); |
| | | memcpy(&pszBuffer[index], m_strGlass1Id.c_str(), strLen); |
| | | index += 20; |
| | | |
| | | strLen = min(20, m_strGlass2Id.size()); |
| | | strLen = min(20, (int)m_strGlass2Id.size()); |
| | | memcpy(&pszBuffer[index], m_strGlass2Id.c_str(), strLen); |
| | | index += 20; |
| | | |
| | |
| | | memcpy(&pszBuffer[index], &m_nMasterRecipe, sizeof(short)); |
| | | index += sizeof(short); |
| | | |
| | | strLen = min(10, m_strProductRecipeId.size()); |
| | | strLen = min(10, (int)m_strProductRecipeId.size()); |
| | | memcpy(&pszBuffer[index], m_strProductRecipeId.c_str(), strLen); |
| | | index += 10; |
| | | |
| | | strLen = min(10, m_strPCode.size()); |
| | | strLen = min(10, (int)m_strPCode.size()); |
| | | memcpy(&pszBuffer[index], m_strPCode.c_str(), strLen); |
| | | index += 10; |
| | | |
| | | strLen = min(10, m_strUseType.size()); |
| | | strLen = min(10, (int)m_strUseType.size()); |
| | | memcpy(&pszBuffer[index], m_strUseType.c_str(), strLen); |
| | | index += 10; |
| | | |
| | | strLen = min(80, m_strPanelMeasure.size()); |
| | | strLen = min(80, (int)m_strPanelMeasure.size()); |
| | | memcpy(&pszBuffer[index], m_strPanelMeasure.c_str(), strLen); |
| | | index += 80; |
| | | |
| | |
| | | |
| | | return 256 * 2; |
| | | } |
| | | |
| | | void CJobDataS::getAttributeVector(CAttributeVector& attrubutes, int beginWeight) |
| | | { |
| | | unsigned int weight = beginWeight; |
| | | std::string strTemp; |
| | | |
| | | attrubutes.addAttribute(new CAttribute("CassetteSequenceNo", |
| | | std::to_string(getCassetteSequenceNo()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("JobSequenceNo", |
| | | std::to_string(getJobSequenceNo()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("LotId", |
| | | getLotId().c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("ProductId", |
| | | getProductId().c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("OperationId", |
| | | getOperationId().c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("Glass1Id", |
| | | getGlass1Id().c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("Glass2Id", |
| | | getGlass2Id().c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("JobType", |
| | | std::to_string(getJobType()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("MaterialsType", |
| | | std::to_string(getMaterialsType()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("ProductType", |
| | | std::to_string(getProductType()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("DummyType", |
| | | std::to_string(getDummyType()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("SkipFlag", |
| | | std::to_string(getSkipFlag()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("ProcessFlag", |
| | | std::to_string(getProcessFlag()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("ProcessResonCode", |
| | | std::to_string(getProcessResonCode()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("LastGlassFlag", |
| | | std::to_string(getLastGlassFlag()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("FirstGlassFlag", |
| | | std::to_string(getFirstGlassFlag()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("QTime1", |
| | | std::to_string(getQTime(0)).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("QTime2", |
| | | std::to_string(getQTime(1)).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("QTime3", |
| | | std::to_string(getQTime(2)).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("QTimeOverFlag", |
| | | std::to_string(getQTimeOverFlag()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("MasterRecipe", |
| | | std::to_string(getMasterRecipe()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("ProductRecipeId", |
| | | getProductRecipeId().c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("PCode", |
| | | getPCode().c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("UseType", |
| | | getUseType().c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("PanelMeasure", |
| | | getPanelMeasure().c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("SlotUnitSelectFlag", |
| | | std::to_string(getSlotUnitSelectFlag()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("SourcePortNo", |
| | | std::to_string(getSourcePortNo()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("SourceSlotNo", |
| | | std::to_string(getSourceSlotNo()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("TargetPortNo", |
| | | std::to_string(getTargetPortNo()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("TargetSlotNo", |
| | | std::to_string(getTargetSlotNo()).c_str(), "", weight++)); |
| | | } |
| | | } |
| | |
| | | #pragma once |
| | | #include "CAttributeVector.h" |
| | | |
| | | |
| | | namespace SERVO { |
| | |
| | | void setTargetSlotNo(int no); |
| | | int serialize(char* pszBuffer, int nBufferSize); |
| | | int unserialize(const char* pszBuffer, int nBufferSize); |
| | | void getAttributeVector(CAttributeVector& attrubutes, int beginWeight); |
| | | |
| | | |
| | | private: |
| | |
| | | if (pEquipment->getID() == EQ_ID_LOADPORT1) { |
| | | pEquipment->outputGlass(1); |
| | | } |
| | | pEquipment->fetchedOut("P20250320A1A2"); |
| | | pEquipment->fetchedOutJob("P20250320A1A2"); |
| | | } |
| | | else if (nCmd == ID_EQSGRAPHITEM_TEST2) { |
| | | SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)pItem->pData; |
| | |
| | | m_attributeVector.addAttribute(pAttribute, TRUE); |
| | | } |
| | | |
| | | void CStep::addAttributeVector(CAttributeVector& attributeVector) |
| | | { |
| | | // 添加attribute时,要前删除存在的同名的attribute |
| | | unsigned int size = attributeVector.size(); |
| | | for (unsigned int i = 0; i < size; i++) { |
| | | m_attributeVector.addAttribute(attributeVector.getAttribute(i), TRUE); |
| | | } |
| | | } |
| | | |
| | | void CStep::convertString(const char* pszBuffer, int size, std::string& strOut) |
| | | { |
| | | strOut.clear(); |
| | |
| | | void setProp(const char* pszKey, void* pValue); |
| | | void* getProp(const char* pszKey); |
| | | void addAttribute(CAttribute* pAttribute); |
| | | void addAttributeVector(CAttributeVector& attributeVector); |
| | | |
| | | protected: |
| | | inline void Lock() { EnterCriticalSection(&m_criticalSection); } |
| | |
| | | #define STEP_EQ_P3_CASSETTE_CTRL_CMD _T("EQPort3CassetteCtrlCmd") |
| | | #define STEP_EQ_P4_CASSETTE_CTRL_CMD _T("EQPort4CassetteCtrlCmd") |
| | | #define STEP_EQ_CIM_MESSAGE_CONFIRM _T("EQCimMessageConfirm") |
| | | #define STEP_EQ_RECEIVED_JOB_UPSn _T("EQJEReceivedJobUps") |
| | | #define STEP_EQ_RECEIVED_JOB_UPS1 _T("EQJEReceivedJobUps1") |
| | | #define STEP_EQ_RECEIVED_JOB_UPS2 _T("EQJEReceivedJobUps2") |
| | | #define STEP_EQ_RECEIVED_JOB_UPS3 _T("EQJEReceivedJobUps3") |
| | | #define STEP_EQ_RECEIVED_JOB_UPS4 _T("EQJEReceivedJobUps4") |
| | | #define STEP_EQ_RECEIVED_JOB_UPS5 _T("EQJEReceivedJobUps5") |
| | | #define STEP_EQ_RECEIVED_JOB_UPS6 _T("EQJEReceivedJobUps6") |
| | | #define STEP_EQ_RECEIVED_JOB_UPS7 _T("EQJEReceivedJobUps7") |
| | | #define STEP_EQ_RECEIVED_JOB_UPS8 _T("EQJEReceivedJobUps8") |
| | | #define STEP_EQ_RECEIVED_JOB_UPS9 _T("EQJEReceivedJobUps9") |
| | | #define STEP_EQ_SENT_OUT_JOB_DOWNSn _T("EQJESentOutJobDowns") |
| | | #define STEP_EQ_SENT_OUT_JOB_DOWNS1 _T("EQJESentOutJobDowns1") |
| | | #define STEP_EQ_SENT_OUT_JOB_DOWNS2 _T("EQJESentOutJobDowns2") |
| | | #define STEP_EQ_SENT_OUT_JOB_DOWNS3 _T("EQJESentOutJobDowns3") |
| | | #define STEP_EQ_SENT_OUT_JOB_DOWNS4 _T("EQJESentOutJobDowns4") |
| | | #define STEP_EQ_SENT_OUT_JOB_DOWNS5 _T("EQJESentOutJobDowns5") |
| | | #define STEP_EQ_SENT_OUT_JOB_DOWNS6 _T("EQJESentOutJobDowns6") |
| | | #define STEP_EQ_SENT_OUT_JOB_DOWNS7 _T("EQJESentOutJobDowns7") |
| | | #define STEP_EQ_SENT_OUT_JOB_DOWNS8 _T("EQJESentOutJobDowns8") |
| | | #define STEP_EQ_SENT_OUT_JOB_DOWNS9 _T("EQJESentOutJobDowns9") |
| | | #define STEP_EQ_VCR1_EVENT_REPORT _T("EQVcr1EventReport") |
| | | #define STEP_EQ_RURRENT_RECIPE_CHANGE _T("EQCurrentRecipeChange") |
| | | #define STEP_EQ_MASTER_RECIPE_LIST_REQ _T("EQMasterRecipeListReq") |
| | |
| | | #define STEP_ID_RECIPE_PARAMETER_REPORT 0x56C |
| | | #define STEP_ID_RECIVE_JOB_UPS1 0x580 |
| | | #define STEP_ID_RECIVE_JOB_UPS2 0x581 |
| | | #define STEP_ID_RECIVE_JOB_UPS3 0x582 |
| | | #define STEP_ID_RECIVE_JOB_UPS4 0x583 |
| | | #define STEP_ID_RECIVE_JOB_UPS5 0x584 |
| | | #define STEP_ID_RECIVE_JOB_UPS6 0x585 |
| | | #define STEP_ID_RECIVE_JOB_UPS7 0x586 |
| | | #define STEP_ID_RECIVE_JOB_UPS8 0x587 |
| | | #define STEP_ID_RECIVE_JOB_UPS9 0x588 |
| | | #define STEP_ID_SENT_OUT_JOB_DOWNS1 0x590 |
| | | #define STEP_ID_SENT_OUT_JOB_DOWNS2 0x591 |
| | | #define STEP_ID_SENT_OUT_JOB_DOWNS3 0x592 |
| | | #define STEP_ID_SENT_OUT_JOB_DOWNS4 0x593 |
| | | #define STEP_ID_SENT_OUT_JOB_DOWNS5 0x594 |
| | | #define STEP_ID_SENT_OUT_JOB_DOWNS6 0x595 |
| | | #define STEP_ID_SENT_OUT_JOB_DOWNS7 0x596 |
| | | #define STEP_ID_SENT_OUT_JOB_DOWNS8 0x597 |
| | | #define STEP_ID_SENT_OUT_JOB_DOWNS9 0x598 |
| | | #define STEP_ID_STORE_JOB_REPORT1 0x5A0 |
| | | #define STEP_ID_STORE_JOB_REPORT2 0x5A1 |
| | | #define STEP_ID_STORE_JOB_REPORT3 0x5A2 |