GrpcPrint/PrintS/DataManage/DataHandle.cpp

146 lines
4.1 KiB
C++
Raw Normal View History

2024-03-15 12:31:34 +08:00
#include "DataHandle.h"
#include <iostream>
#include <typeinfo>
2024-04-08 13:43:56 +08:00
#include "../SystemInfo.h"
2024-03-15 12:31:34 +08:00
2024-06-25 15:25:46 +08:00
//接收数据的回调
void DataHandle::DataCallBackProc(void* pthis, const ReadData& msg, const std::list<Item>& its) {
2024-04-08 13:43:56 +08:00
DataHandle* p = (DataHandle*)pthis;
2024-06-05 23:59:04 +08:00
ReadData rd = msg;
std::list<Item> lst = its;
p->DataCallBackHandle(rd, lst);
2024-04-08 13:43:56 +08:00
}
2024-03-26 10:33:00 +08:00
2024-06-25 15:25:46 +08:00
void DataHandle::FuncDataCallBackProc(void* pthis,const ReadData& msg, const list<Item>& lst, ::stream::ResponseAny** response) {
2024-04-23 13:41:16 +08:00
DataHandle* p = (DataHandle*)pthis;
int index = atoi(msg.strValue.data());
2024-04-24 18:12:41 +08:00
2024-05-15 13:38:34 +08:00
if ((READTYPE)msg.dataType == LAYERDATAREQ) {
int size = (int)p->m_controller->m_jobController.m_PrepareJob->GetMetaData()->GetLayersVec().size();
if (!p || index<1 || index>(int)size) return;
p->m_controller->m_jobController.m_PrepareJob->GetMetaData()->GetLayerByIndex(index - 1, response);
}
2024-05-15 17:59:04 +08:00
else if ((READTYPE)msg.dataType == REGISTFUNC) {
p->m_controller->m_reg->CallFunc(msg,response);
}
2024-05-17 10:57:17 +08:00
else if ((READTYPE)msg.dataType == CAMERAFUNC) {
p->m_controller->m_Camera->CallFunc(msg, response);
}
2024-06-04 17:49:56 +08:00
else if ((READTYPE)msg.dataType == CONFIGFUNC) {
p->m_config->CallFuncs(msg, lst, response);
}
2024-04-24 18:12:41 +08:00
2024-04-23 13:41:16 +08:00
}
2024-03-15 12:31:34 +08:00
DataHandle::DataHandle()
2024-05-17 10:57:17 +08:00
: m_streamServer(nullptr)
2024-03-27 16:09:22 +08:00
, m_config(nullptr)
, m_controller(nullptr){
2024-03-15 12:31:34 +08:00
}
DataHandle::~DataHandle() {
2024-04-08 13:43:56 +08:00
Stop();
2024-03-26 10:33:00 +08:00
DELP(m_streamServer);
2024-04-10 16:15:33 +08:00
DELP(m_controller);
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->Init();
m_streamServer = new StreamServer(m_config->GetMachine());
2024-06-25 15:25:46 +08:00
m_streamServer->SetCallBackFunc(this, &DataHandle::DataCallBackProc, &DataHandle::FuncDataCallBackProc);
2024-03-22 11:28:06 +08:00
m_streamServer->Init();
2024-04-10 16:15:33 +08:00
m_controller = new Controller();
m_controller->Init();
2024-03-26 10:33:00 +08:00
2024-03-22 11:28:06 +08:00
}
void DataHandle::Run() {
2024-04-08 13:43:56 +08:00
if (m_streamServer) m_streamServer->Run();
2024-03-15 12:31:34 +08:00
2024-04-16 17:36:27 +08:00
if(m_controller) m_controller->StartSend();
2024-04-08 13:43:56 +08:00
}
2024-03-27 16:09:22 +08:00
2024-04-07 17:09:01 +08:00
2024-04-08 13:43:56 +08:00
void DataHandle::Stop() {
2024-04-16 17:36:27 +08:00
if (m_controller) m_controller->StopSend();
2024-05-30 11:18:10 +08:00
if(m_streamServer) m_streamServer->Stop();
2024-03-22 11:28:06 +08:00
}
2024-03-15 12:31:34 +08:00
void DataHandle::DataCallBackHandle(const ReadData& msg, const std::list<Item>& its) {
2024-04-08 13:43:56 +08:00
vector<Scanner*>* scanners = nullptr;
WriteData* wd = nullptr;
int index = 0;
2024-03-15 12:31:34 +08:00
switch (msg.dataType) {
2024-05-11 17:43:38 +08:00
case AXISMOVEFUNC:
if (!m_controller->m_ScannerCtrl->IsStandBy() && g_Admin == USER){
2024-05-17 15:57:36 +08:00
printf("振镜没有准备,无法操作\n"); return;
2024-05-11 17:43:38 +08:00
}
m_controller->m_Machine->CallAxisFunc(msg); break;
2024-04-08 13:43:56 +08:00
case VERSIONREQ: //获取版本信息
msg.clientPtr->PushMsg(new WriteData(VERSIONRSP, { { string(""), g_SystemInfo->m_ProductVersion, iSTRING } }));
2024-04-08 13:43:56 +08:00
break;
2024-04-18 11:59:51 +08:00
case RESETELEC:
2024-05-06 10:49:15 +08:00
m_controller->m_ComServer->m_PowerMeterClient->ResetElec(); break;
case PURIFIERPARAMW:
2024-05-06 10:49:15 +08:00
m_controller->m_Purifier->SetParam(msg); break;
2024-05-09 12:49:18 +08:00
case SETZEROPOS:
ConfigManager::GetInstance()->UpdateZeroOffset(ConverType::TryToI(msg.nameKey), ConverType::TryToF(msg.strValue)); break;
2024-05-09 12:49:18 +08:00
case AXISSTOPALL:
m_controller->m_Axis->StopAll(); break;
case READTYPE::LOADPARAM:
m_controller->m_Machine->Update(msg,LOADPARAMRSP); break;
2024-06-05 17:02:17 +08:00
case SCANCTRLFUNC: //需要先释放ScannerCtrl::Init()内部代码块
m_controller->m_ScannerCtrl->CallFunc(msg, its); break;
2024-05-17 10:57:17 +08:00
case CAMERAFUNC:
m_controller->m_Camera->CallFunc(msg,nullptr); break;
case CAMERAPARAMUPDATE:
m_controller->m_Camera->Update(msg); break;
2024-05-17 15:57:36 +08:00
case PURIFIERFUNC:
m_controller->m_Purifier->CallFunc(msg); break;
case CONFIGFUNC:
ConfigManager::GetInstance()->CallFuncs(msg); break;
2024-05-31 11:49:20 +08:00
case PARAMLIMITCFG:
case EXTCFG:
2024-05-28 18:07:35 +08:00
case RUNCFG:
case INFRAREDTEMPCFG:
2024-05-30 11:18:10 +08:00
case MACHINECFG:
2024-05-30 17:25:23 +08:00
case FAVORITECFG:
2024-05-31 11:49:20 +08:00
case CAMERACALIBRATIONCFG:
case UISHOWCFG:
case RECOATCHECKCFG:
case POWDERESTIMATECFG:
case COMMUNICATIONCFG:
2024-06-18 17:44:32 +08:00
case ALARMCFG:
2024-06-25 15:25:46 +08:00
case POWDERSET:
2024-05-31 11:49:20 +08:00
ConfigManager::GetInstance()->UpdateCfg(msg);
2024-05-30 17:25:23 +08:00
break;
2024-05-11 17:43:38 +08:00
case REQUEST:
2024-06-05 23:59:04 +08:00
if (!msg.nameKey.empty() && ConverType::TryToI( msg.nameKey) == XYSCANSTATE) { //g_isDebug 设置为 true;
for (int i = 0; i < (int)m_controller->m_ScannerCtrl->GetScanners()->size(); ++i) { //需要先打开ScannerCtrl::Init()代码块
2024-05-30 17:25:23 +08:00
Scanner* p = (m_controller->m_ScannerCtrl->GetScanners())->at(i);
p->GetScanStateXY().SendToClients(XYSCANSTATE, "_" + to_string(i));
}
2024-05-15 13:38:34 +08:00
}
else {
ConfigManager::GetInstance()->SendCfgToClients(); //发送配置到客户端
}
2024-05-30 11:18:10 +08:00
break;
2024-03-15 12:31:34 +08:00
default: break;
}
2024-04-07 17:09:01 +08:00
}
2024-04-08 13:43:56 +08:00
2024-03-15 12:31:34 +08:00