#include "DataHandle.h" #include #include DataHandle::DataHandle() : m_dataCallBack(nullptr) , m_streamServer(nullptr) , m_config(nullptr) , m_controler(nullptr) , m_testFlag(false){ } DataHandle::~DataHandle() { m_streamServer->Stop(); m_testFlag = true; if (m_testTd.joinable()) m_testTd.join(); DELP(m_streamServer); DELP(m_controler); } void DataHandle::Init() { m_config = ConfigManager::GetInstance(); m_config->PreInit(); g_LngManager = new LanguageManager(); g_LngManager->Init(); g_Lang = &m_config->GetMachineCfg()->m_I18NLang[0]; m_config->Init(); //WriteData(); m_streamServer = new StreamServer(m_config->GetMachine()); //测试线程 m_testTd = std::thread ([this] { static float i = 10.12540f; while (!m_testFlag) { WriteData* wd = new WriteData(); wd->dataType = RESPOND; wd->strValue = std::to_string(i); wd->nameKey = "hello"; wd->result = true; wd->valueType = iFLOAT; if (m_streamServer && m_streamServer->GetClient()) m_streamServer->GetClient()->SetPushMsg(wd); std::this_thread::sleep_for(std::chrono::seconds(1)); } }); m_testTd.detach(); m_streamServer->SetCallBackFunc(this, &DataHandle::DataCallBackProc); m_streamServer->Init(); m_controler = new Controler(); m_controler->Init(); } void DataHandle::Run() { m_streamServer->Run(); } void DataHandle::Stop() { if(m_streamServer) m_streamServer->Stop(); } void DataHandle::DataCallBackHandle(const ReadData& msg) { switch (msg.dataType) { case GET: break; case SET: break; case LOAD: if (!m_controler->m_ScannerCtrl->IsStandBy() && g_Admin == USER)return; m_controler->m_Machine->LoadIn(); break; //载入 case LOADOUT: if (!m_controler->m_ScannerCtrl->IsStandBy() && g_Admin == USER)return; m_controler->m_Machine->LoadOut(); break; //载出 case SUPPLYAXLEAFTER: //供粉轴后移 m_controler->m_Machine->SupplyAxisMove(AxisConfig::ActiveDirect::BACK); break; case SUPPLYAXLEFRONT: //供粉轴前移 m_controler->m_Machine->SupplyAxisMove(AxisConfig::ActiveDirect::FRONT); break; case SUPPLYAXLEAFTERCONTSTART: //供粉轴后移连续 m_controler->m_Machine->SupplyAxisMove(AxisConfig::ActiveDirect::BACK,true,true); break; case SUPPLYAXLEAFTERCONTSTOP: m_controler->m_Machine->SupplyAxisMove(AxisConfig::ActiveDirect::BACK, true, false); break; //供粉轴后移连续 case SUPPLYAXLEFRONTCONTSTART: //供粉轴前移连续开始 m_controler->m_Machine->SupplyAxisMove(AxisConfig::ActiveDirect::FRONT, true, true); break; case SUPPLYAXLEFRONTCONTSTOP: //供粉轴前移连续结束 m_controler->m_Machine->SupplyAxisMove(AxisConfig::ActiveDirect::FRONT, true, false); break; case PAVEAXLEFRONT: break; // 铺粉臂前移 case PAVEAXLEFRONTCONT: break; //铺粉臂前移连续 case PAVEAXLEAFTER: break; //铺粉臂后移 case PAVEAXLEAFTERCONT: break; //铺粉臂后移连续 case PAVEAXLECLEAR: break; //铺粉臂清零 case PRINTAXLEUP: break; //成型缸上升 case PRINTAXLEUPCONT: break; //成型缸连续上升 case PRINTAXLEDOWN: break; //成型缸下降 case PRINTAXLEDOWNCONT: break; //成型缸连续下降 case PRINTAXLECLEAR: break; //成型缸清零 case TRANSFERAXIELEFT: //移栽轴左移 if (!m_controler->m_ScannerCtrl->IsStandBy() && g_Admin == USER)return; m_controler->m_Machine->LoadAxisMove(AxisConfig::ActiveDirect::LEFT); break; case TRANSFERAXIELEFTCONTSTART: //移栽轴连续左移开始 m_controler->m_Machine->LoadAxisMove(AxisConfig::ActiveDirect::LEFT, true,true); break; case TRANSFERAXIELEFTCONTSTOP: //移栽轴连续左移停止 m_controler->m_Machine->LoadAxisMove(AxisConfig::ActiveDirect::LEFT, true, false); break; case TRANSFERAXIERIGHT: //移栽轴右移 if (!m_controler->m_ScannerCtrl->IsStandBy() && g_Admin == USER)return; m_controler->m_Machine->LoadAxisMove(AxisConfig::ActiveDirect::RIGHT); break; case TRANSFERAXIERIGHTCONTSTART: //移栽轴连续右移 if (!m_controler->m_ScannerCtrl->IsStandBy() && g_Admin == USER)return; m_controler->m_Machine->LoadAxisMove(AxisConfig::ActiveDirect::RIGHT,true,true); break; case TRANSFERAXIERIGHTCONTSTOP: //移栽轴连续右移 if (!m_controler->m_ScannerCtrl->IsStandBy() && g_Admin == USER)return; m_controler->m_Machine->LoadAxisMove(AxisConfig::ActiveDirect::RIGHT, true, false); break; case TRANSFERAXIECLEAR: //移栽轴清零 m_controler->m_Machine->LoadAxisMove(AxisConfig::ActiveDirect::ZERO); break; default: break; } } void DataHandle::DataCallBackProc(void* pthis, const ReadData& msg) { DataHandle* p = (DataHandle*)pthis; p->DataCallBackHandle(msg); }