GrpcPrint/PrintS/job/FileProcessor.cpp

209 lines
6.8 KiB
C++

#include "FileProcessor.h"
#include "../Logger.h"
FileProcessor::FileProcessor()
:m_StartIndex(0)
, m_IsFinished(false)
, m_IsOpen(true)
, m_FirstStartTime(0L)
, m_BeginPrintTime(0L)
, m_AutoPauseTime(0L)
, m_IsAutoCtrl(false)
,m_SetParamType(SingleParam)
, m_AutoHeatingScanner(false)
{
}
FileProcessor::~FileProcessor()
{
}
void FileProcessor::SetJobbean(JobBean bean)
{
m_Jobbean = bean;
}
JobBean* FileProcessor::GetJobbean()
{
return &m_Jobbean;
}
void FileProcessor::UpdateJobBeanWhenStart()
{
if (m_Jobbean.m_IsContinue) {
time(&m_Jobbean.m_StartTime);
}
else
{
time(&m_Jobbean.m_InsertTime);
m_Jobbean.m_StartTime = m_Jobbean.m_InsertTime;
m_Jobbean.m_Uid = GetJobUid();
m_Jobbean.m_Name = GetJobTitle();
m_Jobbean.m_PrintedLayerIndex = m_StartIndex;
}
}
bool FileProcessor::JudgePowder(double powderPos,unsigned int layer,unsigned int& level )
{
vector<MetaData::Layer*> layers= GetMetaData()->GetLayersVec();
bool rel = true;
double need = 0.0;
for (size_t layerindex = layer; layerindex < layers.size(); ++layerindex) {
MetaData::Layer* layer = layers[layerindex];
need = need + layer->powder;
if (need>powderPos) {
level = layerindex;
rel = false;
break;
}
}
return rel;
}
float FileProcessor::GetJobPrintHigh()
{
uint32_t high = 0;
vector<MetaData::Layer*> layers = GetMetaData()->GetLayersVec();
for (size_t layerindex = m_StartIndex; layerindex < layers.size(); ++layerindex) {
MetaData::Layer* layer = layers[layerindex];
high += layer->layer_thickness;
}
float fh = (float)high / 1000.0f;
return fh;
}
void FileProcessor::UpdateJobBeanWhenStop()
{
m_Jobbean.m_IsContinue = false;
m_Jobbean.m_PrintedLayerIndex = 0;
m_Jobbean.m_LastPauseTime = 0;
m_FirstStartTime = 0;
m_Jobbean.m_PrintSecond = 0;
}
void FileProcessor::UpdateParameterSet(const ReadData& rd,const list<Item>& lst) {
std::string type = rd.strValue;
if (type == "speed") { //速度
string set_type;
float laser_speed = 0.f;
int partId = 0, parameterSetId = 0;
for (auto it = lst.begin(); it != lst.end(); ++it) {
if (it->nameKey == "set_type") set_type = it->strValue;
if (it->nameKey == "laser_speed") laser_speed = ConverType::TryToF(it->strValue);
if (it->nameKey == "partId") partId = ConverType::TryToI(it->strValue);
if (it->nameKey == "parameterSetId") parameterSetId = ConverType::TryToI(it->strValue);
}
if (GetMetaData()->GetPart(partId)) {
for (auto start = GetMetaData()->GetPart(partId)->paramSet.begin(); start != GetMetaData()->GetPart(partId)->paramSet.end(); ++start) {
if ((*start)->id == parameterSetId) {
(*start)->laser_speed = laser_speed;
}
}
}
if (m_SetParamType == SameParam) {
for (auto it = GetMetaData()->GetParameterMap()->begin(); it != GetMetaData()->GetParameterMap()->end(); it++) {
auto tempset = it->second;
if (tempset->set_type == set_type) {
tempset->laser_speed = laser_speed;
}
}
g_log->TraceInfo(g_LngManager->Log_UpdateAllPartParamLaserSpeed->ShowText(), set_type, laser_speed);
}
else if (m_SetParamType == AllParam) {
for (auto it = GetMetaData()->GetParameterMap()->begin(); it != GetMetaData()->GetParameterMap()->end(); it++) {
auto tempset = it->second;
tempset->laser_speed = laser_speed;
}
g_log->TraceInfo(g_LngManager->Log_UpdateAllParamLaserSpeed->ShowText(), set_type, laser_speed);
}
else {
g_log->TraceInfo(g_LngManager->Log_UpdatePartParamLaserSpeed->ShowText(), partId, set_type, laser_speed);
}
}
else if(type == "power") { //功率
string set_type;
float laser_power = 0.f;
int partId = 0, parameterSetId = 0;
for (auto it = lst.begin(); it != lst.end(); ++it) {
if (it->nameKey == "set_type") set_type = it->strValue;
if (it->nameKey == "laser_power") laser_power = ConverType::TryToF(it->strValue);
if (it->nameKey == "partId") partId = ConverType::TryToI(it->strValue);
if (it->nameKey == "parameterSetId") parameterSetId = ConverType::TryToI(it->strValue);
}
if (GetMetaData()->GetPart(partId)) {
for (auto start = GetMetaData()->GetPart(partId)->paramSet.begin(); start != GetMetaData()->GetPart(partId)->paramSet.end(); ++start) {
if ((*start)->id == parameterSetId) {
(*start)->laser_set->laser_real_power = laser_power;
(*start)->laser_set->laser_power = laser_power;
}
}
}
if (m_SetParamType == SameParam) {
for (auto it = GetMetaData()->GetParameterMap()->begin(); it != GetMetaData()->GetParameterMap()->end(); ++it) {
auto tempset = it->second;
if (tempset->set_type == set_type) {
tempset->laser_set->laser_power = laser_power;
tempset->laser_set->laser_real_power = laser_power;
}
}
g_log->TraceInfo(g_LngManager->Log_UpdateAllPartParamLaserPower->ShowText(), set_type, laser_power);
}
else if (m_SetParamType == AllParam) {
for (auto it = GetMetaData()->GetParameterMap()->begin(); it != GetMetaData()->GetParameterMap()->end(); ++it) {
auto tempset = it->second;
tempset->laser_set->laser_power = laser_power;
tempset->laser_set->laser_real_power = laser_power;
}
g_log->TraceInfo(g_LngManager->Log_UpdateAllParamLaserPower->ShowText(), set_type, laser_power);
}
else {
g_log->TraceInfo(g_LngManager->Log_UpdatePartParamLaserPower->ShowText(), partId, set_type, laser_power);
}
}
else if (type == "diameter") {
string set_type;
float laser_diameter = 0.f;
int partId = 0, parameterSetId = 0;
for (auto it = lst.begin(); it != lst.end(); ++it) {
if (it->nameKey == "set_type") set_type = it->strValue;
if (it->nameKey == "laser_diameter") laser_diameter = ConverType::TryToF(it->strValue);
if (it->nameKey == "partId") partId = ConverType::TryToI(it->strValue);
}
if (GetMetaData()->GetPart(partId)) {
for (auto start = GetMetaData()->GetPart(partId)->paramSet.begin(); start != GetMetaData()->GetPart(partId)->paramSet.end(); ++start) {
if ((*start)->id == parameterSetId) {
(*start)->laser_set->laser_diameter = laser_diameter;
}
}
}
if (m_SetParamType == SameParam) {
for (auto it = GetMetaData()->GetParameterMap()->begin(); it != GetMetaData()->GetParameterMap()->end(); ++it) {
auto* tempset = it->second;
if (tempset->set_type == set_type) {
tempset->laser_set->laser_diameter = laser_diameter;
}
}
g_log->TraceInfo(g_LngManager->Log_UpdateAllPartParamLaserDiameter->ShowText(), set_type, laser_diameter);
}
else if (m_SetParamType == AllParam) {
for (auto it = GetMetaData()->GetParameterMap()->begin(); it != GetMetaData()->GetParameterMap()->end(); ++it) {
auto tempset = it->second;
tempset->laser_set->laser_diameter = laser_diameter;
}
g_log->TraceInfo(g_LngManager->Log_UpdateAllParamLaserDiameter->ShowText(), set_type, laser_diameter);
}
else {
g_log->TraceInfo(g_LngManager->Log_UpdatePartParamLaserDiameter->ShowText(), partId, set_type, laser_diameter);
}
}
}