From 166fa1cb727d6fe6962bbd2b5c4a0c9da6088048 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期三, 30 七月 2025 14:50:03 +0800
Subject: [PATCH] 1.获取配方后自动刷新列表; 2.HsmsAction序列化和反序列化,将来用于缓存上报的数据;
---
SourceCode/Bond/Servo/HsmsPassive.cpp | 61 ++++++++++++++++++++++++++++++
1 files changed, 61 insertions(+), 0 deletions(-)
diff --git a/SourceCode/Bond/Servo/HsmsPassive.cpp b/SourceCode/Bond/Servo/HsmsPassive.cpp
index 77e607c..902f236 100644
--- a/SourceCode/Bond/Servo/HsmsPassive.cpp
+++ b/SourceCode/Bond/Servo/HsmsPassive.cpp
@@ -521,6 +521,9 @@
else if (nStream == 2 && pHeader->function == 41) {
replyCommand(pMessage);
}
+ else if (nStream == 2 && pHeader->function == 43) {
+ replyConfigureSpooling(pMessage);
+ }
else if (nStream == 5 && pHeader->function == 3) {
replyEanbleDisableAlarmReport(pMessage);
}
@@ -665,6 +668,7 @@
SetEvent(m_hCimWorkEvent);
Unlock();
+
return ER_NOERROR;
}
@@ -1067,6 +1071,51 @@
return 0;
}
+// S2F43
+int CHsmsPassive::replyConfigureSpooling(IMessage* pRecv)
+{
+ if (m_pPassive == NULL || STATE::SELECTED != m_pPassive->getState()) {
+ return ER_NOTSELECT;
+ }
+ ISECS2Item* pBody = pRecv->getBody();
+ if (pBody == nullptr || pBody->getType() != SITYPE::L) ER_PARAM_ERROR;
+
+ // 娓呯┖鎵�鏈�
+ if (pBody->getSubItemSize() == 0) {
+ m_spoolingConfig.clear();
+ goto MYREPLY;
+ }
+
+ // 渚濇閰嶇疆Stream
+ for (int i = 0; i < pBody->getSubItemSize(); i++) {
+ ISECS2Item* pStreamItem = pBody->getSubItem(i);
+ ASSERT(pStreamItem);
+ unsigned char STRID, FCNID;
+ pStreamItem->getSubItemU1(0, STRID);
+ ISECS2Item* pFcnItemList = pStreamItem->getSubItem(1);
+ if (pFcnItemList->getSubItemSize() == 0) {
+ m_spoolingConfig[STRID].clear();
+ }
+ else {
+ for (int j = 0; j < pFcnItemList->getSubItemSize(); j++) {
+ pFcnItemList->getSubItemU1(j, FCNID);
+ m_spoolingConfig[STRID].insert(FCNID);
+ }
+ }
+ }
+
+ // 鎵撳嵃楠岃瘉缁撴灉
+ for (auto s : m_spoolingConfig) {
+ LOGI("====> stream:%d", s.first);
+ for (auto f : s.second) {
+ LOGI("function:%d", f);
+ }
+ }
+MYREPLY:
+ replyAck(2, 42, pRecv->getHeader()->systemBytes, BYTE(0), "ERACK");
+ return 0;
+}
+
// S5F3
int CHsmsPassive::replyEanbleDisableAlarmReport(IMessage* pRecv)
{
@@ -1182,6 +1231,18 @@
SetEvent(m_hCimWorkEvent);
Unlock();
+ int size = pAction->serialize(nullptr, 0);;
+ if (size > 0) {
+ char* pszBuffer = new char[size];
+ pAction->serialize(pszBuffer, size);
+ AfxMessageBox("abc");
+
+ CHsmsAction* pAction2 = new CHsmsAction();
+ pAction2->unserialize(pszBuffer, size);
+ AfxMessageBox("def");
+ m_pPassive->sendMessage(pAction2->getSendMessage());
+ }
+
return ER_NOERROR;
}
--
Gitblit v1.9.3