Files
VX5_KRO_GearPump/runtimectrl.h
T

81 lines
1.7 KiB
C++

#ifndef RUNTIMECTRL_H
#define RUNTIMECTRL_H
#include <QDateTime>
#include <QObject>
#include <QTimer>
#include <QSettings>
#include "SysPara.h"
#include <QElapsedTimer>
/**
当前类用于统计软件运行时间、到期提醒间隔
设备保养提醒
*/
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