1.为CVariable增加值的设置和获取
2.当发生Port状态改变为InUse时,此时也刚好获取到CarrierID,上报S6F11_CarrierID_Readed
| | |
| | | } |
| | | } |
| | | |
| | | unsigned int CCollectionEvent::getPortID() |
| | | unsigned int CCollectionEvent::getFirstPortID() |
| | | { |
| | | if (m_reports.empty()) return -1; |
| | | return m_reports.front()->getReportId(); |
| | |
| | | return nullptr; |
| | | } |
| | | |
| | | CReport* CCollectionEvent::getFirstReport() |
| | | { |
| | | if (m_reports.empty()) return nullptr; |
| | | return m_reports.front(); |
| | | } |
| | | |
| | | std::vector<CReport*>& CCollectionEvent::getReports() |
| | | { |
| | | return m_reports; |
| | |
| | | |
| | | /* 妿ä¸ä¸ªCEIDåªæä¸ä¸ªReportçåºæ¯,è°ç¨æ¤å½æ°è®¾ç½®æåæ¶ */ |
| | | void setReport(CReport* pReport); |
| | | unsigned int getPortID(); |
| | | unsigned int getFirstPortID(); |
| | | CReport* getFirstReport(); |
| | | |
| | | private: |
| | | unsigned int m_nCEID; |
| | | std::string m_strName; |
| | |
| | | if (m_nIndex == 0) { |
| | | static int ii = 0; |
| | | ii++; |
| | | if (ii == 20) { |
| | | if (ii == 50) { |
| | | char szBuffer[64] = {0}; |
| | | CStep* pStep = getStepWithName(STEP_EQ_PORT1_INUSE); |
| | | CPortStatusReport portStatusReport; |
| | | portStatusReport.setPortStatus(PORT_UNLOAD_READY); |
| | | portStatusReport.setPortStatus(PORT_INUSE); |
| | | portStatusReport.setJobExistenceSlot(0xf); |
| | | portStatusReport.setCassetteId("CID1984113"); |
| | | int nRet = portStatusReport.serialize(szBuffer, 64); |
| | | decodePortStatusReport(pStep, szBuffer, 64); |
| | | } |
| | |
| | | else { |
| | | // æåºå°åºç¨å±åéæ©è¦å å·¥ççå |
| | | generateGlassList(getScanCassetteMap()); |
| | | } |
| | | } |
| | | if (m_listener.onPortStatusChanged != nullptr) { |
| | | m_listener.onPortStatusChanged(this, portStatusReport.getPortStatus(), |
| | | getScanCassetteMap()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | // ç¼åAttributeï¼ç¨äºè°è¯æ¶æ¾ç¤ºä¿¡æ¯ |
| | |
| | | m_nJobExistenceSlot[0] = map; |
| | | } |
| | | |
| | | void CPortStatusReport::setCassetteId(const char* pszId) |
| | | { |
| | | m_strCassetteID = pszId; |
| | | } |
| | | |
| | | void CPortStatusReport::WriteString(CArchive& ar, std::string& string) |
| | | { |
| | | CString strTemp = string.c_str(); |
| | |
| | | bool isJobExistenceSlot(); |
| | | short getJobExistenceSlot(); |
| | | void setJobExistenceSlot(short map); |
| | | void setCassetteId(const char* pszId); |
| | | |
| | | private: |
| | | void WriteString(CArchive& ar, std::string& string); |
| | |
| | | { |
| | | m_nVarialbeId = 0; |
| | | m_format = SVFromat::U1; |
| | | m_nValue = 0; |
| | | } |
| | | |
| | | CVariable::CVariable(const char* pszId, const char* pszName, const char* pszFormat, const char* pszRemark) |
| | |
| | | { |
| | | return m_strRemark; |
| | | } |
| | | |
| | | void CVariable::setValue(__int64 value) |
| | | { |
| | | if (m_format == SVFromat::U1 || m_format == SVFromat::U2 || m_format == SVFromat::I2) { |
| | | m_nValue = value; |
| | | } |
| | | } |
| | | |
| | | void CVariable::setValue(const char* pszValue) |
| | | { |
| | | std::string strTemp = pszValue; |
| | | if (m_format == SVFromat::A20) { |
| | | if (strTemp.length() > 20) { |
| | | strTemp = strTemp.substr(0, 20); |
| | | } |
| | | } |
| | | else if (m_format == SVFromat::A50) { |
| | | if (strTemp.length() > 50) { |
| | | strTemp = strTemp.substr(0, 50); |
| | | } |
| | | } |
| | | |
| | | m_strValue = strTemp; |
| | | } |
| | | |
| | | std::string CVariable::getValue() |
| | | { |
| | | std::string strRet; |
| | | if (m_format == SVFromat::U1 || m_format == SVFromat::U2 || m_format == SVFromat::I2) { |
| | | strRet = std::to_string(m_nValue); |
| | | } |
| | | else if(m_format == SVFromat::A20 || m_format == SVFromat::A50) { |
| | | strRet = m_strValue; |
| | | } |
| | | |
| | | return strRet; |
| | | } |
| | | } |
| | |
| | | std::string& getName(); |
| | | SVFromat getFormat(); |
| | | std::string& getRemark(); |
| | | void setValue(__int64 value); |
| | | void setValue(const char* pszValue); |
| | | std::string getValue(); |
| | | |
| | | private: |
| | | unsigned int m_nVarialbeId; |
| | | std::string m_strName; |
| | | SVFromat m_format; |
| | | std::string m_strRemark; |
| | | __int64 m_nValue; |
| | | std::string m_strValue; |
| | | }; |
| | | } |
| | | |
| | |
| | | return nullptr; |
| | | } |
| | | |
| | | SERVO::CVariable* CHsmsPassive::getVariable(const char* pszName) |
| | | { |
| | | for (auto item : m_variabels) { |
| | | if (item->getName().compare(pszName) == 0) { |
| | | return item; |
| | | } |
| | | } |
| | | |
| | | return nullptr; |
| | | } |
| | | |
| | | void CHsmsPassive::clearAllVariabel() |
| | | { |
| | | for (auto item : m_variabels) { |
| | | delete item; |
| | | } |
| | | m_variabels.clear(); |
| | | } |
| | | |
| | | void CHsmsPassive::setVariableValue(const char* pszName, __int64 value) |
| | | { |
| | | auto v = getVariable(pszName); |
| | | if (v != nullptr) { |
| | | v->setValue(value); |
| | | } |
| | | } |
| | | |
| | | void CHsmsPassive::setVariableValue(const char* pszName, const char* value) |
| | | { |
| | | auto v = getVariable(pszName); |
| | | if (v != nullptr) { |
| | | v->setValue(value); |
| | | } |
| | | } |
| | | |
| | | int CHsmsPassive::loadReports(const char* pszFilepath) |
| | |
| | | |
| | | // æ£éªç»ææ¯å¦æ£ç¡® |
| | | for (auto item : m_collectionEvents) { |
| | | LOGE("=== ceid:%d, prtid:%d", item->getEventId(), item->getPortID()); |
| | | LOGE("=== ceid:%d, prtid:%d", item->getEventId(), item->getFirstPortID()); |
| | | } |
| | | |
| | | MYREPLY: |
| | |
| | | } |
| | | |
| | | // S6F11 |
| | | int CHsmsPassive::requestEventReportSend(unsigned int DATAID, unsigned int CEID, const std::vector<std::string>& values) |
| | | static unsigned int DATAID = 1; |
| | | int CHsmsPassive::requestEventReportSend(unsigned int CEID) |
| | | { |
| | | SERVO::CCollectionEvent* pEvent = getEvent(CEID); |
| | | if (pEvent == nullptr) { |
| | | return ER_NO_EVENT; |
| | | } |
| | | if (pEvent == nullptr) { |
| | | |
| | | SERVO::CReport* pReport = pEvent->getFirstReport(); |
| | | if (pReport == nullptr) { |
| | | return ER_UNLINK_EVENT_REPORT; |
| | | } |
| | | |
| | | |
| | | Lock(); |
| | | CHsmsAction* pAction = new CHsmsAction(ACTION_EVENT_REPORT, TRUE, m_nActionTimeout); |
| | |
| | | HSMS_Create1Message(pMessage, m_nSessionId, 6 | REPLY, 11, ++m_nSystemByte); |
| | | ASSERT(pMessage); |
| | | ISECS2Item* pItem = pMessage->getBody(); |
| | | pItem->addU4Item(DATAID, "DATAID"); |
| | | pItem->addU4Item(++DATAID, "DATAID"); |
| | | pItem->addU4Item(CEID, "CEID"); |
| | | ISECS2Item* pItemList1 = pItem->addItem(); |
| | | ISECS2Item* pItemList2 = pItemList1->addItem(); |
| | | pItemList2->addU4Item(pEvent->getPortID(), "RPTID"); |
| | | pItemList2->addU4Item(pReport->getReportId(), "RPTID"); |
| | | ISECS2Item* pItemList3 = pItemList2->addItem(); |
| | | |
| | | auto values = pReport->getVariables(); |
| | | for (auto item : values) { |
| | | pItemList3->addItem(item.c_str(), "V"); |
| | | pItemList3->addItem(item->getValue().c_str(), "V"); |
| | | } |
| | | pAction->setSendMessage(pMessage); |
| | | if (m_pPassive == NULL || STATE::SELECTED != m_pPassive->getState()) { |
| | |
| | | return ER_NOERROR; |
| | | } |
| | | |
| | | int CHsmsPassive::requestEventReportSend(const char* pszEventName) |
| | | { |
| | | SERVO::CCollectionEvent* pEvent = nullptr; |
| | | for (auto e : m_collectionEvents) { |
| | | if (e->getName().compare(pszEventName) == 0) { |
| | | pEvent = e; |
| | | break; |
| | | } |
| | | } |
| | | if (pEvent == nullptr) { |
| | | return ER_NO_EVENT; |
| | | } |
| | | return requestEventReportSend(pEvent->getEventId()); |
| | | } |
| | | |
| | | int CHsmsPassive::requestEventReportSend_CarrierID_Readed() |
| | | { |
| | | return requestEventReportSend("CarrierID_Readed"); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | |
| | | |
| | | // å徿å®Variable |
| | | SERVO::CVariable* getVariable(int variableId); |
| | | SERVO::CVariable* getVariable(const char* pszName); |
| | | |
| | | // 设置åéå¼ |
| | | void setVariableValue(const char* pszName, __int64 value); |
| | | void setVariableValue(const char* pszName, const char* value); |
| | | |
| | | // 仿件ä¸å è½½CReportå表 |
| | | int loadReports(const char* pszFilepath); |
| | |
| | | /* requestå¼å¤´ç彿°ä¸ºä¸»å¨åéæ°æ®ç彿° */ |
| | | int requestAreYouThere(); |
| | | int requestAlarmReport(int ALCD, int ALID, const char* ALTX); |
| | | int requestEventReportSend(unsigned int DATAID, unsigned int CEID, const std::vector<std::string>& values); |
| | | int requestEventReportSend(unsigned int CEID); |
| | | int requestEventReportSend(const char* pszEventName); |
| | | int requestEventReportSend_CarrierID_Readed(); |
| | | |
| | | private: |
| | | void replyAck(int s, int f, unsigned int systemBytes, BYTE ack, const char* pszAckName); |
| | |
| | | }; |
| | | masterListener.onLoadPortStatusChanged = [&] (void* pMaster, SERVO::CEquipment* pEquipment, short status, __int64 data) { |
| | | LOGE("<CModel>onLoadPortStatusChanged. status = %d", status); |
| | | if (status == PORT_INUSE) { |
| | | SERVO::CLoadPort* pLoadPort = dynamic_cast<SERVO::CLoadPort*>(pEquipment); |
| | | if (pLoadPort != nullptr) { |
| | | m_hsmsPassive.setVariableValue("CarrierID", pLoadPort->getCassetteId().c_str()); |
| | | } |
| | | m_hsmsPassive.requestEventReportSend_CarrierID_Readed(); |
| | | } |
| | | notifyPtr(RX_CODE_LOADPORT_STATUS_CHANGED, pEquipment); |
| | | }; |
| | | m_master.setListener(masterListener); |
| | |
| | | 31032,CJobResume,,(31000) |
| | | 40000,E90_SPSM_NoState_To_NeedsProcessing,,(40000) |
| | | 40001,E90_SPSM_InProcess_To_ProcessCompleted,,(40000) |
| | | 50000,CarrierID_Readed,,(50000) |
| | |
| | | 30000,(1,30000,30001) |
| | | 31000,(1,31000,31001) |
| | | 40000,(1,10203,20000) |
| | | 50000,(5000) |
| | | |
| | |
| | | 2023,OCREnable,U2,"OCR使è½ï¼O:å¼å¯ 1ï¼å±è½" |
| | | 2024,CCDEnable,U2,"CCD使è½ï¼O:å¼å¯ 1ï¼å±è½" |
| | | 2025,FFUParameter,U2,FFU设å®å¼ |
| | | 5000,CarrierID,A20,å¡å£ID |