146 lines
3.8 KiB
C++
146 lines
3.8 KiB
C++
#include "Controller.h"
|
|
#include "../Purifier/XTPurifier.h"
|
|
#include "../Purifier/HBD3Purifier.h"
|
|
#include "../camera/GalaxyCamera.h"
|
|
#include "../camera/OPTCamera.h"
|
|
#include "../Purifier/G4Purifier.h"
|
|
#include "../PLC/SignalService.h"
|
|
|
|
Controller::Controller()
|
|
: m_Machine(nullptr)
|
|
, m_CoreCommunication(nullptr)
|
|
, m_Axis(nullptr)
|
|
, m_StateCtrlWrapper(nullptr)
|
|
, m_SysParamWrapper(nullptr)
|
|
, m_AxisRecordWrapper(nullptr)
|
|
, m_SignalStateWrapper(nullptr)
|
|
, m_sendTdExitFlag(false){
|
|
|
|
|
|
}
|
|
|
|
|
|
Controller::~Controller() {
|
|
StopSend();
|
|
|
|
m_CoreCommunication->Shutdown();
|
|
DELP(m_CoreCommunication);
|
|
DELP(m_Axis);
|
|
DELP(m_StateCtrlWrapper);
|
|
DELP(m_SysParamWrapper);
|
|
DELP(m_AxisRecordWrapper);
|
|
DELP(m_SignalStateWrapper);
|
|
|
|
if (m_ComServer) m_ComServer->Shutdown();
|
|
DELP(m_ComServer);
|
|
DELP(m_RemoteClient);
|
|
DELP(m_MachineCtrl);
|
|
DELP(m_ScannerCtrl);
|
|
|
|
DELP(m_Purifier);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Controller::Init(){
|
|
BaseCtrl::SInit();
|
|
m_jobController.SInit();
|
|
|
|
m_SysParamWrapper = new SysParamWrapper;
|
|
m_StateCtrlWrapper = new StateCtrlWrapper;
|
|
m_StateCtrlWrapper->Init(m_CoreCommunication);
|
|
m_AxisRecordWrapper = new AxisRecordWrapper;
|
|
m_AxisRecordWrapper->Init(m_CoreCommunication);
|
|
|
|
m_CoreCommunication = new CoreCommunication();
|
|
m_CoreCommunication->SetIOCfgWrapper(ConfigManager::GetInstance()->GetIoCfgWrapper());
|
|
m_CoreCommunication->SetSysParamWrapper(m_SysParamWrapper);
|
|
m_CoreCommunication->SetPLCAxis(m_Axis);
|
|
m_CoreCommunication->SetAlarmStateWrapper(m_SignalStateWrapper);
|
|
m_CoreCommunication->SetAxisRecordWrapper(m_AxisRecordWrapper);
|
|
m_CoreCommunication->Init();
|
|
m_CoreCommunication->Startup();
|
|
|
|
m_SignalStateWrapper = new SignalStateWrapper();
|
|
m_Machine = ConfigManager::GetInstance()->GetMachine();
|
|
m_Machine->InitSignal(m_SignalStateWrapper, m_CoreCommunication);
|
|
m_Machine->InitSysParam(m_SysParamWrapper, m_CoreCommunication);
|
|
m_Axis = new PLCAxis(m_SysParamWrapper, m_StateCtrlWrapper);
|
|
m_Machine->SetAxisAndSignal(m_SysParamWrapper, m_AxisRecordWrapper, m_Axis);
|
|
|
|
SignalService::GetInstance().SetSignalStateCtrl(m_SignalStateWrapper);
|
|
|
|
m_MachineCtrl = new MachineCtrl();
|
|
m_MachineCtrl->Init(m_CoreCommunication, m_SysParamWrapper, m_SignalStateWrapper, m_Axis);
|
|
|
|
m_Machine->SetMachineCtrl(m_MachineCtrl);
|
|
m_MachineCtrl->MachineStartup();
|
|
|
|
m_MachineCfg = ConfigManager::GetInstance()->GetMachineCfg();
|
|
m_ComServer = new ComServer(); //辅机服务
|
|
m_ComServer->Init();
|
|
|
|
m_ScannerCtrl = new ScannerCtrl(/*m_ServoManager*/);
|
|
m_ScannerCtrl->SetJobController(&m_jobController);
|
|
m_ScannerCtrl->Init();
|
|
m_ScannerCtrl->SetScannerPowerClient(m_ComServer->m_ScannerPowerClient);
|
|
|
|
m_RemoteClient = new RemoteClient(nullptr, nullptr/*m_ScannerCtrl*/);
|
|
m_RemoteClient->Init();
|
|
//m_RemoteClient->SetCamera( nullptr /*m_Camera*/);
|
|
if (m_RemoteClient->GetConfig()->m_Enable) {
|
|
m_RemoteClient->StartRemote();
|
|
}
|
|
m_ScannerCtrl->SetRemoteClient(m_RemoteClient);
|
|
|
|
m_ScannerCtrl->SetMachineCtrl(m_MachineCtrl);
|
|
|
|
switch (m_MachineCfg->m_PulifierType)
|
|
{
|
|
case PurifierTypeCfg::XT: {
|
|
m_Purifier = new XTPurifier(m_ScannerCtrl);
|
|
}break;
|
|
case PurifierTypeCfg::HBD_PURIFIER_3: {
|
|
m_Purifier = new HBD3Purifier(m_ScannerCtrl);
|
|
}break;
|
|
case PurifierTypeCfg::G4_PURIFIER: {
|
|
m_Purifier = new G4Purifier(m_ScannerCtrl);
|
|
}break;
|
|
default:
|
|
m_Purifier = new XTPurifier(m_ScannerCtrl);
|
|
}
|
|
m_Purifier->Init();
|
|
|
|
m_jobController.StartLoadPrepareJob();
|
|
|
|
}
|
|
|
|
|
|
void Controller::StartSend() {
|
|
StopSend();
|
|
|
|
m_sendTdExitFlag = false;
|
|
m_sendParamThread = std::thread([this] {
|
|
while (!m_sendTdExitFlag) {
|
|
m_ComServer->SendToClients();
|
|
m_Purifier->SendToClients();
|
|
|
|
this_thread::sleep_for(std::chrono::milliseconds(80));
|
|
}
|
|
});
|
|
|
|
|
|
}
|
|
|
|
void Controller::StopSend() {
|
|
m_sendTdExitFlag = true;
|
|
if (m_sendParamThread.joinable()) m_sendParamThread.join();
|
|
|
|
}
|
|
|
|
|
|
void Controller::UpdateFile(const string& filePath) {
|
|
m_jobController.LoadJob(filePath);
|
|
} |