From fd1333fbf52e00ff8f0b0d51ec0d707a66cc9141 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期一, 16 六月 2025 11:20:16 +0800
Subject: [PATCH] 1.Robot状态和位置的监控,其中两个arm状态(是否有料),也作为调度的依据。

---
 SourceCode/Bond/Servo/CPageGraph1.cpp |   47 +++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 43 insertions(+), 4 deletions(-)

diff --git a/SourceCode/Bond/Servo/CPageGraph1.cpp b/SourceCode/Bond/Servo/CPageGraph1.cpp
index d288ba5..b9c2555 100644
--- a/SourceCode/Bond/Servo/CPageGraph1.cpp
+++ b/SourceCode/Bond/Servo/CPageGraph1.cpp
@@ -83,8 +83,22 @@
 						BOOL bAlive = pEquipment->isAlive();
 						if (EQ_ID_EFEM == nID) {
 							DeviceStatus status = bAlive ? DeviceStatus::ONLINE : DeviceStatus::OFFLINE;
+							UpdateDeviceStatus(INDICATE_FLIPER, status);
+							UpdateDeviceStatus(INDICATE_ALIGNER, status);
+							UpdateDeviceStatus(INDICATE_LPORT1, status);
+							UpdateDeviceStatus(INDICATE_LPORT2, status);
+							UpdateDeviceStatus(INDICATE_LPORT3, status);
+							UpdateDeviceStatus(INDICATE_LPORT4, status);
 							UpdateDeviceStatus(INDICATE_ROBOT_ARM1, status);
 							UpdateDeviceStatus(INDICATE_ROBOT_ARM2, status);
+						}
+						else if(EQ_ID_Bonder1 == nID) {
+							DeviceStatus status = bAlive ? DeviceStatus::ONLINE : DeviceStatus::OFFLINE;
+							UpdateDeviceStatus(INDICATE_BONDER1, status);
+						}
+						else if (EQ_ID_Bonder2 == nID) {
+							DeviceStatus status = bAlive ? DeviceStatus::ONLINE : DeviceStatus::OFFLINE;
+							UpdateDeviceStatus(INDICATE_BONDER2, status);
 						}
 					}
 				}
@@ -106,6 +120,7 @@
 BOOL CPageGraph1::OnInitDialog()
 {
 	CDialogEx::OnInitDialog();
+	InitRxWindows();
 	SetTimer(1, 3000, nullptr);
 
 
@@ -171,8 +186,6 @@
 	m_pGraph->AddIndicateBox(INDICATE_ROBOT_ARM2, 243, 294, 48, RGB(22, 22, 22),
 		RGB(255, 127, 39), EQ_BOX_OFFLINE);
 	m_pGraph->SetBoxText(INDICATE_ROBOT_ARM2, "6", "Robot");
-
-
 
 
 	// Vacuum bake
@@ -262,6 +275,11 @@
 
 	if (m_hbrBkgnd != nullptr) {
 		::DeleteObject(m_hbrBkgnd);
+	}
+
+	if (m_pObserver != nullptr) {
+		m_pObserver->unsubscribe();
+		m_pObserver = NULL;
 	}
 }
 
@@ -411,7 +429,6 @@
 	CString s; s.Format(_T("OnGraphItemClicked %d"), pGraphNmhdr->dwData);
 	SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)m_pGraph->GetIndicateBoxData(pGraphNmhdr->dwData);
 	if (pEquipment != nullptr) {
-		//AfxMessageBox(pEquipment->getName().c_str());
 		theApp.m_model.notifyPtr(RX_CODE_SELECT_EQUIPMENT, pEquipment);
 	}
 
@@ -422,7 +439,29 @@
 {
 	if (1 == nIDEvent) {
 		KillTimer(1);
-		InitRxWindows();
+
+		// 鏇存柊鐘舵��
+		{
+			SERVO::CEquipment* pEquipment = (SERVO::CEFEM*)theApp.m_model.m_master.getEquipment(EQ_ID_EFEM);
+			ASSERT(pEquipment);
+			DeviceStatus status = pEquipment->isAlive() ? DeviceStatus::ONLINE : DeviceStatus::OFFLINE;
+			UpdateDeviceStatus(INDICATE_ROBOT_ARM1, status);
+			UpdateDeviceStatus(INDICATE_ROBOT_ARM2, status);
+		}
+
+		{
+			SERVO::CEquipment* pEquipment = theApp.m_model.m_master.getEquipment(EQ_ID_Bonder1);
+			ASSERT(pEquipment);
+			DeviceStatus status = pEquipment->isAlive() ? DeviceStatus::ONLINE : DeviceStatus::OFFLINE;
+			UpdateDeviceStatus(INDICATE_BONDER1, status);
+		}
+
+		{
+			SERVO::CEquipment* pEquipment = theApp.m_model.m_master.getEquipment(EQ_ID_Bonder2);
+			ASSERT(pEquipment);
+			DeviceStatus status = pEquipment->isAlive() ? DeviceStatus::ONLINE : DeviceStatus::OFFLINE;
+			UpdateDeviceStatus(INDICATE_BONDER2, status);
+		}
 	}
 
 	CDialogEx::OnTimer(nIDEvent);

--
Gitblit v1.9.3