From a25fffe157ee044e65318998827398941e7a42a4 Mon Sep 17 00:00:00 2001
From: Darker <mr.darker@163.com>
Date: 星期一, 03 三月 2025 18:13:48 +0800
Subject: [PATCH] 1.修改添加报警记录的方法 2.添加获取最后一次添加的事件id的方法

---
 SourceCode/Bond/Servo/ServoDlg.cpp |   94 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 93 insertions(+), 1 deletions(-)

diff --git a/SourceCode/Bond/Servo/ServoDlg.cpp b/SourceCode/Bond/Servo/ServoDlg.cpp
index 0b50b45..f6b355c 100644
--- a/SourceCode/Bond/Servo/ServoDlg.cpp
+++ b/SourceCode/Bond/Servo/ServoDlg.cpp
@@ -9,6 +9,7 @@
 #include "Common.h"
 #include "Log.h"
 #include "SecsTestDlg.h"
+#include "AlarmDlg.h"
 #include <chrono>
 #include <thread>
 #include <cmath>
@@ -84,6 +85,7 @@
 	m_crBkgnd = APPDLG_BACKGROUND_COLOR;
 	m_hbrBkgnd = nullptr;
 	m_bShowLogWnd = FALSE;
+	m_bShowAlarmWnd = FALSE;
 	m_bIsRobotMoving = FALSE;
 	m_pLogDlg = nullptr;
 	m_pTerminalDisplayDlg = nullptr;
@@ -94,6 +96,7 @@
 {
 	CDialogEx::DoDataExchange(pDX);
 	DDX_Control(pDX, IDC_BUTTON_LOG, m_btnLog);
+	DDX_Control(pDX, IDC_BUTTON_ALARM, m_btnAlarm);
 }
 
 BEGIN_MESSAGE_MAP(CServoDlg, CDialogEx)
@@ -122,6 +125,7 @@
 	ON_WM_INITMENUPOPUP()
 	ON_WM_TIMER()
 	ON_WM_ERASEBKGND()
+	ON_BN_CLICKED(IDC_BUTTON_ALARM, &CServoDlg::OnBnClickedButtonAlarm)
 END_MESSAGE_MAP()
 
 
@@ -142,6 +146,21 @@
 				const char* pszText;
 				if (pAny->getStringValue("text", pszText)) {
 					ShowTerminalText(pszText);
+				}
+			}
+			else if (RX_CODE_EQ_ALIVE == code) {
+				// 通知设备状态
+				SERVO::CEquipment* pEquipment = nullptr;
+				if (pAny->getPtrValue("ptr", (void*&)pEquipment)) {
+					if (pEquipment != nullptr) {
+						int nID = pEquipment->getID();
+						BOOL bAlive = pEquipment->isAlive();
+						if (EQ_ID_EFEM == nID) {
+							DeviceStatus status = bAlive ? DeviceStatus::ONLINE : DeviceStatus::OFFLINE;
+							UpdateDeviceStatus(INDICATE_ROBOT_ARM1, status);
+							UpdateDeviceStatus(INDICATE_ROBOT_ARM2, status);
+						}
+					}
 				}
 			}
 			pAny->release();
@@ -290,8 +309,16 @@
 
 	SetTimer(TIMER_ID_CREATE_TERMINAL, 3000, nullptr);
 	InitRxWindows();
+	OnBnClickedButtonLog();
 	UpdateLogBtn();
+	UpdateAlarmBtn();
 	Resize();
+
+
+	// 相当于延时调用master的初始化
+	theApp.m_model.m_master.init();
+
+
 	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
 }
 
@@ -545,6 +572,17 @@
 	m_btnLog.Invalidate();
 }
 
+void CServoDlg::UpdateAlarmBtn()
+{
+	m_btnAlarm.SetFrameColor(BS_NORMAL, BTN_ALARM_FRAME_NORMAL);
+	m_btnAlarm.SetFrameColor(BS_HOVER, BTN_ALARM_FRAME_HOVER);
+	m_btnAlarm.SetFrameColor(BS_PRESS, BTN_ALARM_FRAME_PRESS);
+	m_btnAlarm.SetBkgndColor(BS_NORMAL, m_bShowAlarmWnd ? BTN_ALARM_BKGND_PRESS : BTN_ALARM_BKGND_NORMAL);
+	m_btnAlarm.SetBkgndColor(BS_HOVER, BTN_ALARM_BKGND_HOVER);
+	m_btnAlarm.SetBkgndColor(BS_PRESS, BTN_ALARM_BKGND_PRESS);
+	m_btnAlarm.Invalidate();
+}
+
 void CServoDlg::UpdateRobotPosition(float percentage)
 {
 	// 限制百分比范围在 [0, 1] 之间
@@ -645,6 +683,38 @@
 	Invalidate();
 }
 
+void CServoDlg::UpdateDeviceStatus(int id, DeviceStatus status)
+{
+	// 根据状态设置颜色
+	COLORREF newBackgroundColor;
+	COLORREF newFrameColor1;
+	COLORREF newFrameColor2;
+
+	switch (status) {
+	case ONLINE:
+		newBackgroundColor = RGB(0, 255, 0);
+		newFrameColor1 = RGB(22, 22, 22);
+		newFrameColor2 = RGB(255, 127, 39);
+		break;
+	case OFFLINE:
+		newBackgroundColor = RGB(255, 0, 0);
+		newFrameColor1 = RGB(22, 22, 22);
+		newFrameColor2 = RGB(255, 127, 39);
+		break;
+	default:
+		newBackgroundColor = RGB(255, 255, 255); // 默认白色背景
+		newFrameColor1 = RGB(0, 0, 0);           // 默认黑色框架1
+		newFrameColor2 = RGB(0, 0, 0);           // 默认黑色框架2
+		break;
+	}
+
+	m_pGraph->UpdateIndicateBox1Colors(id, newBackgroundColor, newFrameColor1, newFrameColor2);
+
+	// 刷新界面
+	Invalidate();
+	UpdateWindow();
+}
+
 void CServoDlg::OnSize(UINT nType, int cx, int cy)
 {
 	CDialogEx::OnSize(nType, cx, cy);
@@ -657,6 +727,7 @@
 	CRect rcClient, rcItem;
 	CWnd* pItem = nullptr;
 	int x, y;
+	GetClientRect(&rcClient);
 
 	x = 0;
 	y = 0;
@@ -669,7 +740,12 @@
 	x = 8;
 	pItem = GetDlgItem(IDC_BUTTON_LOG);
 	pItem->GetClientRect(&rcItem);
-	pItem->MoveWindow(x, y, rcItem.Width(), rcItem.Height());
+	pItem->MoveWindow(x, rcClient.bottom - 8 - rcItem.Height(), rcItem.Width(), rcItem.Height());
+
+	x = 20 + rcItem.Width();
+	pItem = GetDlgItem(IDC_BUTTON_ALARM);
+	pItem->GetClientRect(&rcItem);
+	pItem->MoveWindow(x, rcClient.bottom - 8 - rcItem.Height(), rcItem.Width(), rcItem.Height());
 }
 
 void CServoDlg::OnClose()
@@ -684,6 +760,14 @@
 	m_bShowLogWnd = FALSE;
 	UpdateLogBtn();
 	LOGE("OnLogDlgHide");
+
+	unsigned int DATAID, RPTID;
+	DATAID = 111;
+	RPTID = 1001;
+	std::vector<std::string> v;
+	v.push_back("abc");
+	v.push_back("def");
+	theApp.m_model.m_hsmsPassive.requestEventReportSend(DATAID, RPTID, v);
 
 	return 0;
 }
@@ -736,3 +820,11 @@
 	
 	return CDialogEx::OnEraseBkgnd(pDC);
 }
+
+
+void CServoDlg::OnBnClickedButtonAlarm()
+{
+	// TODO: 在此添加控件通知处理程序代码
+	CAlarmDlg dlg;
+	dlg.DoModal();
+}

--
Gitblit v1.9.3