From 62a4a8db6c05c98f180ae7f6429a9a232fce6c0c Mon Sep 17 00:00:00 2001 From: mrDarker <mr.darker@163.com> Date: 星期四, 03 七月 2025 17:19:16 +0800 Subject: [PATCH] 1. 重构机器人动画逻辑,采用分帧动画机制,避免在 OnTimer 中阻塞主线程; 2. 动画过程中允许动态中断,确保设备状态变化时可即时响应; 3. 动画结束时自动校正位置与角度,确保最终状态准确一致; --- SourceCode/Bond/BondEq/AlarmMonitor.h | 24 +++++++++++++----------- 1 files changed, 13 insertions(+), 11 deletions(-) diff --git a/SourceCode/Bond/BondEq/AlarmMonitor.h b/SourceCode/Bond/BondEq/AlarmMonitor.h index ae84f65..c7cf2f1 100644 --- a/SourceCode/Bond/BondEq/AlarmMonitor.h +++ b/SourceCode/Bond/BondEq/AlarmMonitor.h @@ -17,24 +17,26 @@ virtual void onRecvBroadcast(void* pSender, CIntent* pIntent); virtual void init(); virtual void term(); - void setBeginAddr(int nAddr); int readAlarmListFromFile(const char* pszFilepath); virtual void OnTimer(UINT nTimerid); const char* getAlarmText(int nID); - void Alarm(int id, int level); virtual void Serialize(CArchive& ar); - void getAlarmList(std::list<CAlarm*>& list); + std::map<int, CAlarm*>& getAlarmingMap(); + BOOL isAlarming(); + CAlarm* getActiveAlarm(); + void getAlarmRecords(std::list< CAlarm*>& list); private: - void AddAlarm(CAlarm* pAlarm); + BOOL compareData(const char* pScrData, const char* pTarData, int len); + 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); + BOOL addAlarming(CAlarm* pAlarm); private: - int m_nBeginAddr; - -private: - std::map<int, std::string> m_mapAlarmText; - int m_nLastId; - int m_nLastLevel; - std::list<CAlarm*> m_alarms; + std::map<int, CAlarm*> m_mapAlarmTemplate; // 这是警告的模板,从文件加载 + std::map<int, CAlarm*> m_mapAlarming; // 正在发生的警告 + char* m_pRawData; }; -- Gitblit v1.9.3