1.修复以下问题:Only-1 Job 支持:isProcessJobsEmpty()/validate 决定了当前实现只支持单个 PJ/CJ。Host 如果按标准一次下多 PJ 或在运行中追加 PJ,会被拒绝但无明确回应,容易引起 Host/设备状态脱节。
已修改1个文件
20 ■■■■■ 文件已修改
SourceCode/Bond/Servo/HsmsPassive.cpp 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/HsmsPassive.cpp
@@ -3405,6 +3405,26 @@
    // 解释数据,得到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;