| | |
| | | |
| | | |
| | | // 解释数据,得到CProcessJob |
| | | // 容量前置检查:当前实现仅支持单批 PJ 集合,如果已有 PJ/CJ,直接返回 ACKA=false |
| | | if (m_pModel != nullptr && !m_pModel->getMaster().isProcessJobsEmpty()) { |
| | | IMessage* pMessage = NULL; |
| | | HSMS_Create1Message(pMessage, m_nSessionId, 16, 16, ++m_nSystemByte); |
| | | ASSERT(pMessage); |
| | | pMessage->getBody()->addItem(); // PRJOBID list 为空 |
| | | ISECS2Item* pItemErrors = pMessage->getBody()->addItem(); |
| | | pItemErrors->addBoolItem(false, "ACKA"); |
| | | ISECS2Item* pItemErrors2 = pItemErrors->addItem(); |
| | | auto err = pItemErrors2->addItem(); |
| | | err->addU4Item(1000, "ERRCODE"); |
| | | err->addItem("PJobSpace=0 (existing ProcessJob/ControlJob)", "ERRTEXT"); |
| | | m_pPassive->sendMessage(pMessage); |
| | | LOGI("<HSMS>[SEND]sessionId:%d, sType:%d systemBytes:%d", |
| | | pMessage->getHeader()->sessionId, pMessage->getHeader()->sType, pMessage->getHeader()->systemBytes); |
| | | LogSecsMessageBrief("<HSMS>[SEND]", pMessage); |
| | | HSMS_Destroy1Message(pMessage); |
| | | return 0; |
| | | } |
| | | |
| | | ISECS2Item* pItemPjs, * pItemPj,* pItemCarriers, * pItemCarrier, *pItemSlots, *pItemRecipes; |
| | | unsigned short DATAID; |
| | | const char* pszPrjobid, *pszMF, *pszCarrierId, *pszRecipeName; |
| | |
| | | } |
| | | |
| | | |
| | | // 回复报文 |
| | | ASSERT(m_listener.onPRJobMultiCreate != nullptr); |
| | | int nRet = m_listener.onPRJobMultiCreate(this, pjs); |
| | | |
| | | |
| | | // 回复报文(在校验/落库后再回复,以便带上真实的 issues) |
| | | IMessage* pMessage = NULL; |
| | | HSMS_Create1Message(pMessage, m_nSessionId, 16, 16, ++m_nSystemByte); |
| | | ASSERT(pMessage); |
| | |
| | | } |
| | | } |
| | | } |
| | | else { |
| | | pItemErrors->addBoolItem(true, "ACKA"); |
| | | pItemErrors->addItem(); // 空列表 |
| | | } |
| | | m_pPassive->sendMessage(pMessage); |
| | | LOGI("<HSMS>[SEND]sessionId:%d, sType:%d systemBytes:%d", |
| | | pMessage->getHeader()->sessionId, pMessage->getHeader()->sType, pMessage->getHeader()->systemBytes); |
| | | LogSecsMessageBrief("<HSMS>[SEND]", pMessage); |
| | | HSMS_Destroy1Message(pMessage); |
| | | |
| | | |
| | | ASSERT(m_listener.onPRJobMultiCreate != nullptr); |
| | | int nRet = m_listener.onPRJobMultiCreate(this, pjs); |
| | | |
| | | |
| | | // 释放有问题(未添加到master)的内存 |
| | |
| | | if (pEvent == nullptr) { |
| | | return ER_NO_EVENT; |
| | | } |
| | | // 触发 PauseEvent 检测桩(由 Master 负责实际策略) |
| | | if (m_pModel != nullptr) { |
| | | m_pModel->getMaster().handleCollectionEvent(CEID); |
| | | } |
| | | |
| | | SERVO::CReport* pReport = pEvent->getFirstReport(); |
| | | |