GrpcPrint/PrintS/PLC/SignalService.h

98 lines
3.3 KiB
C
Raw Normal View History

2024-03-19 17:45:12 +08:00
#pragma once
#include "../config/bean/AlarmCfg.h"
#include "CoreCommunication.h"
#include <thread>
#include "../config/bean/RunCfg.h"
#include "../config/bean/ExtCfg.h"
#include "../config/bean/PowderEstimateCfg.h"
class SignalService
{
public:
void RunService();
static SignalService& GetInstance();
void SetCoreCommuniction(CoreCommunication* coreCommunication);
AlarmCfg* JudgeStopAlarm();
AlarmCfg* JudgePauseAlarm();
void JudgeStopAlarm(vector<AlarmCfg*>& vecs);
void JudgePauseAlarm(vector<AlarmCfg*>& vecs);
void JudgeAutoPauseAlarm(vector<AlarmCfg*>& vecs);
string JudgeWarns(vector<AlarmCfg*>& vecs);
bool CheckAlarmAfterDeoxygen();
bool CheckAlarmBeforeDeoxygen();
2024-03-25 13:22:32 +08:00
void GetSignalState(SignalState& ss);
2024-04-16 13:32:05 +08:00
void SetSignalStateCtrl(SignalStateWrapper* signalStateCtrl);
2024-03-19 17:45:12 +08:00
string GetWarnAlarmInfo();
2024-04-16 13:32:05 +08:00
void StartCylinderDeoxygen() {
m_SignalStateCtrl->m_MoldDeoxygenTriger->SetValue(true);
}
2024-03-19 17:45:12 +08:00
void SetPurifierIsConnect(bool isAlarm);
void SetAlarm(AlarmCfg* cfg, bool isAlarm) {
2024-03-19 17:45:12 +08:00
if (!cfg)return;
std::unique_lock<std::shared_mutex> lock(m_Mtx);
cfg->m_IsAlarm = isAlarm;
}
void SetPrintAirRenewalTrigger(bool en)
{
2024-04-16 13:32:05 +08:00
m_SignalStateCtrl->m_PrintAirRenewalTrigger->SetValue(en);
2024-03-19 17:45:12 +08:00
}
void ResetRelateCoverAlarm() {
std::unique_lock<std::shared_mutex> lock(m_Mtx);
if (m_AlarmCfgWrapper->m_LayerLinearPosAlarm)m_AlarmCfgWrapper->m_LayerLinearPosAlarm->m_IsAlarm = false;
if (m_AlarmCfgWrapper->m_RecoatCheckAlarm)m_AlarmCfgWrapper->m_RecoatCheckAlarm->m_IsAlarm = false;
if (m_AlarmCfgWrapper->m_MoldServoPosWarn)m_AlarmCfgWrapper->m_MoldServoPosWarn->m_IsAlarm = false;
2024-03-19 17:45:12 +08:00
if (m_AlarmCfgWrapper->m_PrintLinnearAccDevAlarm)m_AlarmCfgWrapper->m_PrintLinnearAccDevAlarm->m_IsAlarm = false;
if (m_AlarmCfgWrapper->m_Scanner1CtrlComAlarm)m_AlarmCfgWrapper->m_Scanner1CtrlComAlarm->m_IsAlarm = false;
if (m_AlarmCfgWrapper->m_Scanner2CtrlComAlarm)m_AlarmCfgWrapper->m_Scanner2CtrlComAlarm->m_IsAlarm = false;
if (m_AlarmCfgWrapper->m_Scanner3CtrlComAlarm)m_AlarmCfgWrapper->m_Scanner3CtrlComAlarm->m_IsAlarm = false;
if (m_AlarmCfgWrapper->m_Scanner4CtrlComAlarm)m_AlarmCfgWrapper->m_Scanner4CtrlComAlarm->m_IsAlarm = false;
if (m_AlarmCfgWrapper->m_Scanner5CtrlComAlarm)m_AlarmCfgWrapper->m_Scanner5CtrlComAlarm->m_IsAlarm = false;
if (m_AlarmCfgWrapper->m_Scanner6CtrlComAlarm)m_AlarmCfgWrapper->m_Scanner6CtrlComAlarm->m_IsAlarm = false;
if (m_AlarmCfgWrapper->m_Scanner7CtrlComAlarm)m_AlarmCfgWrapper->m_Scanner7CtrlComAlarm->m_IsAlarm = false;
if (m_AlarmCfgWrapper->m_Scanner8CtrlComAlarm)m_AlarmCfgWrapper->m_Scanner8CtrlComAlarm->m_IsAlarm = false;
}
void ResetWaterAlarmCheck()
{
std::unique_lock<std::shared_mutex> lock(m_Mtx);
time(&m_WaterAlarmCheckTime);
}
time_t GetWaterAlarmCheckTime()
{
time_t tt = 0;
std::shared_lock<std::shared_mutex> lock(m_Mtx);
tt = m_WaterAlarmCheckTime;
return tt;
2024-03-19 17:45:12 +08:00
}
private:
SignalService();
~SignalService();
SignalService(const SignalService& other) {}
void CheckProc();
2024-03-19 17:45:12 +08:00
private:
AlarmCfgWrapper* m_AlarmCfgWrapper;
IOCfgWrapper* m_IOCfgWrapper;
CoreCommunication* m_CoreCommunication;
2024-04-16 13:32:05 +08:00
SignalStateWrapper* m_SignalStateCtrl;
2024-03-19 17:45:12 +08:00
std::shared_mutex m_Mtx;
std::thread m_CheckThread;
bool m_RunFlag;
2024-03-25 13:22:32 +08:00
SignalState m_SignalState;
2024-03-19 17:45:12 +08:00
RunCfg* m_RunCfg;
ExtCfg* m_ExtCfg;
PowderEstimateCfg* m_PowderEstimateCfg;
2024-03-19 17:45:12 +08:00
bool m_LastPLCKeepAlive;
time_t m_WaterAlarmCheckTime;
};