1.修复报文字段差异风险:
S1F3:项目用 getSubItemU4(0) 取 SVID;日志里有 U2 的情况,可能导致解析失败后回退成 SV=0。
S6F11:项目发送 DATAID(U4) + CEID(U4);日志样例里第一个字段是 U2,可能存在类型/字段定义不一致。
已修改1个文件
11 ■■■■ 文件已修改
SourceCode/Bond/Servo/HsmsPassive.cpp 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/HsmsPassive.cpp
@@ -1617,18 +1617,18 @@
    ASSERT(pMessage);
    unsigned char SVU1 = 0;
    unsigned int SVID = 0;
    unsigned short SVID = 0;
    ISECS2Item* pBody = pRecv->getBody();
    if (pBody == nullptr || pBody->getType() != SITYPE::L) {
        pMessage->getBody()->addU1Item(SVU1, "SV");
        goto MYREPLY;
    }
    if (!pBody->getSubItemU4(0, SVID)) {
    if (!pBody->getSubItemU2(0, SVID)) {
        pMessage->getBody()->addU1Item(SVU1, "SV");
        goto MYREPLY;
    }
    SERVO::CVariable* pVariable = getVariable(SVID);
    SERVO::CVariable* pVariable = getVariable((int)SVID);
    if (pVariable == nullptr) {
        pMessage->getBody()->addU1Item(SVU1, "SV");
        goto MYREPLY;
@@ -2459,7 +2459,7 @@
}
// S6F11
static unsigned int DATAID = 1;
static unsigned short DATAID = 0;
int CHsmsPassive::requestEventReportSend(unsigned int CEID)
{
    SERVO::CCollectionEvent* pEvent = getEvent(CEID);
@@ -2479,7 +2479,8 @@
    HSMS_Create1Message(pMessage, m_nSessionId, 6 | REPLY, 11, ++m_nSystemByte);
    ASSERT(pMessage);
    ISECS2Item* pItem = pMessage->getBody();
    pItem->addU4Item(++DATAID, "DATAID");
    // pItem->addU2Item(++DATAID, "DATAID");        // 根据别的日志显示DATAID恒为0,所以我们先照使用0
    pItem->addU2Item(0, "DATAID");
    pItem->addU4Item(CEID, "CEID");
    ISECS2Item* pItemList1 = pItem->addItem();
    ISECS2Item* pItemList2 = pItemList1->addItem();