LAPTOP-T815PCOQ\25526
2024-12-10 47718a637fa239dcbec0fffca736f3c3b1cf7887
Merge branch 'clh' into liuyang
已修改4个文件
42 ■■■■ 文件已修改
SourceCode/Bond/BondEq/Alarm.cpp 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/BondEq/AlarmMonitor.cpp 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/BondEq/AlarmMonitor.h 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/BondEq/Model.cpp 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/BondEq/Alarm.cpp
@@ -107,22 +107,24 @@
    if (ar.IsStoring())
    {
        Lock();
        ar << m_nUnitId;
        ar << m_nId;
        ar << m_nLevel;
        ar << m_timeOn;
        ar << m_timeOff;
        ar << m_nStatus;
        ar << m_nId;
        ar << m_nLevel;
        WriteString(ar, m_strText);
        Unlock();
    }
    else
    {
        Lock();
        ar >> m_nUnitId;
        ar >> m_nId;
        ar >> m_nLevel;
        ar >> m_timeOn;
        ar >> m_timeOff;
        ar >> m_nStatus;
        ar >> m_nId;
        ar >> m_nLevel;
        ReadString(ar, m_strText);
        Unlock();
    }
SourceCode/Bond/BondEq/AlarmMonitor.cpp
@@ -30,6 +30,11 @@
        item.second->release();
    }
    m_mapAlarming.clear();
    for (auto item : m_alarms) {
        item->release();
    }
    m_alarms.clear();
}
std::string& CAlarmMonitor::getClassName()
@@ -91,6 +96,7 @@
        if (!findAlarm(alarmIds, iter->first)) {
            // 消除警告, 同时将信息发出,以使界面显示和历史记录保存
            iter->second->alarmOff();
            addAlarmToHistoryRecord(iter->second);
            LOGE("消除了警告:%s", iter->second->toString().c_str());
            SendBroadcast(&CIntent(BC_CODE_ALARM_OFF, "", iter->second));
@@ -159,7 +165,6 @@
void CAlarmMonitor::Serialize(CArchive& ar)
{
    /*
    if (ar.IsStoring())
    {
        Lock();
@@ -177,15 +182,12 @@
        ar >> count;
        for (int i = 0; i < count; i++) {
            CAlarm* pAlarm = new CAlarm();
            pAlarm->addRef();
            pAlarm->Serialize(ar);
            AddAlarm(pAlarm);
            pAlarm->release();
            addAlarmToHistoryRecord(pAlarm);
            LOGE("历史警告:%s", pAlarm->toString().c_str());
        }
        Unlock();
    }
    */
}
void CAlarmMonitor::getAlarmingMap(std::map<int, CAlarm*>& alarms)
@@ -240,4 +242,15 @@
    }
    return FALSE;
}
void CAlarmMonitor::addAlarmToHistoryRecord(CAlarm* pAlarm)
{
    pAlarm->addRef();
    m_alarms.push_back(pAlarm);
    if (m_alarms.size() > 1000) {
        CAlarm* pTemp = m_alarms.front();
        pTemp->release();
        m_alarms.pop_front();
    }
}
SourceCode/Bond/BondEq/AlarmMonitor.h
@@ -29,10 +29,12 @@
    int addAlarmTemplate(int id, int level, const char* pszDescription);
    BOOL isAlarmOn(int id);
    BOOL findAlarm(std::vector<int>& ids, int id);
    void addAlarmToHistoryRecord(CAlarm* pAlarm);
private:
    std::map<int, CAlarm*> m_mapAlarmTemplate;    // 这是警告的模板,从文件加载
    std::map<int, CAlarm*> m_mapAlarming;        // 正在发生的警告
    std::list< CAlarm*> m_alarms;                // 历史发生的警告信息,考虑保存一定数量
    char* m_pRawData;
};
SourceCode/Bond/BondEq/Model.cpp
@@ -178,6 +178,11 @@
    m_bonder.init();
    CString strBonderDataFile;
    strBonderDataFile.Format(_T("%s\\Bonder.dat"), (LPTSTR)(LPCTSTR)m_strWorkDir);
    m_bonder.read((LPTSTR)(LPCTSTR)strBonderDataFile);
    return 0;
}