GrpcPrint/PrintS/PLC/SignalService.h

77 lines
2.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) {
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;
if (m_AlarmCfgWrapper->m_PrintLinnearAccDevAlarm)m_AlarmCfgWrapper->m_PrintLinnearAccDevAlarm->m_IsAlarm = false;
if (m_AlarmCfgWrapper->m_ScannerCtrlComAlarm)m_AlarmCfgWrapper->m_ScannerCtrlComAlarm->m_IsAlarm = false;
}
private:
SignalService();
~SignalService();
SignalService(const SignalService& other) {}
//void CheckProc();
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;
bool m_LastPLCKeepAlive;
int m_CycleTick;
};