#ifndef RUNTIMECTRL_H #define RUNTIMECTRL_H #include #include #include #include #include "SysPara.h" #include /** 当前类用于统计软件运行时间、到期提醒间隔 设备保养提醒 */ class RunTimeCtrl : public QObject { Q_OBJECT public: static RunTimeCtrl* instance(); ~RunTimeCtrl(); // 启动计时 void start(); // 停止计时 void stop(); // 设置提示间隔(单位:分钟,默认5分钟) void setAlertInterval(qint64 minutes); // 获取已运行时间(毫秒) qint64 totalRuntimeMs(); // 初始化加载参数 void loadConfig(RFIDPara_t* para); // 更新参数 void updatePara(RFIDPara_t* para); // 授权时 void authorizationAccepted(RFIDPara_t* para); signals: void sig_alertTimeout(); void sig_updateTimeoutDay(int days); void sig_saveRunTime(); private slots: void slt_checkRunTime(); private: RunTimeCtrl(); qint64 updateRuntime(); QTimer *m_checkTimer = nullptr; // 检查计时器 QTimer *m_alertTimer = nullptr; // 提示计时器 QTimer *m_runTimer = nullptr; // 运行计时器,记录运行时间和更新总时间 QElapsedTimer m_elapsedTimer; // 记录本次运行时间 int m_alertIntervalMinutes = 60; // 提示间隔(分钟) quint64 m_totalRuntimeMs = 0; // 自上次保养以来的总运行时间 (ms) RFIDPara_t m_para; int timeoutDay = 0; // 当前日期到维护结束日期的天数 void init(); bool checkRunTime(); bool checkTimeoutDay(); }; #endif // RUNTIMECTRL_H