From 7203ac92219156addaa0d4b6e6a9d81b5ffe8a13 Mon Sep 17 00:00:00 2001
From: Darker <mr.darker@163.com>
Date: 星期三, 26 二月 2025 09:56:59 +0800
Subject: [PATCH] 1. 添加报警对话框的按钮 2. 接受报警消息,并获取数据添加到数据库和显示在界面列表
---
SourceCode/Bond/Servo/AlarmDlg.cpp | 71 +++++++++++++++++++++++++++++------
1 files changed, 59 insertions(+), 12 deletions(-)
diff --git a/SourceCode/Bond/Servo/AlarmDlg.cpp b/SourceCode/Bond/Servo/AlarmDlg.cpp
index 4da1912..121451a 100644
--- a/SourceCode/Bond/Servo/AlarmDlg.cpp
+++ b/SourceCode/Bond/Servo/AlarmDlg.cpp
@@ -6,6 +6,7 @@
#include "afxdialogex.h"
#include "AlarmDlg.h"
#include "AlarmManager.h"
+#include "Common.h"
#define PAGE_SIZE 10
#define PAGE_BACKGROUND_COLOR RGB(252, 252, 255)
@@ -48,18 +49,41 @@
// onNext
pAny->addRef();
int code = pAny->getCode();
- //if (RX_CODE_ALARM_ON == code) {
- // CAlarm* pAlarm;
- // if (pAny->getObject("obj", (IRxObject*&)pAlarm)) {
- // AddAlarm(nullptr, pAlarm);
- // }
- //}
- //else if (RX_CODE_ALARM_OFF == code) {
- // CAlarm* pAlarm;
- // if (pAny->getObject("obj", (IRxObject*&)pAlarm)) {
- // UpdateAlarm(nullptr, pAlarm);
- // }
- //}
+
+ if (RX_CODE_STEP_EVENT_READDATA == code) {
+ LOGI("<CAlarmDlg> Accept RX_CODE_STEP_EVENT_READDATA successfully!");
+ // 閫氱煡璁惧鐘舵��
+ SERVO::CEqAlarmStep* pStep = nullptr;
+ if (pAny->getPtrValue("ptr", (void*&)pStep)) {
+ if (pStep != nullptr) {
+ // 鑾峰彇 AlarmManager 鍗曚緥
+ AlarmManager& alarmManager = AlarmManager::getInstance();
+
+ // 浠� pStep 鑾峰彇闇�瑕佺殑鍙傛暟锛屽亣璁捐繖浜涘�兼槸浠� pStep 涓幏鍙栫殑
+ std::string id = std::to_string(pStep->getAlarmId());
+ std::string deviceName = std::to_string(pStep->getUnitId());
+ std::string description = pStep->getText();
+ std::string startTime = "2025-02-25 10:00";
+ std::string endTime = "2025-02-25 12:00";
+
+ // 鎻掑叆鍒楄〃鎺т欢
+ CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST_ALARM);
+ if (pListCtrl != nullptr) {
+ InsertAlarmData(pListCtrl, id.c_str(), deviceName.c_str(), description.c_str(), startTime.c_str(), endTime.c_str());
+ }
+
+ // 璋冪敤 addAlarm 娣诲姞鏂扮殑 Alarm
+ bool result = alarmManager.addAlarm(id, deviceName, description, startTime, endTime);
+ if (result) {
+ LOGI("<CAlarmDlg> Alarm added successfully!");
+ }
+ else {
+ LOGI("<CAlarmDlg> Failed to add alarm.");
+ }
+ }
+ }
+ }
+
pAny->release();
}, [&]() -> void {
@@ -174,6 +198,29 @@
}
}
+void CAlarmDlg::InsertAlarmData(CListCtrl* pListCtrl, const CString& alarmId, const CString& deviceName, const CString& description, const CString& startTime, const CString& endTime)
+{
+ int nRowCount = pListCtrl->GetItemCount();
+ if (nRowCount >= PAGE_SIZE) {
+ pListCtrl->DeleteItem(nRowCount - 1);
+ }
+
+ int nNewItem = pListCtrl->InsertItem(0, _T(""));
+ pListCtrl->SetItemText(nNewItem, 1, alarmId); // 璀﹀憡ID
+ pListCtrl->SetItemText(nNewItem, 2, deviceName); // 璁惧鍚嶇О
+ pListCtrl->SetItemText(nNewItem, 3, description); // 鎻忚堪
+ pListCtrl->SetItemText(nNewItem, 4, startTime); // 鍙戠敓鏃堕棿
+ pListCtrl->SetItemText(nNewItem, 5, endTime); // 瑙i櫎鏃堕棿
+
+ // 閲嶆柊璋冩暣鍒楀
+ pListCtrl->SetColumnWidth(0, LVSCW_AUTOSIZE);
+ pListCtrl->SetColumnWidth(1, LVSCW_AUTOSIZE);
+ pListCtrl->SetColumnWidth(2, LVSCW_AUTOSIZE);
+ pListCtrl->SetColumnWidth(3, LVSCW_AUTOSIZE);
+ pListCtrl->SetColumnWidth(4, LVSCW_AUTOSIZE);
+ pListCtrl->SetColumnWidth(5, LVSCW_AUTOSIZE);
+}
+
void CAlarmDlg::DoDataExchange(CDataExchange* pDX)
{
DDX_Control(pDX, IDC_DATETIMEPICKER_START, m_dateTimeStart);
--
Gitblit v1.9.3