GrpcPrint/PrintS/DataManage/DataHandle.cpp

159 lines
4.6 KiB
C++
Raw Normal View History

2024-03-15 12:31:34 +08:00
#include "DataHandle.h"
#include <iostream>
#include <typeinfo>
2024-03-26 10:33:00 +08:00
2024-03-15 12:31:34 +08:00
DataHandle::DataHandle()
: m_dataCallBack(nullptr)
2024-03-27 16:09:22 +08:00
, m_streamServer(nullptr)
, m_config(nullptr)
, m_controler(nullptr)
, m_testFlag(false){
2024-03-15 12:31:34 +08:00
}
DataHandle::~DataHandle() {
2024-03-22 11:28:06 +08:00
m_streamServer->Stop();
2024-03-26 10:33:00 +08:00
2024-04-07 17:09:01 +08:00
m_testFlag = true;
if (m_testTd.joinable()) m_testTd.join();
2024-03-26 10:33:00 +08:00
DELP(m_streamServer);
DELP(m_controler);
2024-03-15 12:31:34 +08:00
}
void DataHandle::Init() {
2024-03-22 11:28:06 +08:00
m_config = ConfigManager::GetInstance();
m_config->PreInit();
2024-03-26 10:33:00 +08:00
g_LngManager = new LanguageManager();
g_LngManager->Init();
g_Lang = &m_config->GetMachineCfg()->m_I18NLang[0];
2024-03-22 11:28:06 +08:00
m_config->Init();
2024-03-27 16:09:22 +08:00
//WriteData();
2024-03-22 11:28:06 +08:00
m_streamServer = new StreamServer(m_config->GetMachine());
2024-03-15 12:31:34 +08:00
//测试线程
2024-03-22 11:28:06 +08:00
m_testTd = std::thread ([this] {
2024-03-15 12:31:34 +08:00
static float i = 10.12540f;
2024-03-27 16:09:22 +08:00
while (!m_testFlag) {
2024-03-15 12:31:34 +08:00
WriteData* wd = new WriteData();
wd->dataType = RESPOND;
wd->strValue = std::to_string(i);
wd->nameKey = "hello";
wd->result = true;
wd->valueType = iFLOAT;
2024-03-27 16:09:22 +08:00
if (m_streamServer && m_streamServer->GetClient())
2024-03-15 12:31:34 +08:00
m_streamServer->GetClient()->SetPushMsg(wd);
std::this_thread::sleep_for(std::chrono::seconds(1));
}
2024-03-22 11:28:06 +08:00
});
m_testTd.detach();
2024-03-15 12:31:34 +08:00
m_streamServer->SetCallBackFunc(this, &DataHandle::DataCallBackProc);
2024-03-22 11:28:06 +08:00
m_streamServer->Init();
2024-03-26 10:33:00 +08:00
m_controler = new Controler();
m_controler->Init();
2024-03-22 11:28:06 +08:00
}
void DataHandle::Run() {
2024-03-15 12:31:34 +08:00
m_streamServer->Run();
}
2024-03-22 11:28:06 +08:00
void DataHandle::Stop() {
2024-03-27 16:09:22 +08:00
2024-04-07 17:09:01 +08:00
if(m_streamServer) m_streamServer->Stop();
2024-03-22 11:28:06 +08:00
}
2024-03-15 12:31:34 +08:00
2024-04-07 17:09:01 +08:00
void DataHandle::DataCallBackHandle(const ReadData& msg) {
2024-03-15 12:31:34 +08:00
switch (msg.dataType) {
case GET:
break;
case SET: break;
2024-04-07 17:09:01 +08:00
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;
2024-03-15 12:31:34 +08:00
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; //成型缸清零
2024-04-07 17:09:01 +08:00
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;
2024-03-15 12:31:34 +08:00
default: break;
2024-04-07 17:09:01 +08:00
2024-03-15 12:31:34 +08:00
}
2024-04-07 17:09:01 +08:00
}
void DataHandle::DataCallBackProc(void* pthis, const ReadData& msg) {
DataHandle* p = (DataHandle*)pthis;
p->DataCallBackHandle(msg);
2024-03-15 12:31:34 +08:00
}