From 50a42e5d72e2f8cf92ff9b2273e0442977dbcefd Mon Sep 17 00:00:00 2001
From: LAPTOP-T815PCOQ\25526 <mr.liuyang@126.com>
Date: 星期三, 18 十二月 2024 18:28:02 +0800
Subject: [PATCH] 1. 对话框基类添加动态控件管理 2. 对话框基类主题切换功能
---
SourceCode/Bond/BondEq/AlarmMonitor.cpp | 69 +++++++++++++++++++++++++---------
1 files changed, 50 insertions(+), 19 deletions(-)
diff --git a/SourceCode/Bond/BondEq/AlarmMonitor.cpp b/SourceCode/Bond/BondEq/AlarmMonitor.cpp
index d53b6f7..37528f3 100644
--- a/SourceCode/Bond/BondEq/AlarmMonitor.cpp
+++ b/SourceCode/Bond/BondEq/AlarmMonitor.cpp
@@ -9,8 +9,8 @@
CAlarmMonitor::CAlarmMonitor()
{
- m_pRawData = new char[200];
- memset(m_pRawData, 0, 200);
+ m_pRawData = new char[512];
+ memset(m_pRawData, 0, 512);
}
@@ -49,7 +49,7 @@
if (MONITOR_ID_ALARM != id) {
return;
}
-
+
// 比较有没有变化
if (compareData(m_pRawData, (const char*)pData, size)) {
return;
@@ -90,12 +90,14 @@
for (auto iter = m_mapAlarming.begin(); iter != m_mapAlarming.end();/* iter++*/) {
if (!findAlarm(alarmIds, iter->first)) {
// 消除警告, 同时将信息发出,以使界面显示和历史记录保存
- iter->second->alarmOff();
- LOGE("消除了警告:%s", iter->second->toString().c_str());
- SendBroadcast(&CIntent(BC_CODE_ALARM_OFF, "", iter->second));
-
- iter->second->release();
+ CAlarm* pAlarm = iter->second;
+ pAlarm->alarmOff();
+ addAlarmToHistoryRecord(pAlarm);
m_mapAlarming.erase(iter++);
+
+ LOGE("消除了警告:%s", pAlarm->toString().c_str());
+ SendBroadcast(&CIntent(BC_CODE_ALARM_OFF, "", pAlarm));
+ pAlarm->release();
}
else {
iter++;
@@ -159,14 +161,13 @@
void CAlarmMonitor::Serialize(CArchive& ar)
{
- /*
if (ar.IsStoring())
{
Lock();
- int count = (int)m_alarms.size();
+ int count = (int)m_mapAlarming.size();
ar << count;
- for (auto item : m_alarms) {
- item->Serialize(ar);
+ for (auto item : m_mapAlarming) {
+ item.second->Serialize(ar);
}
Unlock();
}
@@ -179,20 +180,16 @@
CAlarm* pAlarm = new CAlarm();
pAlarm->addRef();
pAlarm->Serialize(ar);
- AddAlarm(pAlarm);
+ addAlarming(pAlarm);
pAlarm->release();
-
}
Unlock();
}
- */
}
-void CAlarmMonitor::getAlarmingMap(std::map<int, CAlarm*>& alarms)
+std::map<int, CAlarm*>& CAlarmMonitor::getAlarmingMap()
{
- Lock();
- alarms = m_mapAlarming;
- Unlock();
+ return m_mapAlarming;
}
BOOL CAlarmMonitor::isAlarming()
@@ -201,6 +198,19 @@
BOOL bAlarming = !m_mapAlarming.empty();
Unlock();
return bAlarming;
+}
+
+CAlarm* CAlarmMonitor::getActiveAlarm()
+{
+ Lock();
+ if (m_mapAlarming.empty()) {
+ Unlock();
+ return nullptr;
+ }
+ auto iter = m_mapAlarming.begin();
+ Unlock();
+
+ return iter->second;
}
BOOL CAlarmMonitor::compareData(const char* pScrData, const char* pTarData, int len)
@@ -240,4 +250,25 @@
}
return FALSE;
+}
+
+void CAlarmMonitor::addAlarmToHistoryRecord(CAlarm* pAlarm)
+{
+ // 加入数据库
+ AlarmManager::getInstance().addAlarm(
+ std::to_string(pAlarm->getId()).c_str(),
+ getAlarmText(pAlarm->getId()),
+ CToolUnits::timeToString2(pAlarm->getOnTime()).c_str(),
+ CToolUnits::timeToString2(pAlarm->getOffTime()).c_str());
+}
+
+BOOL CAlarmMonitor::addAlarming(CAlarm* pAlarm)
+{
+ auto iter = m_mapAlarming.find(pAlarm->getId());
+ if (iter != m_mapAlarming.end()) return FALSE;
+
+ pAlarm->addRef();
+ m_mapAlarming[pAlarm->getId()] = pAlarm;
+
+ return TRUE;
}
\ No newline at end of file
--
Gitblit v1.9.3