#pragma once #include "../config/bean/AlarmCfg.h" #include "CoreCommunication.h" #include #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& vecs); void JudgePauseAlarm(vector& vecs); void JudgeAutoPauseAlarm(vector& vecs); string JudgeWarns(vector& vecs); bool CheckAlarmAfterDeoxygen(); bool CheckAlarmBeforeDeoxygen(); //void GetSignalState(SignalState& ss); //void SetSignalStateCtrl(SignalStateWrapper* signalStateCtrl); string GetWarnAlarmInfo(); //void StartCylinderDeoxygen() { // m_SignalStateCtrl->m_MoldDeoxygenTriger->SetValue(true); //} void SetPurifierIsConnect(bool isAlarm); void SetAlarm(AlarmCfg* cfg,bool isAlarm) { if (!cfg)return; std::unique_lock lock(m_Mtx); cfg->m_IsAlarm = isAlarm; } void SetPrintAirRenewalTrigger(bool en) { //m_SignalStateCtrl->m_PrintAirRenewalTrigger->SetValue(en); } void ResetRelateCoverAlarm() { std::unique_lock 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; //SignalStateWrapper* m_SignalStateCtrl; std::shared_mutex m_Mtx; std::thread m_CheckThread; bool m_RunFlag; //SignalState m_SignalState; RunCfg* m_RunCfg; ExtCfg* m_ExtCfg; PowderEstimateCfg* m_PowderEstimateCfg; bool m_LastPLCKeepAlive; int m_CycleTick; };