From 5a8bbd2426aeacdbbb2fdb1a7f7a1adce0cac7f9 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期五, 01 八月 2025 16:23:29 +0800
Subject: [PATCH] 1. 新增以下功能函数并集成:    - InitStorage():初始化存储区域    - StartStorage():开始数据存储    - StopStorage():停止存储并自动提取、分析数据    - AnalyzeStoredData():分析指定端口数据,返回偏移量

---
 SourceCode/Bond/Servo/Model.cpp |   39 +++++++++++++++++++++++++++++++++++----
 1 files changed, 35 insertions(+), 4 deletions(-)

diff --git a/SourceCode/Bond/Servo/Model.cpp b/SourceCode/Bond/Servo/Model.cpp
index 476ca44..3427f45 100644
--- a/SourceCode/Bond/Servo/Model.cpp
+++ b/SourceCode/Bond/Servo/Model.cpp
@@ -52,6 +52,18 @@
 	}
 }
 
+void CModel::setPortCassetteType(unsigned int index, SERVO::CassetteType type)
+{
+	m_master.setPortCassetteType(index, type);
+	m_configuration.setPortCassetteType(index, (int)type);
+}
+
+void CModel::setPortEnable(unsigned int index, BOOL bEnable)
+{
+	m_master.setPortEnable(index, bEnable);
+	m_configuration.setPortEnable(index, bEnable);
+}
+
 int CModel::init()
 {
 	CString strIniFile;
@@ -119,10 +131,23 @@
 			m_master.enableEventReport(bEnable);
 		}
 	};
+	listener.onEnableDisableAlarmReport = [&](void* pFrom, bool bEnable, unsigned int id) -> void {
+		LOGI("onEnableDisableAlarmReport bEnable:%s, id:%d", bEnable ? _T("YES") : _T("NO"), id);
+		if (id == 0) {
+			m_master.enableAlarmReport(bEnable);
+		}
+	};
 	m_hsmsPassive.setListener(listener);
 	m_hsmsPassive.setEquipmentModelType((LPTSTR)(LPCTSTR)strModeType);
 	m_hsmsPassive.setSoftRev((LPTSTR)(LPCTSTR)strSoftRev);
+	CString strVarialbleFile;
+	strVarialbleFile.Format(_T("%s\\VariableList.txt"), (LPTSTR)(LPCTSTR)m_strWorkDir);
+	m_hsmsPassive.loadVarialbles((LPTSTR)(LPCTSTR)strVarialbleFile);
 	m_hsmsPassive.init(this, "APP", 7000);
+	strVarialbleFile.Format(_T("%s\\ReportList.txt"), (LPTSTR)(LPCTSTR)m_strWorkDir);
+	m_hsmsPassive.loadReports((LPTSTR)(LPCTSTR)strVarialbleFile);
+	strVarialbleFile.Format(_T("%s\\CollectionEventList.txt"), (LPTSTR)(LPCTSTR)m_strWorkDir);
+	m_hsmsPassive.loadCollectionEvents((LPTSTR)(LPCTSTR)strVarialbleFile);
 
 
 	SERVO::MasterListener masterListener;
@@ -182,9 +207,11 @@
 			notify(RX_CODE_ALARM_CLEAR);
 		}
 
-		m_hsmsPassive.requestAlarmReport(state,
-			pEquipment->getBaseAlarmId() + alarmId,
-			strAlarmText.c_str());
+		if (m_master.isAlarmReportEnable()) {
+			m_hsmsPassive.requestAlarmReport(state,
+				pEquipment->getBaseAlarmId() + alarmId,
+				strAlarmText.c_str());
+		}
 	};
 	masterListener.onEqVcrEventReport = [&](void* pMaster, SERVO::CEquipment* pEquipment, SERVO::CVcrEventReport* pReport) {
 		LOGE("<CModel>onEqVcrEventReport.");
@@ -284,6 +311,10 @@
 		notifyPtrAndInt(RX_CODE_EQ_ROBOT_TASK, pTask, nullptr, code);
 
 	};
+	masterListener.onLoadPortStatusChanged = [&] (void* pMaster, SERVO::CEquipment* pEquipment, short status, __int64 data) {
+		LOGE("<CModel>onLoadPortStatusChanged. status = %d", status);
+		notifyPtr(RX_CODE_LOADPORT_STATUS_CHANGED, pEquipment);
+	};
 	m_master.setListener(masterListener);
 
 
@@ -291,7 +322,7 @@
 	CString strMasterDataFile;
 	strMasterDataFile.Format(_T("%s\\Master.dat"), (LPTSTR)(LPCTSTR)m_strWorkDir);
 	m_master.setCacheFilepath((LPTSTR)(LPCTSTR)strMasterDataFile);
-
+	m_master.setCompareMapsBeforeProceeding(m_configuration.isCompareMapsBeforeProceeding());
 
 	// 加载警告信息
 	AlarmManager& alarmManager = AlarmManager::getInstance();

--
Gitblit v1.9.3