From ebf96874b6a994e3b09b69f272416cb482cf25bb Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期五, 30 五月 2025 18:49:43 +0800
Subject: [PATCH] 1.Fliper(G2) -> Aligner    VacuumBake(G1) -> Aligner搬送逻辑和模拟测试; 2.在状态栏增加当前搬送状态显示(按钮,下一步用于实现点击按钮展开搬送任务详情,中断操作等)

---
 SourceCode/Bond/Servo/Model.cpp |   32 +++++++++++++++++++++++++++-----
 1 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/SourceCode/Bond/Servo/Model.cpp b/SourceCode/Bond/Servo/Model.cpp
index 5dab65a..8e32798 100644
--- a/SourceCode/Bond/Servo/Model.cpp
+++ b/SourceCode/Bond/Servo/Model.cpp
@@ -5,6 +5,7 @@
 #include "ToolUnits.h"
 #include "CEqAlarmStep.h"
 #include "AlarmManager.h"
+#include "CGlassPool.h"
 
 
 CModel::CModel()
@@ -19,7 +20,18 @@
 
 IObservable* CModel::getObservable()
 {
+	if (m_pObservable == nullptr) {
+		m_pObservable = RX_AllocaObservable([&](IObservableEmitter* e) -> void {
+			m_pObservableEmitter = e;			// 保存发射器
+		});
+	}
+
 	return m_pObservable;
+}
+
+SERVO::CMaster& CModel::getMaster()
+{
+	return m_master;
 }
 
 void CModel::setWorkDir(const char* pszWorkDir)
@@ -40,6 +52,9 @@
 	CString strSoftRev = _T("1.0.2");
 
 
+	// CGlassPool
+	m_glassPool.initPool();
+
 
 	// Log
 	CString strLogDir;
@@ -53,11 +68,6 @@
 	CLog::GetLog()->SetLogsDir(strLogDir);
 	CLog::GetLog()->SetEquipmentId((LPTSTR)(LPCTSTR)strUnitId);
 	LOGI("\r\n\r\n~~~ Prog Start! ~~~");
-
-
-	m_pObservable = RX_AllocaObservable([&](IObservableEmitter* e) -> void {
-		m_pObservableEmitter = e;			// 保存发射器
-	});
 
 
 	SECSListener listener;
@@ -93,6 +103,10 @@
 
 
 	SERVO::MasterListener masterListener;
+	masterListener.onMasterStateChanged = [&](void* pMaster, SERVO::MASTERSTATE state) -> void {
+		LOGI("<CModel>Master state changed(%d)", (int)state);
+		notify(RX_CODE_MASTER_STATE_CHANGED);
+	};
 	masterListener.onEqAlive = [&](void* pMaster, SERVO::CEquipment* pEquipment, BOOL bAlive) -> void {
 		LOGI("<CModel>Equipment onAlive:%s(%s).\n", pEquipment->getName().c_str(),
 			bAlive ? _T("ON") : _T("OFF"));
@@ -152,6 +166,13 @@
 	masterListener.onEqVcrEventReport = [&](void* pMaster, SERVO::CEquipment* pEquipment, SERVO::CVcrEventReport* pReport) {
 		LOGE("<CModel>onEqVcrEventReport.");
 	};
+	masterListener.onEqDataChanged = [&](void* pMaster, SERVO::CEquipment* pEquipment, int code) {
+		LOGE("<CModel>onEqDataChanged.");
+		notifyPtr(RX_CODE_EQ_DATA_CHANGED, pEquipment);
+	};
+	masterListener.onRobotTaskEvent = [&](void* pMaster, SERVO::CRobotTask* pTask, int code) {
+		notifyPtr(RX_CODE_EQ_ROBOT_TASK, pTask);
+	};
 	m_master.setListener(masterListener);
 
 
@@ -177,6 +198,7 @@
 	m_hsmsPassive.term();
 	CLog::GetLog()->SetOnLogCallback(nullptr);
 	m_master.term();
+	m_glassPool.term();
 
 	return 0;
 }

--
Gitblit v1.9.3