eis/inc/base/MachineStatus.h

66 lines
2.1 KiB
C
Raw Normal View History

/*******************************************************************
* @class MachineStatus
* @brief
*
*
*
*
*
* Version history
* 1.0 2023-08-18 zoufuzhou create
*
*******************************************************************/
#ifndef MACHINE_STATUS_H
#define MACHINE_STATUS_H
#include <chrono>
#include <iostream>
class MachineStatus {
private:
double speedThreshold; // 速度阈值
int confirmSeconds; // 确认延时秒数
std::chrono::system_clock::time_point lastLessTime; // 上次小于阈值的时间
std::chrono::system_clock::time_point lastZeroTime; // 上次速度为0的时间
bool isZero;
bool isRunning; // 当前运行状态
std::chrono::system_clock::time_point lastStopStartTime; // 最后一次停机的开始时间
std::chrono::system_clock::time_point lastStopEndTime; // 最后一次停机的结束时间
public:
/**
* @brief
*
* @param threshold
* @param seconds
*/
MachineStatus(double threshold = 0, int seconds = 0);
//init
void init(double threshold, int seconds);
//update machine status
void updateStatus(double currentSpeed);
//update machine status Quickly
void stopQuickly(void);
// 获取当前运行状态
bool getStatus() const;
// 获取最近一次停机时长(秒)
double getLastStopDuration() const;
// 获取最后一次停机的开始时间
std::chrono::system_clock::time_point getLastStopStartTime() const;
// 获取最后一次停机的结束时间
std::chrono::system_clock::time_point getLastStopEndTime() const;
};
#endif // MACHINE_STATUS_H