From 4897210a25e7c98ddacb1fa4ecee3e8bdd1ae98e Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期四, 12 六月 2025 14:18:16 +0800
Subject: [PATCH] 1.手臂选择匹配问题,
---
SourceCode/Bond/Servo/CPageGraph1.cpp | 86 +++++++++++++++++++++++++++++++++++++------
1 files changed, 74 insertions(+), 12 deletions(-)
diff --git a/SourceCode/Bond/Servo/CPageGraph1.cpp b/SourceCode/Bond/Servo/CPageGraph1.cpp
index be12698..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);
@@ -173,8 +188,6 @@
m_pGraph->SetBoxText(INDICATE_ROBOT_ARM2, "6", "Robot");
-
-
// Vacuum bake
m_pGraph->AddIndicateBox(INDICATE_VACUUM_BAKE, 396, 516, 48, RGB(22, 22, 22),
RGB(255, 127, 39), EQ_BOX_OFFLINE);
@@ -191,13 +204,6 @@
m_pGraph->AddIndicateBox(INDICATE_MEASUREMENT, 737, 516, 48, RGB(22, 22, 22),
RGB(255, 127, 39), EQ_BOX_OFFLINE);
m_pGraph->SetBoxText(INDICATE_MEASUREMENT, "13", "Measurement");
-
-
- // 缁戝畾鏁版嵁
- {
- SERVO::CEquipment* pEquipment = theApp.m_model.m_master.getEquipment(EQ_ID_EFEM);
- m_pGraph->SetIndicateBoxData(INDICATE_ROBOT_ARM1, pEquipment);
- }
return TRUE; // return TRUE unless you set the focus to a control
@@ -269,6 +275,11 @@
if (m_hbrBkgnd != nullptr) {
::DeleteObject(m_hbrBkgnd);
+ }
+
+ if (m_pObserver != nullptr) {
+ m_pObserver->unsubscribe();
+ m_pObserver = NULL;
}
}
@@ -382,15 +393,44 @@
Invalidate();
}
+void CPageGraph1::BindEquipmentToGraph()
+{
+ struct EquipmentBindInfo
+ {
+ int nEquipmentID;
+ int nIndicateID;
+ };
+
+ static const EquipmentBindInfo EQUIPMENT_BIND_LIST[] = {
+ { EQ_ID_EFEM, INDICATE_ROBOT_ARM1 },
+ { EQ_ID_EFEM, INDICATE_ROBOT_ARM2 },
+ { EQ_ID_Bonder1, INDICATE_BONDER1 },
+ { EQ_ID_Bonder2, INDICATE_BONDER2 },
+ { EQ_ID_LOADPORT1, INDICATE_LPORT1 },
+ { EQ_ID_LOADPORT2, INDICATE_LPORT2 },
+ { EQ_ID_LOADPORT3, INDICATE_LPORT3 },
+ { EQ_ID_LOADPORT4, INDICATE_LPORT4 },
+ { EQ_ID_FLIPER, INDICATE_FLIPER },
+ { EQ_ID_VACUUMBAKE, INDICATE_VACUUM_BAKE },
+ { EQ_ID_ALIGNER, INDICATE_ALIGNER },
+ { EQ_ID_BAKE_COOLING, INDICATE_BAKE_COOLING }
+ };
+
+ for (const auto& stBindInfo : EQUIPMENT_BIND_LIST)
+ {
+ SERVO::CEquipment* pEquipment = theApp.m_model.m_master.getEquipment(stBindInfo.nEquipmentID);
+ m_pGraph->SetIndicateBoxData(stBindInfo.nIndicateID, pEquipment);
+ }
+}
+
void CPageGraph1::OnGraphItemClicked(NMHDR* pNMHDR, LRESULT* pResult)
{
BYSERVOGRAPH_NMHDR* pGraphNmhdr = reinterpret_cast<BYSERVOGRAPH_NMHDR*>(pNMHDR);
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);
}
-
*pResult = 0;
}
@@ -399,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