GrpcPrint/PrintS/Purifier/BasePurifier.cpp

84 lines
1.6 KiB
C++
Raw Normal View History

2024-03-26 10:33:00 +08:00
#include "BasePurifier.h"
#include "../config/ConfigManager.h"
#include "../SystemInfo.h"
#include <atlbase.h>
#include "../ScannerCtrl/BaseCtrl.h"
BasePurifier::BasePurifier()
:m_Thread(INVALID_HANDLE_VALUE)
, m_RunFlag(false)
, m_PurifierWinShow(false)
{
m_ExtCfg = ConfigManager::GetInstance()->GetExtCfg();
m_IOCfgWrapper = ConfigManager::GetInstance()->GetIoCfgWrapper();
m_AlarmCfgWrapper = ConfigManager::GetInstance()->GetAlarmCfg();
m_CycleTick = 80;
}
BasePurifier::~BasePurifier()
{
m_RunFlag = false;
if (m_Thread != INVALID_HANDLE_VALUE)
{
if (WaitForSingleObject(m_Thread, 500) == WAIT_TIMEOUT)
{
TerminateThread(m_Thread, 1);
}
CloseHandle(m_Thread);
m_Thread = INVALID_HANDLE_VALUE;
}
}
void BasePurifier::Startup()
{
m_RunFlag = true;
m_Thread = AtlCreateThread(WorkProc, this);
}
DWORD WINAPI BasePurifier::WorkProc(BasePurifier* _this)
{
if (_this)
{
_this->WorkRun();
}
return 0;
}
void BasePurifier::WorkRun()
{
while (m_RunFlag) {
UpdateShowStat();
if (BaseCtrl::IsStart() || BaseCtrl::IsPause()) {
AutoCtrlWhenPrint();
}
else if (BaseCtrl::IsStandBy())
{
AutoCtrlWhenStanby();
}
UpdateShowStat();
AutoCtrl();
if (!m_IOCfgWrapper->m_PrintDoorLock->IsActive() && m_AlarmCfgWrapper->m_PrintCabinDoorOpenAlarm->m_IsEnable) {
AutoCtrlWhenDoorOpen();
}
Sleep(m_CycleTick);
}
2024-05-17 15:57:36 +08:00
}
void BasePurifier::CallFunc(const ReadData& rd, ::stream::ResponseAny** response) {
PurifierFunc func = (PurifierFunc)stoi(rd.nameKey);
switch (func) {
case STARTAUTODEOXYGEN:
StartAutoDeoxygen();
break;
case STOPAUTODEOXYGEN:
StopAutoDeoxygen();
break;
default:break;
}
2024-03-26 10:33:00 +08:00
}