From 94e5ecedefda1eea55ed66dbe1c52feb593ca270 Mon Sep 17 00:00:00 2001 From: wangxx1809 Date: Mon, 6 May 2024 17:10:57 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=8A=9F=E8=83=BD=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PrintC/Machine/HBD1000.cpp | 31 +- PrintC/Machine/HBD1200.cpp | 3145 ++++++++++++++-------------- PrintC/Machine/HBD1200.h | 2 +- PrintC/Machine/Machine.cpp | 3 + PrintC/Machine/Machine.h | 94 +- PrintC/PLC/AxisState.cpp | 23 + PrintC/PLC/AxisState.h | 2 + PrintC/UI/Controller.cpp | 2 +- PrintC/UI/UIWin.cpp | 2 +- PrintC/config/ConfigManager.h | 1 - PrintC/config/bean/AxisCfg.h | 2 + PrintC/config/bean/ParamLimitCfg.h | 4 +- PrintC/output/Release/log/2024.hbd | Bin 122880 -> 122880 bytes PrintS/Machine/HBD1000.cpp | 7 +- PrintS/Machine/HBD1200.cpp | 26 +- PrintS/Machine/Machine.cpp | 19 +- PrintS/Machine/Machine.h | 120 +- 17 files changed, 1807 insertions(+), 1676 deletions(-) diff --git a/PrintC/Machine/HBD1000.cpp b/PrintC/Machine/HBD1000.cpp index f403d3d..e4afd65 100644 --- a/PrintC/Machine/HBD1000.cpp +++ b/PrintC/Machine/HBD1000.cpp @@ -9285,7 +9285,7 @@ void HBD1000::DrawPowderCtrl(bool *winShow) tabs.push_back(_(u8"供粉轴")); tabs.push_back(_(u8"铺粉")); tabs.push_back(_(u8"控制")); - int tabwidth = 0; + float tabwidth = 0; for (size_t tindex = 0; tindex In_Success) { - ImGui::TextColored(Toast::COLOR_RED, GetLoadInfo().c_str()); + else if (mp.m_LoadInResut > In_Success) { + ImGui::TextColored(Toast::COLOR_RED, mp.m_LoadInfo.c_str()); if (ImGui::Button(_(u8"确定").c_str(), ImVec2(-1, 0))) { ImGui::CloseCurrentPopup(); @@ -10300,29 +10303,29 @@ void HBD1000::DrawPowderCtrl(bool *winShow) ImGui::Text(_(u8"缸体与清粉箱连接中").c_str()); } - if (IsWaitConnectBoxCommit()) { + if (mp.m_WaitConnectBoxCommit) { if (ImGui::Button(_(u8"执行缸体与清粉箱连接").c_str())) { SetWaitConnectBoxCommit(false); } } - if (GetLoadOutResult() == Out_Intercept) { - ImGui::TextColored(Toast::COLOR_ORANGE, GetLoadInfo().c_str()); + if (mp.m_LoadOutResut == Out_Intercept) { + ImGui::TextColored(Toast::COLOR_ORANGE, mp.m_LoadInfo.c_str()); if (ImGui::Button(_(u8"确定").c_str(), ImVec2(-1, 0))) { ImGui::CloseCurrentPopup(); } } - else if (GetLoadOutResult() == Out_Success) { - ImGui::TextColored(Toast::COLOR_GREEN, GetLoadInfo().c_str()); + else if (mp.m_LoadOutResut == Out_Success) { + ImGui::TextColored(Toast::COLOR_GREEN, mp.m_LoadInfo.c_str()); if (ImGui::Button(_(u8"确定").c_str(), ImVec2(-1, 0))) { ImGui::CloseCurrentPopup(); } } - else if (GetLoadOutResult() > Out_Success) { - ImGui::TextColored(Toast::COLOR_RED, GetLoadInfo().c_str()); + else if (mp.m_LoadOutResut > Out_Success) { + ImGui::TextColored(Toast::COLOR_RED, mp.m_LoadInfo.c_str()); if (ImGui::Button(_(u8"确定").c_str(), ImVec2(-1, 0))) { ImGui::CloseCurrentPopup(); diff --git a/PrintC/Machine/HBD1200.cpp b/PrintC/Machine/HBD1200.cpp index 31251f3..125a992 100644 --- a/PrintC/Machine/HBD1200.cpp +++ b/PrintC/Machine/HBD1200.cpp @@ -8,6 +8,7 @@ #include "../Toast.h" #include "../SystemInfo.h" #include "../Logger.h" +#include "../DataManage/DataHandle.h" const int HBD1200::IO_V0 = 0; HBD1200::HBD1200(MachineTypeCfg::MachineTypeId type) :Machine(type) @@ -2818,1381 +2819,1393 @@ void HBD1200::DrawServoState(bool* winShow) // ImGui::EndChild(); //} -void HBD1200::DrawPowderCtrl(bool* winShow) -{} - //void HBD1200::DrawPowderCtrl(bool* winShow) -//{ -// ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(4, 8)); -// ImGui::Begin(_(u8"铺粉装置调试").c_str(), winShow, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoDocking | ImGuiWindowFlags_NoNav); -// ImGui::PopStyleVar(); -// -// int dstepflag = 1; -// double fstepflag = 1.0; -// long lstepflag = 1; -// static int kb = GTS_AXIS_ID_ARM; -// static bool continue_move = false; -// -// //CoverCfg* coverCfg = m_CoverCfg; -// MainAxisState* mold = m_Axis->m_Mold->GetState(); -// //MainAxisState* ele = m_Axis->m_Clean->GetState(); -// AxisState* load = m_Axis->m_Load->GetState(); -// AxisState* arm = m_Axis->m_Arm->GetState(); -// AxisState* supply = m_Axis->m_Supply->GetState(); -// -// AxisConfig* armCfg = m_Axis->m_Arm->GetConfig(); -// AxisConfig::CfgValue armCfgVal; -// armCfg->GetValue(armCfgVal); -// AxisConfig* moldCfg = m_Axis->m_Mold->GetConfig(); -// AxisConfig::CfgValue moldCfgVal; -// moldCfg->GetValue(moldCfgVal); -// //AxisConfig* cleanCfg = m_Axis->m_Clean->GetConfig(); -// //AxisConfig::CfgValue cleanCfgVal; -// //cleanCfg->GetValue(cleanCfgVal); -// AxisConfig* loadCfg = m_Axis->m_Load->GetConfig(); -// AxisConfig::CfgValue loadCfgVal; -// loadCfg->GetValue(loadCfgVal); -// AxisConfig* supplyCfg = m_Axis->m_Supply->GetConfig(); -// AxisConfig::CfgValue supplyCfgVal; -// supplyCfg->GetValue(supplyCfgVal); -// -// ChartletManager* chartletManager = ChartletManager::GetInstance(); -// ImVec2 wpos = ImGui::GetWindowPos(); -// SignalService::GetInstance().GetSignalState(m_SignalState); -// if (m_PowderAssist.isLeftExpand) -// { -// ImGui::BeginGroup(); -// vector tabs; -// tabs.push_back(_(u8"成型缸")); -// tabs.push_back(_(u8"移载轴")); -// tabs.push_back(_(u8"铺粉轴")); -// tabs.push_back(_(u8"供粉轴")); -// tabs.push_back(_(u8"铺粉")); -// tabs.push_back(_(u8"控制")); -// int tabwidth = 0; -// for (size_t tindex = 0; tindex < tabs.size(); tindex++) { -// tabwidth = tabwidth + ImGui::CalcTextSize(tabs[tindex].c_str(), 0).x + 15; -// } -// ImVec2 showSize = ImVec2(tabwidth, 600); -// -// ImGui::BeginChild("AxisSettingChild", showSize, false, ImGuiWindowFlags_NoNav); -// ImGui::BeginTabBar("AxisSetting"); -// if (ImGui::BeginTabItem(_(u8"成型缸").c_str())) { -// ImGui::PushItemWidth(100); -// if (ImGui::InputScalar(_(u8"速度(mm/s)").c_str(), ImGuiDataType_Float, &moldCfgVal.speed, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) -// { -// moldCfg->m_Speed->SetValue(moldCfgVal.speed); -// g_log->TraceInfo(_(u8"更改成型缸速度:%.3f").c_str(), moldCfgVal.speed); -// } -// if (ImGui::InputScalar(_(u8"加速度(m/s²)").c_str(), ImGuiDataType_Float, &moldCfgVal.acc, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) -// { -// moldCfg->m_Acc->SetValue(moldCfgVal.acc); -// g_log->TraceInfo(_(u8"更改成型缸加速度:%.3f").c_str(), moldCfgVal.acc); -// } -// if (ImGui::InputScalar(_(u8"减速度(m/s2)").c_str(), ImGuiDataType_Float, &moldCfgVal.dec, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) -// { -// moldCfg->m_Dec->SetValue(moldCfgVal.dec); -// g_log->TraceInfo(_(u8"更新成型缸减速度:%.3f").c_str(), moldCfgVal.dec); -// } -// if (ImGui::InputScalar(_(u8"点动行程(μm)").c_str(), ImGuiDataType_Float, &moldCfgVal.rel, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { -// moldCfg->m_RefDistance->SetValue(moldCfgVal.rel); -// g_log->TraceInfo(_(u8"更改成型缸点动行程:%.3f").c_str(), moldCfgVal.rel); -// } -// ImGui::PopItemWidth(); -// -// if ((g_Admin > USER_ADMIN)) { -// ImGui::Dummy(ImVec2(0, 20)); -// if (mold->m_MoveAbsPos) -// { -// if (m_SysParamWrapper->m_MoldAbsTestPos->GetValue() == 0) -// { -// if (ImGui::ImageButton(chartletManager->m_MoldMoveDownesting->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// { -// m_Axis->m_Mold->GetCtrl()->m_MoveAbsPos->SetValue(false); -// g_log->TraceInfo(_(u8"中断打印升降轴移动到安全位").c_str()); -// } -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"打印升降轴移动到安全位").c_str()); -// } -// else { -// ImGui::ImageButton(chartletManager->m_MoldMoveDownestDisable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"不能执行打印升降轴移动到安全位").c_str()); -// } -// } -// else { -// if (ImGui::ImageButton(chartletManager->m_MoldMoveDownestEnable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// { -// m_SysParamWrapper->m_MoldAbsTestPos->SetValue(0); -// m_Axis->m_Mold->GetCtrl()->m_MoveAbsPos->SetValue(true); -// g_log->TraceInfo(_(u8"执行打印升降轴移动到安全位").c_str()); -// } -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"打印升降轴移动到安全位").c_str()); -// } -// -// ImGui::SameLine(); -// -// if (mold->m_MoveAbsPos) -// { -// if (m_SysParamWrapper->m_MoldAbsTestPos->GetValue() == 3) -// { -// if (ImGui::ImageButton(chartletManager->m_MoldMovePlatformBottoming->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// { -// m_Axis->m_Mold->GetCtrl()->m_MoveAbsPos->SetValue(false); -// g_log->TraceInfo(_(u8"中断打印轴移动到底座缸平面位").c_str()); -// } -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"中断打印轴移动到底座缸平面位").c_str()); -// } -// else { -// ImGui::ImageButton(chartletManager->m_MoldMovePlatformBottomDisable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"不能执行打印轴移动到底座缸平面位").c_str()); -// } -// } -// else { -// if (ImGui::ImageButton(chartletManager->m_MoldMovePlatformBottomEnable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// { -// m_SysParamWrapper->m_MoldAbsTestPos->SetValue(3); -// m_Axis->m_Mold->GetCtrl()->m_MoveAbsPos->SetValue(true); -// g_log->TraceInfo(_(u8"执行打印轴移动到底座缸平面位").c_str()); -// } -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"打印轴移动到底座缸平面位").c_str()); -// } -// ImGui::SameLine(); -// if (mold->m_MoveAbsPos) -// { -// if (m_SysParamWrapper->m_MoldAbsTestPos->GetValue() == 4) -// { -// if (ImGui::ImageButton(chartletManager->m_MoldMovePlatforming->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// { -// m_Axis->m_Mold->GetCtrl()->m_MoveAbsPos->SetValue(false); -// g_log->TraceInfo(_(u8"中断打印轴移动到基板缸平面位").c_str()); -// } -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"中断打印轴移动到基板缸平面位").c_str()); -// -// } -// else { -// ImGui::ImageButton(chartletManager->m_MoldMovePlatformDisable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"不能执行打印轴移动到基板缸平面位").c_str()); -// } -// } -// else { -// if (ImGui::ImageButton(chartletManager->m_MoldMovePlatformEnable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// { -// m_SysParamWrapper->m_MoldAbsTestPos->SetValue(4); -// m_Axis->m_Mold->GetCtrl()->m_MoveAbsPos->SetValue(true); -// g_log->TraceInfo(_(u8"执行打印轴移动到基板缸平面位").c_str()); -// } -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"打印轴移动到基板缸平面位").c_str()); -// } -// } -// ImGui::EndTabItem(); -// } -// -// if (ImGui::BeginTabItem(_(u8"移载轴").c_str())) { -// ImGui::PushItemWidth(100); -// if (ImGui::InputScalar(_(u8"速度(mm/s)").c_str(), ImGuiDataType_Float, &loadCfgVal.speed, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) -// { -// loadCfg->m_Speed->SetValue(loadCfgVal.speed); -// g_log->TraceInfo(_(u8"更新移载轴速度:%.3f").c_str(), loadCfgVal.speed); -// } -// if (ImGui::InputScalar(_(u8"加速度(m/s²)").c_str(), ImGuiDataType_Float, &loadCfgVal.acc, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) -// { -// loadCfg->m_Acc->SetValue(loadCfgVal.acc); -// g_log->TraceInfo(_(u8"更新移载轴加速度:%.3f").c_str(), loadCfgVal.acc); -// } -// if (ImGui::InputScalar(_(u8"减速度(m/s2)").c_str(), ImGuiDataType_Float, &loadCfgVal.dec, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) -// { -// loadCfg->m_Dec->SetValue(loadCfgVal.dec); -// g_log->TraceInfo(_(u8"更新移载轴减速度:%.3f").c_str(), loadCfgVal.dec); -// } -// if (ImGui::InputScalar(_(u8"点动行程(μm)").c_str(), ImGuiDataType_Float, &loadCfgVal.rel, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { -// loadCfg->m_RefDistance->SetValue(loadCfgVal.rel); -// g_log->TraceInfo(_(u8"更新移载轴点动距离:%.3f").c_str(), loadCfgVal.rel); -// } -// ImGui::PopItemWidth(); -// if (g_Admin > USER_ADMIN) { -// ImGui::Dummy(ImVec2(0, 20)); -// -// if (load->m_MoveAbsPos) -// { -// if (m_SysParamWrapper->m_LoadAxisAbsTestPos->GetValue() == 3) -// { -// if (ImGui::ImageButton(chartletManager->m_LoadHandPosing->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// { -// m_Axis->m_Load->GetCtrl()->m_MoveAbsPos->SetValue(false); -// g_log->TraceInfo(_(u8"中断移载轴移动到轨道吊装位").c_str()); -// } -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"中断移载轴移动到轨道吊装位").c_str()); -// -// } -// else { -// ImGui::ImageButton(chartletManager->m_LoadHandPosDisable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"不能执行移载轴移动到轨道吊装位").c_str()); -// } -// } -// else { -// if (ImGui::ImageButton(chartletManager->m_LoadHandPosEnable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// { -// m_SysParamWrapper->m_LoadAxisAbsTestPos->SetValue(3); -// m_Axis->m_Load->GetCtrl()->m_MoveAbsPos->SetValue(true); -// g_log->TraceInfo(_(u8"执行移载轴移动到轨道吊装位").c_str()); -// } -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"移载轴移动到轨道吊装位").c_str()); -// } -// -// ImGui::SameLine(); -// if (load->m_MoveAbsPos) -// { -// if (m_SysParamWrapper->m_LoadAxisAbsTestPos->GetValue() == 1) -// { -// if (ImGui::ImageButton(chartletManager->m_LoadCleanPosing->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// { -// m_Axis->m_Load->GetCtrl()->m_MoveAbsPos->SetValue(false); -// g_log->TraceInfo(_(u8"中断移载轴移动到轨道清粉位").c_str()); -// } -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"中断移载轴移动到轨道清粉位").c_str()); -// -// } -// else { -// ImGui::ImageButton(chartletManager->m_LoadCleanPosDisable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"不能执行移载轴移动到轨道清粉位").c_str()); -// } -// } -// else { -// if (ImGui::ImageButton(chartletManager->m_LoadCleanPosEnable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// { -// m_SysParamWrapper->m_LoadAxisAbsTestPos->SetValue(1); -// m_Axis->m_Load->GetCtrl()->m_MoveAbsPos->SetValue(true); -// g_log->TraceInfo(_(u8"执行移载轴移动到轨道清粉位").c_str()); -// } -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"移载轴移动到轨道清粉位").c_str()); -// } -// ImGui::SameLine(); -// if (load->m_MoveAbsPos) -// { -// if (m_SysParamWrapper->m_LoadAxisAbsTestPos->GetValue() == 0) -// { -// if (ImGui::ImageButton(chartletManager->m_LoadPrintPosing->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// { -// m_Axis->m_Load->GetCtrl()->m_MoveAbsPos->SetValue(false); -// g_log->TraceInfo(_(u8"中断移载轴移动到轨道打印位").c_str()); -// } -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"中断移载轴移动到轨道打印位").c_str()); -// -// } -// else { -// ImGui::ImageButton(chartletManager->m_LoadPrintPosDisable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"不能执行移载轴移动到轨道打印位").c_str()); -// } -// } -// else { -// if (ImGui::ImageButton(chartletManager->m_LoadPrintPosEnable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// { -// m_SysParamWrapper->m_LoadAxisAbsTestPos->SetValue(0); -// m_Axis->m_Load->GetCtrl()->m_MoveAbsPos->SetValue(true); -// g_log->TraceInfo(_(u8"执行移载轴移动到轨道打印位").c_str()); -// } -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"移载轴移动到轨道打印位").c_str()); -// } -// } -// -// ImGui::EndTabItem(); -// } -// -// if (ImGui::BeginTabItem(_(u8"铺粉轴").c_str())) { -// ImGui::PushItemWidth(100); -// if (ImGui::InputScalar(_(u8"速度(mm/s)").c_str(), ImGuiDataType_Float, &armCfgVal.speed, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) -// { -// armCfg->m_Speed->SetValue(armCfgVal.speed); -// g_log->TraceInfo(_(u8"更新铺粉轴速度:%.3f").c_str(), armCfgVal.speed); -// } -// if (ImGui::InputScalar(_(u8"加速度(m/s²)").c_str(), ImGuiDataType_Float, &armCfgVal.acc, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) -// { -// armCfg->m_Acc->SetValue(armCfgVal.acc); -// g_log->TraceInfo(_(u8"更新铺粉轴加速度:%.3f").c_str(), armCfgVal.acc); -// } -// if (ImGui::InputScalar(_(u8"减速度(m/s2)").c_str(), ImGuiDataType_Float, &armCfgVal.dec, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) -// { -// armCfg->m_Dec->SetValue(armCfgVal.dec); -// g_log->TraceInfo(_(u8"更新铺粉轴减速度:%.3f").c_str(), armCfgVal.dec); -// } -// if (ImGui::InputScalar(_(u8"点动行程(μm)").c_str(), ImGuiDataType_Float, &armCfgVal.rel, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { -// armCfg->m_RefDistance->SetValue(armCfgVal.rel); -// g_log->TraceInfo(_(u8"更新铺粉轴点动距离:%.3f").c_str(), armCfgVal.rel); -// } -// ImGui::PopItemWidth(); -// if (g_Admin > USER_ADMIN) { -// ImGui::Dummy(ImVec2(0, 20)); -// -// if (arm->m_MoveAbsPos) -// { -// if (m_SysParamWrapper->m_ArmAbsTestPos->GetValue() == 0) -// { -// if (ImGui::ImageButton(chartletManager->m_ArmAcceptPosing->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// { -// m_Axis->m_Arm->GetCtrl()->m_MoveAbsPos->SetValue(false); -// g_log->TraceInfo(_(u8"中断铺粉轴移动到接粉位").c_str()); -// } -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"中断铺粉轴移动到接粉位").c_str()); -// -// } -// else { -// ImGui::ImageButton(chartletManager->m_ArmAcceptPosDisable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"不能执行铺粉轴移动到接粉位").c_str()); -// } -// } -// else { -// if (ImGui::ImageButton(chartletManager->m_ArmAcceptPosEnable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// { -// m_SysParamWrapper->m_ArmAbsTestPos->SetValue(0); -// m_Axis->m_Arm->GetCtrl()->m_MoveAbsPos->SetValue(true); -// g_log->TraceInfo(_(u8"执行铺粉轴移动到接粉位").c_str()); -// } -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"铺粉轴移动到接粉位").c_str()); -// } -// ImGui::SameLine(); -// if (arm->m_MoveAbsPos) -// { -// if (m_SysParamWrapper->m_ArmAbsTestPos->GetValue() == 1) -// { -// if (ImGui::ImageButton(chartletManager->m_ArmFrontDropPosing->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// { -// m_Axis->m_Arm->GetCtrl()->m_MoveAbsPos->SetValue(false); -// g_log->TraceInfo(_(u8"中断铺粉轴移动到前下粉位").c_str()); -// } -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"中断铺粉轴移动到前下粉位").c_str()); -// -// } -// else { -// ImGui::ImageButton(chartletManager->m_ArmFrontDropPosDisable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"不能执行铺粉轴移动到前下粉位").c_str()); -// } -// } -// else { -// if (ImGui::ImageButton(chartletManager->m_ArmFrontDropPosEnable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// { -// m_SysParamWrapper->m_ArmAbsTestPos->SetValue(1); -// m_Axis->m_Arm->GetCtrl()->m_MoveAbsPos->SetValue(true); -// g_log->TraceInfo(_(u8"执行铺粉轴移动到前下粉位").c_str()); -// } -// if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"铺粉轴移动到前下粉位").c_str()); -// } -// } -// -// ImGui::EndTabItem(); -// } -// -// if (ImGui::BeginTabItem(_(u8"供粉轴").c_str())) { -// ImGui::PushItemWidth(100); -// if (ImGui::InputScalar(_(u8"速度(mm/s)").c_str(), ImGuiDataType_Float, &supplyCfgVal.speed, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) -// { -// supplyCfg->m_Speed->SetValue(supplyCfgVal.speed); -// g_log->TraceInfo(_(u8"更新下粉轴速度:%.3f").c_str(), supplyCfgVal.speed); -// } -// if (ImGui::InputScalar(_(u8"加速度(m/s²)").c_str(), ImGuiDataType_Float, &supplyCfgVal.acc, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) -// { -// supplyCfg->m_Acc->SetValue(supplyCfgVal.acc); -// g_log->TraceInfo(_(u8"更新下粉轴加速度:%.3f").c_str(), supplyCfgVal.acc); -// } -// if (ImGui::InputScalar(_(u8"减速度(m/s2)").c_str(), ImGuiDataType_Float, &supplyCfgVal.dec, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) -// { -// supplyCfg->m_Dec->SetValue(supplyCfgVal.dec); -// g_log->TraceInfo(_(u8"更新下粉轴减速度:%.3f").c_str(), supplyCfgVal.dec); -// } -// if (ImGui::InputScalar(_(u8"粉格").c_str(), ImGuiDataType_Float, &supplyCfgVal.rel, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { -// supplyCfg->m_RefDistance->SetValue(supplyCfgVal.rel); -// g_log->TraceInfo(_(u8"更新下粉轴相对移动距离:%.3f").c_str(), supplyCfgVal.rel); -// } -// ImGui::PopItemWidth(); -// ImGui::EndTabItem(); -// } -// -// if (ImGui::BeginTabItem(_(u8"铺粉").c_str())) { -// AxisData ad; -// vector ss = { _(u8"双向铺粉"),_(u8"单向铺粉"),_(u8"不铺粉") ,_(u8"双向铺粉2") ,_(u8"单向铺粉2"),_(u8"单向铺粉3") }; -// m_SysParamWrapper->GetAxisData(ad); -// ImGui::PushItemWidth(120); -// if (ImGui::SemicolonCombo(_(u8"铺粉类型").c_str(), &ad.CoverType, ss)) { -// m_SysParamWrapper->m_CoverType->SetValue(ad.CoverType); -// g_log->TraceInfo(_(u8"更新铺粉方式:%d").c_str(), ad.CoverType); -// } -// -// if (ImGui::InputFloat(_(u8"打印铺粉速度(mm/s)").c_str(), &ad.CoverSpeed, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { -// m_SysParamWrapper->m_CoverSpeed->SetValue(ad.CoverSpeed); -// g_log->TraceInfo(_(u8"更新铺粉速度:%.3f").c_str(), ad.CoverSpeed); -// } -// if (ImGui::InputFloat(_(u8"打印单向铺粉返回变速(mm/s)").c_str(), &ad.CoverReturnSpeed, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { -// m_SysParamWrapper->m_CoverReturnSpeed->SetValue(ad.CoverReturnSpeed); -// g_log->TraceInfo(_(u8"更新打印单向返回速度:%.3f").c_str(), ad.CoverReturnSpeed); -// } -// if (ImGui::InputFloat(_(u8"打印单向铺粉距离(mm)").c_str(), &ad.CoverDistance, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { -// m_SysParamWrapper->m_CoverDistance->SetValue(ad.CoverDistance); -// g_log->TraceInfo(_(u8"更新打印单向铺粉距离:%.3f").c_str(), ad.CoverDistance); -// } -// if (ImGui::InputFloat(_(u8"打印铺粉层厚(μm)").c_str(), &ad.LayerThick, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { -// m_SysParamWrapper->m_LayerThick->SetValue(ad.LayerThick); -// g_log->TraceInfo(_(u8"更新打印铺粉层厚:%.3f").c_str(), ad.LayerThick); -// } -// if (ImGui::InputFloat(_(u8"打印间隙补偿(μm)").c_str(), &ad.FixGap, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { -// m_SysParamWrapper->m_FixGap->SetValue(ad.FixGap); -// g_log->TraceInfo(_(u8"更新打印间隙补偿:%.3f").c_str(), ad.FixGap); -// } -// if (ImGui::InputScalar(_(u8"打印铺粉格数").c_str(), ImGuiDataType_S16, &ad.SupplyCount, 0, 0, 0, ImGuiInputTextFlags_EnterReturnsTrue)) { -// m_SysParamWrapper->m_SupplyCount->SetValue(ad.SupplyCount); -// g_log->TraceInfo(_(u8"更新打印铺粉格数:%d").c_str(), ad.SupplyCount); -// } -// if (ImGui::InputScalar(_(u8"打印下粉时间(ms)").c_str(), ImGuiDataType_S16, &ad.SupplyTime, 0, 0, 0, ImGuiInputTextFlags_EnterReturnsTrue)) { -// m_SysParamWrapper->m_SupplyTime->SetValue(ad.SupplyTime); -// g_log->TraceInfo(_(u8"更新打印下粉时间:%d").c_str(), ad.SupplyTime); -// } -// if (ImGui::InputFloat(_(u8"铺粉调试层厚(μm)").c_str(), &ad.DebugLayerThick, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { -// m_SysParamWrapper->m_DebugLayerThick->SetValue(ad.DebugLayerThick); -// g_log->TraceInfo(_(u8"更新铺粉调试层厚:%.3f").c_str(), ad.DebugLayerThick); -// } -// if (ImGui::InputFloat(_(u8"铺粉调试间隙(μm)").c_str(), &ad.DebugFixGap, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { -// m_SysParamWrapper->m_DebugFixGap->SetValue(ad.DebugFixGap); -// g_log->TraceInfo(_(u8"更新铺粉调试间隙补偿:%.3f").c_str(), ad.DebugFixGap); -// } -// if (ImGui::InputScalar(_(u8"铺粉调试下粉时间(ms)").c_str(), ImGuiDataType_S16, &ad.DebugSupplyTime, 0, 0, 0, ImGuiInputTextFlags_EnterReturnsTrue)) { -// m_SysParamWrapper->m_DebugSupplyTime->SetValue(ad.DebugSupplyTime); -// g_log->TraceInfo(_(u8"更新铺粉调试下粉时间:%d").c_str(), ad.DebugSupplyTime); -// } -// if (ImGui::InputScalar(_(u8"铺粉调试格数").c_str(), ImGuiDataType_S16, &ad.DebugSupplyCount, 0, 0, 0, ImGuiInputTextFlags_EnterReturnsTrue)) { -// m_SysParamWrapper->m_DebugSupplyCount->SetValue(ad.DebugSupplyCount); -// g_log->TraceInfo(_(u8"更新铺粉调试格数:%d").c_str(), ad.DebugSupplyCount); -// } -// if (ImGui::InputFloat(_(u8"铺粉调试铺粉距离(mm)").c_str(), &ad.DebugCoverDistance, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { -// m_SysParamWrapper->m_DebugCoverDistance->SetValue(ad.DebugCoverDistance); -// g_log->TraceInfo(_(u8"更新铺粉调试距离:%.3f").c_str(), ad.DebugCoverDistance); -// } -// ImGui::PopItemWidth(); -// -// ImGui::Dummy(ImVec2(0, 20)); -// if (m_SignalStateWrapper->m_IsCovering->GetValue()) { -// ImGui::PushID("CoverTrigerStop"); -// if (ImGui::Button(_(u8"停止").c_str(), ImVec2(-1, 0))) { -// m_SignalStateWrapper->m_CoverTriger->SetValue(false); -// g_log->TraceInfo(_(u8"停止铺粉调试").c_str()); -// } -// ImGui::PopID(); -// } -// else { -// // if (m_Purifier->IsCoverWindSet()) -// // { -// // m_Purifier->ResetSlowWind(); -// // } -// if (ImGui::Button(_(u8"铺粉调试").c_str(), ImVec2(-1, 0))) { -// if (m_SignalStateWrapper->m_CoverEnable->GetValue()) { -// // if (m_ExtCfg->m_AutoCoverSlowWind && m_Purifier->IsWindActive()) { -// // m_Purifier->SetCoverWind(true); -// // } -// m_SignalStateWrapper->m_IsCoverDebug->SetValue(true); -// Sleep(50); -// m_SignalStateWrapper->m_ManualCoverTest->SetValue(true); -// Sleep(50); -// g_log->TraceInfo(_(u8"执行铺粉调试").c_str()); -// } -// else { -// g_Toast->AddToast(new ToastBean(_(u8"铺粉调试条件不成立").c_str(), 3000)); -// } -// } -// } -// ImGui::EndTabItem(); -// } -// if (g_Admin > USER_ADMIN) { -// if (ImGui::BeginTabItem(_(u8"控制").c_str())) { -// if (m_SignalStateWrapper->m_CylinderReachPrintRun->GetValue()) { -// ImGui::PushID("CylinderReachPrintTrigerStop"); -// if (ImGui::Button(_(u8"停止").c_str())) { -// m_SignalStateWrapper->m_CylinderReachPrintTriger->SetValue(false); -// } -// ImGui::PopID(); -// } -// else { -// -// ImGui::PushItemFlag(ImGuiItemFlags_Disabled, !m_SignalStateWrapper->m_CylinderReachPrintEnable->GetValue()); -// if (ImGui::Button(_(u8"移动缸体到打印位").c_str())) { -// if (m_SignalStateWrapper->m_CylinderReachPrintEnable->GetValue()) { -// m_SignalStateWrapper->m_CylinderReachPrintTriger->SetValue(true); -// g_log->TraceInfo(_(u8"执行移动缸体到打印位").c_str()); -// } -// else { -// g_Toast->AddToast(new ToastBean(_(u8"移动缸体到打印位条件不成立").c_str(), 3000)); -// } -// m_RunCfg->m_HadSetBasePlatformPoint = false; -// } -// ImGui::PopItemFlag(); -// } -// -// if (m_SignalStateWrapper->m_CylinderReachCleanRun->GetValue()) { -// ImGui::PushID("CylinderReachCleanTrigerStop"); -// if (ImGui::Button(_(u8"停止").c_str())) { -// m_SignalStateWrapper->m_CylinderReachCleanTriger->SetValue(false); -// } -// ImGui::PopID(); -// } -// else { -// ImGui::PushItemFlag(ImGuiItemFlags_Disabled, !m_SignalStateWrapper->m_CylinderReachCleanEnable->GetValue()); -// if (ImGui::Button(_(u8"移动缸体到清粉位").c_str())) { -// if (m_SignalStateWrapper->m_CylinderReachCleanEnable->GetValue()) { -// m_SignalStateWrapper->m_CylinderReachCleanTriger->SetValue(true); -// g_log->TraceInfo(_(u8"执行移动缸体到清粉位").c_str()); -// } -// else { -// g_Toast->AddToast(new ToastBean(_(u8"移动缸体到清粉位条件不成立").c_str(), 3000)); -// } -// -// } -// ImGui::PopItemFlag(); -// } -// -// -// if (m_SignalStateWrapper->m_CylinderPrintLoadRun->GetValue()) { -// ImGui::PushID("CylinderPrintLoadTrigerStop"); -// if (ImGui::Button(_(u8"停止").c_str())) { -// m_SignalStateWrapper->m_CylinderPrintLoadTriger->SetValue(false); -// } -// ImGui::PopID(); -// } -// else { -// ImGui::PushItemFlag(ImGuiItemFlags_Disabled, !m_SignalStateWrapper->m_CylinderPrintLoadEnable->GetValue()); -// if (ImGui::Button(_(u8"缸体打印位装载").c_str())) { -// if (m_SignalStateWrapper->m_CylinderPrintLoadEnable->GetValue()) { -// m_SignalStateWrapper->m_CylinderPrintLoadTriger->SetValue(true); -// g_log->TraceInfo(_(u8"执行缸体打印位装载").c_str()); -// } -// else { -// g_Toast->AddToast(new ToastBean(_(u8"缸体打印位装载条件不成立").c_str(), 3000)); -// } -// m_RunCfg->m_HadSetBasePlatformPoint = false; -// } -// ImGui::PopItemFlag(); -// } -// -// if (m_SignalStateWrapper->m_CylinderConnectCleanBoxRun->GetValue()) { -// ImGui::PushID("CylinderConnectCleanBoxTrigerStop"); -// if (ImGui::Button(_(u8"停止").c_str())) { -// m_SignalStateWrapper->m_CylinderConnectCleanBoxTriger->SetValue(false); -// } -// ImGui::PopID(); -// } -// else { -// ImGui::PushItemFlag(ImGuiItemFlags_Disabled, !m_SignalStateWrapper->m_CylinderConnectCleanBoxEnable->GetValue()); -// if (ImGui::Button(_(u8"缸体连接清粉箱").c_str())) { -// if (m_SignalStateWrapper->m_CylinderConnectCleanBoxEnable->GetValue()) { -// m_SignalStateWrapper->m_CylinderConnectCleanBoxTriger->SetValue(true); -// g_log->TraceInfo(_(u8"执行缸体连接清粉箱").c_str()); -// } -// else { -// g_Toast->AddToast(new ToastBean(_(u8"缸体连接清粉箱条件不成立").c_str(), 3000)); -// } -// } -// ImGui::PopItemFlag(); -// } -// -// if (m_SignalStateWrapper->m_CylinderPrintUnloadRun->GetValue()) { -// ImGui::PushID("CylinderPrintUnloadTrigerStop"); -// if (ImGui::Button(_(u8"停止").c_str())) { -// m_SignalStateWrapper->m_CylinderPrintUnloadTriger->SetValue(false); -// } -// ImGui::PopID(); -// } -// else { -// ImGui::PushItemFlag(ImGuiItemFlags_Disabled, !m_SignalStateWrapper->m_CylinderPrintUnloadEnable->GetValue()); -// if (ImGui::Button(_(u8"缸体打印位卸载").c_str())) { -// if (m_SignalStateWrapper->m_CylinderPrintUnloadEnable->GetValue()) { -// m_SignalStateWrapper->m_CylinderPrintUnloadTriger->SetValue(true); -// g_log->TraceInfo(_(u8"执行缸体打印位卸载").c_str()); -// } -// else { -// g_Toast->AddToast(new ToastBean(_(u8"缸体打印位卸载条件不成立").c_str(), 3000)); -// } -// m_RunCfg->m_HadSetBasePlatformPoint = false; -// } -// ImGui::PopItemFlag(); -// } -// -// if (m_SignalStateWrapper->m_CylinderDisconnectCleanBoxRun->GetValue()) { -// ImGui::PushID("CylinderDisconnectCleanBoxTrigerStop"); -// if (ImGui::Button(_(u8"停止").c_str())) { -// m_SignalStateWrapper->m_CylinderDisconnectCleanBoxTriger->SetValue(false); -// } -// ImGui::PopID(); -// } -// else { -// ImGui::PushItemFlag(ImGuiItemFlags_Disabled, !m_SignalStateWrapper->m_CylinderDisconnectCleanBoxEnable->GetValue()); -// if (ImGui::Button(_(u8"缸体脱离清粉箱").c_str())) { -// if (m_SignalStateWrapper->m_CylinderDisconnectCleanBoxEnable->GetValue()) { -// m_SignalStateWrapper->m_CylinderDisconnectCleanBoxTriger->SetValue(true); -// g_log->TraceInfo(_(u8"执行缸体脱离清粉箱").c_str()); -// } -// else { -// g_Toast->AddToast(new ToastBean(_(u8"缸体脱离清粉箱条件不成立").c_str(), 3000)); -// } -// } -// ImGui::PopItemFlag(); -// } -// -// ImGui::EndTabItem(); -// } -// } -// ImGui::EndTabBar(); -// ImGui::EndChild(); -// -// -// if (ImGui::Button(_(u8"运动急停").c_str(), ImVec2(tabwidth, 0))) { -// m_Axis->StopAll(); -// g_log->TraceInfo(_(u8"运动急停").c_str()); -// } -// -// ImGui::EndGroup(); -// ImGui::SameLine(); -// } -// -// ImGui::BeginChild("AxisCtrl", ImVec2(840, 670)); -// if (m_PowderAssist.isLeftExpand) { -// if (ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::HNARROW]->GetTex(), ImVec2(38, 50), ImVec2(0, 0), ImVec2(1, 1), 0)) { -// m_PowderAssist.isLeftExpand = !m_PowderAssist.isLeftExpand; -// } -// } -// else { -// if (ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::HEXPAND]->GetTex(), ImVec2(38, 50), ImVec2(0, 0), ImVec2(1, 1), 0)) { -// m_PowderAssist.isLeftExpand = !m_PowderAssist.isLeftExpand; -// } -// } -// -// ImGui::SameLine(); -// ImGui::BeginGroup(); -// if (ImGui::ToggleButton(_(u8"连续运动").c_str(), continue_move)) -// continue_move = !continue_move; -// ImGui::SameLine(); -// ImGui::Text(_(u8"连续运动").c_str()); -// -// ImGui::Dummy(ImVec2(0, 250)); -// -// if (ImGui::ImageButton(chartletManager->m_LoadOut->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) { -// LoadOut(); -// ImGui::OpenPopup(_(u8"移载载出").c_str()); -// g_log->TraceInfo(_(u8"执行移出").c_str()); -// } -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(_(u8"载出").c_str()); -// } -// ImGui::SameLine(); -// if (ImGui::ImageButton(chartletManager->m_LoadIn->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) { -// LoadIn(); -// ImGui::OpenPopup(_(u8"移载载入").c_str()); -// g_log->TraceInfo(_(u8"执行移入").c_str()); -// } -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(_(u8"载入").c_str()); -// } -// -// if (ImGui::BeginPopupModal(_(u8"移载载入").c_str(), NULL, ImGuiWindowFlags_AlwaysAutoResize)) { -// if (GetLoadInProcStep() == In_Start) { -// ImGui::Text(_(u8"移载开始载入").c_str()); -// } -// if (GetLoadInProcStep() == In_CylinderDisconnectCleanBox) { -// ImGui::Text(_(u8"缸体与清粉箱分离中").c_str()); -// } -// if (GetLoadInProcStep() == In_CylinderReachPrint) { -// ImGui::Text(_(u8"缸体到打印位运行中").c_str()); -// } -// if (GetLoadInProcStep() == In_CylinderPrintLoad) { -// ImGui::Text(_(u8"缸体打印位装载运行中").c_str()); -// } -// -// if (GetLoadInResult() == In_Intercept) { -// ImGui::TextColored(Toast::COLOR_ORANGE, GetLoadInfo().c_str()); -// if (ImGui::Button(_(u8"确定").c_str(), ImVec2(-1, 0))) -// { -// ImGui::CloseCurrentPopup(); -// } -// } -// else if (GetLoadInResult() == In_Success) { -// ImGui::TextColored(Toast::COLOR_GREEN, GetLoadInfo().c_str()); -// if (ImGui::Button(_(u8"确定").c_str(), ImVec2(-1, 0))) -// { -// ImGui::CloseCurrentPopup(); -// } -// } -// else if (GetLoadInResult() > In_Success) { -// ImGui::TextColored(Toast::COLOR_RED, GetLoadInfo().c_str()); -// if (ImGui::Button(_(u8"确定").c_str(), ImVec2(-1, 0))) -// { -// ImGui::CloseCurrentPopup(); -// } -// } -// -// if (IsLoadIn()) { -// if (ImGui::Button(_(u8"中断载入").c_str(), ImVec2(-1, 0))) -// { -// InterceptLoad(); -// } -// } -// ImGui::EndPopup(); -// } -// -// -// if (ImGui::BeginPopupModal(_(u8"移载载出").c_str(), NULL, ImGuiWindowFlags_AlwaysAutoResize)) { -// if (GetLoadOutProcSetp() == Out_Start) -// { -// ImGui::Text(_(u8"移载开始载出").c_str()); -// } -// if (GetLoadOutProcSetp() == Out_CylinderPrintUnload) -// { -// ImGui::Text(_(u8"缸体打印位卸载运行中").c_str()); -// } -// if (GetLoadOutProcSetp() == Out_CylinderReachClean) -// { -// ImGui::Text(_(u8"缸体到清粉位运行中").c_str()); -// } -// if (GetLoadOutProcSetp() == Out_CylinderConnectCleanBox) -// { -// ImGui::Text(_(u8"缸体与清粉箱连接中").c_str()); -// } -// if (GetLoadOutProcSetp() == Out_CylinderReachHand) -// { -// ImGui::Text(_(u8"缸体与吊装位运行中").c_str()); -// } -// -// if (GetLoadOutProcSetp() == Out_CylinderDisconnectCleanBox) -// { -// ImGui::Text(_(u8"缸体与清粉箱分离中").c_str()); -// } -// -// -// if (m_NeedWaitSelectOutPos) { -// vector combtemp = { _(u8"清粉位"),_(u8"吊装位") }; -// ImGui::PushItemWidth(120); -// ImGui::SemicolonCombo(_(u8"选择载出位置").c_str(), &m_SelectOutPos, combtemp); -// ImGui::PopItemWidth(); -// ImGui::SameLine(); -// if (ImGui::Button(_(u8"下一步").c_str())) -// { -// m_WaitSelectOutPosCommit = true; -// } -// } -// -// if (IsWaitConnectBoxCommit()) { -// if (ImGui::Button(_(u8"执行缸体与清粉箱连接").c_str())) -// { -// SetWaitConnectBoxCommit(false); -// } -// } -// -// if (GetLoadOutResult() == Out_Intercept) { -// ImGui::TextColored(Toast::COLOR_ORANGE, GetLoadInfo().c_str()); -// if (ImGui::Button(_(u8"确定").c_str(), ImVec2(-1, 0))) -// { -// ImGui::CloseCurrentPopup(); -// } -// } -// else if (GetLoadOutResult() == Out_Success) { -// ImGui::TextColored(Toast::COLOR_GREEN, GetLoadInfo().c_str()); -// if (ImGui::Button(_(u8"确定").c_str(), ImVec2(-1, 0))) -// { -// ImGui::CloseCurrentPopup(); -// } -// } -// else if (GetLoadOutResult() > Out_Success) { -// ImGui::TextColored(Toast::COLOR_RED, GetLoadInfo().c_str()); -// if (ImGui::Button(_(u8"确定").c_str(), ImVec2(-1, 0))) -// { -// ImGui::CloseCurrentPopup(); -// } -// } -// -// if (IsLoadOut()) { -// if (ImGui::Button(_(u8"中断载出").c_str(), ImVec2(-1, 0))) -// { -// InterceptLoad(); -// } -// } -// ImGui::EndPopup(); -// } -// -// ImGui::Dummy(ImVec2(0, 80)); -// ImGui::RadioButton(_(u8"移载轴").c_str(), &kb, GTS_AXIS_ID_LOAD); -// if (IsLoadAxisCanMoveLeft()) -// { -// ImGui::PushID("LoadMovePointLeft"); -// if (ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::LEFT_ARROW_GREEN]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) { -// m_Axis->m_Load->MovPoint(AxisConfig::ActiveDirect::LEFT); -// g_log->TraceInfo(_(u8"移载[%.3f]往左移动%.3f").c_str(), load->GetShowPos(), loadCfgVal.rel); -// } -// ImGui::PopID(); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(_(u8"移载轴左移 %.3fmm").c_str(), loadCfgVal.rel / 1000.0f); -// } -// if (kb == GTS_AXIS_ID_LOAD && !continue_move) { -// if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_LeftArrow), false)) { -// m_Axis->m_Load->MovPoint(AxisConfig::ActiveDirect::LEFT); -// g_log->TraceInfo(_(u8"移载[%.3f]往左移动%.3f").c_str(), load->GetShowPos(), loadCfgVal.rel); -// } -// } -// } -// else { -// ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::LEFT_ARROW_RED]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(GetLoadAxisCanotMoveLeftInfo().c_str()); -// } -// } -// -// ImGui::SameLine(); -// -// if (IsLoadAxisCanMoveRight()) -// { -// ImGui::PushID("LoadMovePointRight"); -// if (ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::RIGHT_ARROW_GREEN]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// { -// m_Axis->m_Load->MovPoint(AxisConfig::ActiveDirect::RIGHT); -// g_log->TraceInfo(_(u8"移载[%.3f]往右移动%.3f").c_str(), load->GetShowPos(), loadCfgVal.rel); -// } -// ImGui::PopID(); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(_(u8"移载轴右移 %.3fmm").c_str(), loadCfgVal.rel); -// } -// if (kb == GTS_AXIS_ID_LOAD && !continue_move) { -// if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_RightArrow), false)) { -// m_Axis->m_Load->MovPoint(AxisConfig::ActiveDirect::RIGHT); -// g_log->TraceInfo(_(u8"移载[%.3f]往右移动%.3f").c_str(), load->GetShowPos(), loadCfgVal.rel); -// } -// } -// } -// else { -// ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::RIGHT_ARROW_RED]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(GetLoadAxisCanotMoveRightInfo().c_str()); -// } -// } -// -// if (IsLoadAxisCanMoveLeft()) { -// ImGui::PushID("LoadMoveLimitLeft"); -// if (ImGui::ImageButtonEx(chartletManager->m_TextureMap[ChartletManager::LEFT_ARROW_GREEN_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) { -// if (!m_PowderAssist.isLoadLeftRepeat) { -// m_PowderAssist.isLoadLeftRepeat = true; -// m_Axis->m_Load->MovLimitStart(AxisConfig::ActiveDirect::LEFT); -// g_log->TraceInfo(_(u8"移载[%.3f]往左连续移动").c_str(), load->GetShowPos()); -// } -// } -// else { -// if (m_PowderAssist.isLoadLeftRepeat) -// { -// m_Axis->m_Load->MovLimitStop(AxisConfig::ActiveDirect::LEFT); -// m_PowderAssist.isLoadLeftRepeat = false; -// } -// } -// ImGui::PopID(); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(_(u8"移载轴左连续").c_str()); -// } -// } -// else { -// ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::LEFT_ARROW_RED_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(GetLoadAxisCanotMoveLeftInfo().c_str()); -// } -// if (m_PowderAssist.isLoadLeftRepeat) { -// m_Axis->m_Load->MovLimitStop(AxisConfig::ActiveDirect::LEFT); -// m_PowderAssist.isLoadLeftRepeat = false; -// } -// } -// -// if (kb == GTS_AXIS_ID_LOAD && continue_move) { -// if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_LeftArrow), false)) { -// if (IsLoadAxisCanMoveLeft()) { -// m_Axis->m_Load->MovLimitStart(AxisConfig::ActiveDirect::LEFT); -// g_log->TraceInfo(_(u8"移载[%.3f]往左连续移动").c_str(), load->GetShowPos()); -// } -// else { -// g_Toast->AddToast(new ToastBean(GetLoadAxisCanotMoveLeftInfo(), 5000, Toast::COLOR_ORANGE)); -// } -// } -// if (ImGui::IsWindowFocused() && ImGui::IsKeyReleased(ImGui::GetKeyIndex(ImGuiKey_LeftArrow))) -// m_Axis->m_Load->MovLimitStop(AxisConfig::ActiveDirect::LEFT); -// } -// -// ImGui::SameLine(); -// if (IsLoadAxisCanMoveRight()) { -// ImGui::PushID("LoadMoveLimitRight"); -// if (ImGui::ImageButtonEx(chartletManager->m_TextureMap[ChartletManager::RIGHT_ARROW_GREEN_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// { -// if (!m_PowderAssist.isLoadRightRepeat) { -// m_PowderAssist.isLoadRightRepeat = true; -// m_Axis->m_Load->MovLimitStart(AxisConfig::ActiveDirect::RIGHT); -// g_log->TraceInfo(_(u8"移载[%.3f]往右连续移动").c_str(), load->GetShowPos()); -// } -// -// } -// else { -// if (m_PowderAssist.isLoadRightRepeat) -// { -// m_Axis->m_Load->MovLimitStop(AxisConfig::ActiveDirect::RIGHT); -// m_PowderAssist.isLoadRightRepeat = false; -// } -// } -// ImGui::PopID(); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(_(u8"移载轴右连续").c_str()); -// } -// } -// else { -// ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::RIGHT_ARROW_RED_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(GetLoadAxisCanotMoveRightInfo().c_str()); -// } -// if (m_PowderAssist.isLoadRightRepeat) { -// m_Axis->m_Load->MovLimitStop(AxisConfig::ActiveDirect::RIGHT); -// m_PowderAssist.isLoadRightRepeat = false; -// } -// } -// if (kb == GTS_AXIS_ID_LOAD && continue_move) { -// if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_RightArrow), false)) -// { -// if (IsLoadAxisCanMoveRight()) { -// m_Axis->m_Load->MovLimitStart(AxisConfig::ActiveDirect::RIGHT); -// g_log->TraceInfo(_(u8"移载[%.3f]往右连续移动").c_str(), load->GetShowPos()); -// } -// else { -// g_Toast->AddToast(new ToastBean(GetLoadAxisCanotMoveRightInfo(), 5000, Toast::COLOR_ORANGE)); -// } -// } -// if (ImGui::IsWindowFocused() && ImGui::IsKeyReleased(ImGui::GetKeyIndex(ImGuiKey_RightArrow))) -// { -// m_Axis->m_Load->MovLimitStop(AxisConfig::ActiveDirect::RIGHT); -// } -// } -// ImGui::PushID("load_to_zero"); -// if (ImGui::ImageButton(chartletManager->m_ToZero->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// load->SetZeroPos(); -// ImGui::PopID(); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(_(u8"移栽轴位置清零").c_str()); -// } -// -// ImGui::EndGroup(); -// -// ImGui::SameLine(); -// ImGui::BeginGroup(); -// -// //ImGui::Dummy(ImVec2(500,1)); -// ImGui::BeginChild("SupplyCtrl", ImVec2(500, 160)); -// ImGui::BeginGroup(); -// ImGui::Text(_(u8"移栽轴:%.3f").c_str(), load->GetShowPos() / 1000.0f); -// ImGui::Text(_(u8"成型缸:%.3f").c_str(), mold->GetShowPos() / 1000.0f); -// ImGui::Text(_(u8"铺粉臂:%.3f").c_str(), arm->GetShowPos() / 1000.0f); -// ImGui::EndGroup(); -// ImGui::SameLine(350); -// ImGui::BeginGroup(); -// ImGui::RadioButton(_(u8"供粉轴").c_str(), &kb, GTS_AXIS_ID_SUPPLY); -// -// -// ImGui::PushID("SupplyMovePointFront"); -// if (ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::DOWN_ARROW_GREEN]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) { -// m_Axis->m_Supply->MovPoint(AxisConfig::ActiveDirect::FRONT); -// } -// ImGui::PopID(); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(_(u8"下粉轴前转%.2f格").c_str(), supplyCfgVal.rel); -// } -// if (kb == GTS_AXIS_ID_SUPPLY && !continue_move) { -// if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_DownArrow), false)) { -// m_Axis->m_Supply->MovPoint(AxisConfig::ActiveDirect::FRONT); -// } -// } -// ImGui::SameLine(); -// ImGui::PushID("SupplyMoveLimitFront"); -// if (ImGui::ImageButtonEx(chartletManager->m_TextureMap[ChartletManager::DOWN_ARROW_GREEN_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) { -// if (!m_PowderAssist.isSupplyNegativeRepeat) { -// m_PowderAssist.isSupplyNegativeRepeat = true; -// m_Axis->m_Supply->MovLimitStart(AxisConfig::ActiveDirect::FRONT); -// //OutputDebugString("left\n"); -// } -// } -// else { -// if (m_PowderAssist.isSupplyNegativeRepeat) -// { -// m_Axis->m_Supply->MovLimitStop(AxisConfig::ActiveDirect::FRONT); -// m_PowderAssist.isSupplyNegativeRepeat = false; -// //OutputDebugString("stop\n"); -// } -// } -// ImGui::PopID(); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(_(u8"供粉轴左连续").c_str()); -// } -// if (kb == GTS_AXIS_ID_SUPPLY && continue_move) { -// if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_DownArrow), false)) { -// m_Axis->m_Supply->MovLimitStart(AxisConfig::ActiveDirect::FRONT); -// } -// if (ImGui::IsWindowFocused() && ImGui::IsKeyReleased(ImGui::GetKeyIndex(ImGuiKey_DownArrow))) -// m_Axis->m_Supply->MovLimitStop(AxisConfig::ActiveDirect::FRONT); -// } -// -// -// ImGui::EndGroup(); -// ImGui::EndChild(); -// -// MotionDrawAssist assit; -// -// AxisStateValue loadvalue; -// load->GetValue(loadvalue); -// AxisData axisData; -// m_SysParamWrapper->GetAxisData(axisData); -// float loadposdif = axisData.LoadAxisTrackCleanPos - axisData.LoadAxisTrackPrintPos; -// if (loadposdif != 0.0f)assit.loadRPos = (loadvalue.Pos - axisData.LoadAxisTrackPrintPos) / loadposdif; -// else assit.loadRPos = 0.0f; -// -// assit.loadRPos = assit.loadRPos > 1.0f ? 1.0f : assit.loadRPos; -// assit.loadRPos = assit.loadRPos < 0.0f ? 0.0f : assit.loadRPos; -// -// /*assit.loadRPos = load->m_RPos>1.0f ? 1.0f : load->m_RPos; -// int cylinderState = m_SignalState.m_CylinderState; -// if (cylinderState == CylinderInCleanUnConnectBox || -// cylinderState == CylinderInCleanConnectedBox || -// cylinderState == CylinderInHand) { -// assit.loadRPos = 1.0f; -// }*/ -// -// assit.moldRpos = mold->m_RPos>1.0f ? 1.0f : mold->m_RPos; -// assit.armRPos = arm->m_RPos; -// assit.isCleanPressure = true; -// assit.isPrintPressure = true; -// assit.isPrintMoldSupprt = false; -// assit.isPrintJackup = false; -// assit.isInPrintPos = (m_SignalState.m_CylinderState == CylinderInPrintLoaded || m_SignalState.m_CylinderState == CylinderInPrintUnLoaded); -// assit.isCleanClose = true; -// if (m_IOCfgWrapper->m_Clean3RCylinderContact)assit.isCleanConnect = m_IOCfgWrapper->m_Clean3RCylinderContact->IsActive(); -// ImGui::Powder1500V1(assit); -// ImGui::EndGroup(); -// -// ImGui::SameLine(); -// ImGui::BeginGroup(); -// ImGui::Dummy(ImVec2(0, 170)); -// ImGui::RadioButton(_(u8"铺粉臂").c_str(), &kb, GTS_AXIS_ID_ARM); -// if (IsArmCanMoveBack()) { -// ImGui::PushID("ArmMovPointBack"); -// if (ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::UP_ARROW_GREEN]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// { -// m_Axis->m_Arm->MovPoint(AxisConfig::ActiveDirect::BACK); -// } -// ImGui::PopID(); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(_(u8"铺粉轴后移 %.3fmm").c_str(), armCfgVal.rel / 1000.0f); -// } -// if (kb == GTS_AXIS_ID_ARM && !continue_move) { -// if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_UpArrow), false)) { -// m_Axis->m_Arm->MovPoint(AxisConfig::ActiveDirect::BACK); -// } -// } -// } -// else { -// ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::UP_ARROW_RED]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(GetArmCanotMoveBackInfo().c_str()); -// } -// } -// -// ImGui::SameLine(); -// if (IsArmCanMoveBack()) { -// ImGui::PushID("ArmMoveLimitBack"); -// if (ImGui::ImageButtonEx(chartletManager->m_TextureMap[ChartletManager::UP_ARROW_GREEN_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// { -// if (!m_PowderAssist.isArmBackRepeat) { -// m_PowderAssist.isArmBackRepeat = true; -// m_Axis->m_Arm->MovLimitStart(AxisConfig::ActiveDirect::BACK); -// } -// } -// else { -// if (m_PowderAssist.isArmBackRepeat) -// { -// m_Axis->m_Arm->MovLimitStop(AxisConfig::ActiveDirect::BACK); -// m_PowderAssist.isArmBackRepeat = false; -// } -// } -// ImGui::PopID(); -// -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(_(u8"铺粉轴后连续").c_str()); -// } -// } -// else { -// ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::UP_ARROW_RED_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(GetArmCanotMoveBackInfo().c_str()); -// } -// if (m_PowderAssist.isArmBackRepeat) { -// m_Axis->m_Arm->MovLimitStop(AxisConfig::ActiveDirect::BACK); -// m_PowderAssist.isArmBackRepeat = false; -// } -// } -// if (kb == GTS_AXIS_ID_ARM && continue_move) { -// if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_UpArrow), false)) -// { -// if (IsArmCanMoveBack()) { -// m_Axis->m_Arm->MovLimitStart(AxisConfig::ActiveDirect::BACK); -// } -// else { -// g_Toast->AddToast(new ToastBean(GetArmCanotMoveBackInfo(), 5000, Toast::COLOR_ORANGE)); -// } -// } -// if (ImGui::IsWindowFocused() && ImGui::IsKeyReleased(ImGui::GetKeyIndex(ImGuiKey_UpArrow))) -// { -// m_Axis->m_Arm->MovLimitStop(AxisConfig::ActiveDirect::BACK); -// } -// } -// -// if (IsArmCanMoveFront()) { -// ImGui::PushID("ArmMovPointFront"); -// if (ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::DOWN_ARROW_GREEN]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) { -// m_Axis->m_Arm->MovPoint(AxisConfig::ActiveDirect::FRONT); -// } -// ImGui::PopID(); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(_(u8"铺粉轴前移 %.3fmm").c_str(), armCfgVal.rel / 1000.0f); -// } -// -// if (kb == GTS_AXIS_ID_ARM && !continue_move) { -// if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_DownArrow), false)) { -// m_Axis->m_Arm->MovPoint(AxisConfig::ActiveDirect::FRONT); -// } -// } -// } -// else { -// ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::DOWN_ARROW_RED]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(GetArmCanotMoveFrontInfo().c_str()); -// } -// } -// -// ImGui::SameLine(); -// -// if (IsArmCanMoveFront()) { -// ImGui::PushID("ArmMoveLimitFront"); -// if (ImGui::ImageButtonEx(chartletManager->m_TextureMap[ChartletManager::DOWN_ARROW_GREEN_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) { -// if (!m_PowderAssist.isArmFrontRepeat) { -// m_PowderAssist.isArmFrontRepeat = true; -// m_Axis->m_Arm->MovLimitStart(AxisConfig::ActiveDirect::FRONT); -// } -// } -// else { -// if (m_PowderAssist.isArmFrontRepeat) -// { -// m_Axis->m_Arm->MovLimitStop(AxisConfig::ActiveDirect::FRONT); -// m_PowderAssist.isArmFrontRepeat = false; -// } -// } -// ImGui::PopID(); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(_(u8"铺粉轴前连续").c_str()); -// } -// } -// else { -// ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::DOWN_ARROW_RED_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(GetArmCanotMoveBackInfo().c_str()); -// } -// if (m_PowderAssist.isArmFrontRepeat) { -// m_Axis->m_Arm->MovLimitStop(AxisConfig::ActiveDirect::FRONT); -// m_PowderAssist.isArmFrontRepeat = false; -// } -// } -// if (kb == GTS_AXIS_ID_ARM && continue_move) { -// if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_DownArrow), false)) { -// if (IsArmCanMoveFront()) { -// m_Axis->m_Arm->MovLimitStart(AxisConfig::ActiveDirect::FRONT); -// } -// else { -// g_Toast->AddToast(new ToastBean(GetArmCanotMoveBackInfo(), 5000, Toast::COLOR_ORANGE)); -// } -// } -// if (ImGui::IsWindowFocused() && ImGui::IsKeyReleased(ImGui::GetKeyIndex(ImGuiKey_DownArrow))) -// m_Axis->m_Arm->MovLimitStop(AxisConfig::ActiveDirect::FRONT); -// } -// -// ImGui::PushID("arm_to_zero"); -// if (ImGui::ImageButton(chartletManager->m_ToZero->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// arm->SetZeroPos(); -// ImGui::PopID(); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(_(u8"铺粉轴位置清零").c_str()); -// } -// if (m_AxisRecordWrapper->m_PCArmOverLimitAlarm->GetValue()) -// { -// ImGui::SameLine(); -// ImGui::PushID("arm_alarm_remove"); -// if (ImGui::ImageButton(chartletManager->m_AlarmRemove->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// { -// m_AxisRecordWrapper->m_PCArmOverLimitAlarmRemove->SetValue(true); -// } -// ImGui::PopID(); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(_(u8"铺粉轴越限解除").c_str()); -// } -// } -// ImGui::Dummy(ImVec2(0, 35)); -// ImGui::RadioButton(_(u8"成型缸").c_str(), &kb, GTS_AXIS_ID_MOLD); -// if (IsMoldCanMoveUp()) { -// ImGui::PushID("MoldMovePointUp"); -// if (ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::UP_ARROW_GREEN]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) { -// m_Axis->m_Mold->MovPoint(AxisConfig::ActiveDirect::UP); -// g_log->TraceInfo(_(u8"升降[%.3f]往上移动%.3f").c_str(), mold->GetShowPos(), moldCfgVal.rel); -// } -// ImGui::PopID(); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(_(u8"成型缸上移 %.3fmm").c_str(), moldCfgVal.rel / 1000.0f); -// } -// if (kb == GTS_AXIS_ID_MOLD && !continue_move) { -// if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_UpArrow), false)) { -// m_Axis->m_Mold->MovPoint(AxisConfig::ActiveDirect::UP); -// g_log->TraceInfo(_(u8"升降[%.3f]往上移动%.3f").c_str(), mold->GetShowPos(), moldCfgVal.rel); -// } -// } -// } -// else { -// ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::UP_ARROW_RED]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(GetMoldCanotUpInfo().c_str()); -// } -// } -// -// ImGui::SameLine(); -// if (IsMoldCanMoveUp()) { -// ImGui::PushID("MoldMoveLimitUp"); -// if (ImGui::ImageButtonEx(chartletManager->m_TextureMap[ChartletManager::UP_ARROW_GREEN_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) { -// if (!m_PowderAssist.isMoldUpRepeat) { -// m_PowderAssist.isMoldUpRepeat = true; -// m_Axis->m_Mold->MovLimitStart(AxisConfig::ActiveDirect::UP); -// g_log->TraceInfo(_(u8"升降[%.3f]往上连续移动").c_str(), mold->GetShowPos()); -// } -// } -// else { -// if (m_PowderAssist.isMoldUpRepeat) -// { -// m_Axis->m_Mold->MovLimitStop(AxisConfig::ActiveDirect::UP); -// m_PowderAssist.isMoldUpRepeat = false; -// } -// } -// ImGui::PopID(); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(_(u8"成型缸上连续").c_str()); -// } -// } -// else { -// ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::UP_ARROW_RED_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(GetMoldCanotUpInfo().c_str()); -// } -// if (m_PowderAssist.isMoldUpRepeat) { -// m_Axis->m_Mold->MovLimitStop(AxisConfig::ActiveDirect::UP); -// m_PowderAssist.isMoldUpRepeat = false; -// } -// } -// if (kb == GTS_AXIS_ID_MOLD && continue_move) { -// if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_UpArrow), false)) { -// if (IsMoldCanMoveUp()) { -// m_Axis->m_Mold->MovLimitStart(AxisConfig::ActiveDirect::UP); -// g_log->TraceInfo(_(u8"升降[%.3f]往上连续移动").c_str(), mold->GetShowPos()); -// } -// else { -// g_Toast->AddToast(new ToastBean(GetMoldCanotUpInfo(), 5000, Toast::COLOR_ORANGE)); -// } -// } -// if (ImGui::IsWindowFocused() && ImGui::IsKeyReleased(ImGui::GetKeyIndex(ImGuiKey_UpArrow))) -// m_Axis->m_Mold->MovLimitStop(AxisConfig::ActiveDirect::UP); -// } -// -// if (IsMoldCanMoveDown()) { -// ImGui::PushID("MoldMovePointDown"); -// if (ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::DOWN_ARROW_GREEN]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// { -// m_Axis->m_Mold->MovPoint(AxisConfig::ActiveDirect::DOWN); -// g_log->TraceInfo(_(u8"升降[%.3f]往下移动%.3f").c_str(), mold->GetShowPos(), moldCfgVal.rel); -// } -// ImGui::PopID(); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(_(u8"成型缸下移 %.3fmm").c_str(), moldCfgVal.rel / 1000.0f); -// } -// if (kb == GTS_AXIS_ID_MOLD && !continue_move) { -// if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_DownArrow), false)) { -// m_Axis->m_Mold->MovPoint(AxisConfig::ActiveDirect::DOWN); -// g_log->TraceInfo(_(u8"升降[%.3f]往下移动%.3f").c_str(), mold->GetShowPos(), moldCfgVal.rel); -// } -// } -// } -// else { -// ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::DOWN_ARROW_RED]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(GetMoldCanotDownInfo().c_str()); -// } -// } -// -// ImGui::SameLine(); -// -// if (IsMoldCanMoveDown()) { -// ImGui::PushID("MoldMoveLimitDown"); -// if (ImGui::ImageButtonEx(chartletManager->m_TextureMap[ChartletManager::DOWN_ARROW_GREEN_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// { -// if (!m_PowderAssist.isMoldDownRepeat) { -// m_PowderAssist.isMoldDownRepeat = true; -// m_Axis->m_Mold->MovLimitStart(AxisConfig::ActiveDirect::DOWN); -// g_log->TraceInfo(_(u8"升降[%.3f]往下连续移动").c_str(), mold->GetShowPos()); -// } -// } -// else { -// if (m_PowderAssist.isMoldDownRepeat) -// { -// m_Axis->m_Mold->MovLimitStop(AxisConfig::ActiveDirect::DOWN); -// m_PowderAssist.isMoldDownRepeat = false; -// } -// } -// ImGui::PopID(); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(_(u8"成型缸下连续").c_str()); -// } -// -// } -// else { -// ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::DOWN_ARROW_RED_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(GetMoldCanotDownInfo().c_str()); -// } -// if (m_PowderAssist.isMoldDownRepeat) { -// m_Axis->m_Mold->MovLimitStop(AxisConfig::ActiveDirect::DOWN); -// m_PowderAssist.isMoldDownRepeat = false; -// } -// } -// if (kb == GTS_AXIS_ID_MOLD && continue_move) { -// if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_DownArrow), false)) -// { -// if (IsMoldCanMoveDown()) { -// m_Axis->m_Mold->MovLimitStart(AxisConfig::ActiveDirect::DOWN); -// g_log->TraceInfo(_(u8"升降[%.3f]往连续下移动").c_str(), mold->GetShowPos()); -// } -// else -// { -// g_Toast->AddToast(new ToastBean(GetMoldCanotDownInfo(), 5000, Toast::COLOR_ORANGE)); -// } -// -// } -// if (ImGui::IsWindowFocused() && ImGui::IsKeyReleased(ImGui::GetKeyIndex(ImGuiKey_DownArrow))) -// { -// m_Axis->m_Mold->MovLimitStop(AxisConfig::ActiveDirect::DOWN); -// } -// } -// ImGui::PushID("mold_to_zero"); -// if (ImGui::ImageButton(chartletManager->m_ToZero->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) -// mold->SetZeroPos(); -// ImGui::PopID(); -// if (ImGui::IsItemHovered()) { -// ImGui::SetTooltip(_(u8"成型缸位置清零").c_str()); -// } -// ImGui::EndGroup(); -// -// ImGui::EndChild(); -// -// ImGui::End(); -// -//} +//{} + +void HBD1200::DrawPowderCtrl(bool* winShow) +{ + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(4, 8)); + ImGui::Begin(_(u8"铺粉装置调试").c_str(), winShow, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoDocking | ImGuiWindowFlags_NoNav); + ImGui::PopStyleVar(); + + int dstepflag = 1; + double fstepflag = 1.0; + long lstepflag = 1; + static int kb = GTS_AXIS_ID_ARM; + static bool continue_move = false; + + //CoverCfg* coverCfg = m_CoverCfg; + MainAxisState* pMold = m_Axis->m_Mold->GetState(); + //MainAxisState* ele = m_Axis->m_Clean->GetState(); + AxisState* pLoad = m_Axis->m_Load->GetState(); + AxisState* pArm = m_Axis->m_Arm->GetState(); + AxisState* pSupply = m_Axis->m_Supply->GetState(); + + AxisConfig* armCfg = m_Axis->m_Arm->GetConfig(); + AxisConfig::CfgValue armCfgVal; + armCfg->GetValue(armCfgVal); + AxisConfig* moldCfg = m_Axis->m_Mold->GetConfig(); + AxisConfig::CfgValue moldCfgVal; + moldCfg->GetValue(moldCfgVal); + //AxisConfig* cleanCfg = m_Axis->m_Clean->GetConfig(); + //AxisConfig::CfgValue cleanCfgVal; + //cleanCfg->GetValue(cleanCfgVal); + AxisConfig* loadCfg = m_Axis->m_Load->GetConfig(); + AxisConfig::CfgValue loadCfgVal; + loadCfg->GetValue(loadCfgVal); + AxisConfig* supplyCfg = m_Axis->m_Supply->GetConfig(); + AxisConfig::CfgValue supplyCfgVal; + supplyCfg->GetValue(supplyCfgVal); + + ChartletManager* chartletManager = ChartletManager::GetInstance(); + ImVec2 wpos = ImGui::GetWindowPos(); + SignalService::GetInstance().GetSignalState(m_SignalState); + if (m_PowderAssist.isLeftExpand) + { + ImGui::BeginGroup(); + vector tabs; + tabs.push_back(_(u8"成型缸")); + tabs.push_back(_(u8"移载轴")); + tabs.push_back(_(u8"铺粉轴")); + tabs.push_back(_(u8"供粉轴")); + tabs.push_back(_(u8"铺粉")); + tabs.push_back(_(u8"控制")); + float tabwidth = 0.f; + for (size_t tindex = 0; tindex < tabs.size(); tindex++) { + tabwidth = tabwidth + ImGui::CalcTextSize(tabs[tindex].c_str(), 0).x + 15; + } + ImVec2 showSize = ImVec2(tabwidth, 600); + + ImGui::BeginChild("AxisSettingChild", showSize, false, ImGuiWindowFlags_NoNav); + ImGui::BeginTabBar("AxisSetting"); + if (ImGui::BeginTabItem(_(u8"成型缸").c_str())) { + ImGui::PushItemWidth(100); + if (ImGui::InputScalar(_(u8"速度(mm/s)").c_str(), ImGuiDataType_Float, &moldCfgVal.speed, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) + { + moldCfg->m_Speed->SetValue(moldCfgVal.speed); + g_log->TraceInfo(_(u8"更改成型缸速度:%.3f").c_str(), moldCfgVal.speed); + } + if (ImGui::InputScalar(_(u8"加速度(m/s²)").c_str(), ImGuiDataType_Float, &moldCfgVal.acc, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) + { + moldCfg->m_Acc->SetValue(moldCfgVal.acc); + g_log->TraceInfo(_(u8"更改成型缸加速度:%.3f").c_str(), moldCfgVal.acc); + } + if (ImGui::InputScalar(_(u8"减速度(m/s2)").c_str(), ImGuiDataType_Float, &moldCfgVal.dec, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) + { + moldCfg->m_Dec->SetValue(moldCfgVal.dec); + g_log->TraceInfo(_(u8"更新成型缸减速度:%.3f").c_str(), moldCfgVal.dec); + } + if (ImGui::InputScalar(_(u8"点动行程(μm)").c_str(), ImGuiDataType_Float, &moldCfgVal.rel, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { + moldCfg->m_RefDistance->SetValue(moldCfgVal.rel); + g_log->TraceInfo(_(u8"更改成型缸点动行程:%.3f").c_str(), moldCfgVal.rel); + } + ImGui::PopItemWidth(); + + if ((g_Admin > USER_ADMIN)) { + ImGui::Dummy(ImVec2(0, 20)); + if (pMold->m_MoveAbsPos) + { + if (m_SysParamWrapper->m_MoldAbsTestPos->GetValue() == 0) + { + if (ImGui::ImageButton(chartletManager->m_MoldMoveDownesting->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + { + m_Axis->m_Mold->GetCtrl()->m_MoveAbsPos->SetValue(false); + g_log->TraceInfo(_(u8"中断打印升降轴移动到安全位").c_str()); + } + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"打印升降轴移动到安全位").c_str()); + } + else { + ImGui::ImageButton(chartletManager->m_MoldMoveDownestDisable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"不能执行打印升降轴移动到安全位").c_str()); + } + } + else { + if (ImGui::ImageButton(chartletManager->m_MoldMoveDownestEnable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + { + m_SysParamWrapper->m_MoldAbsTestPos->SetValue(0); + m_Axis->m_Mold->GetCtrl()->m_MoveAbsPos->SetValue(true); + g_log->TraceInfo(_(u8"执行打印升降轴移动到安全位").c_str()); + } + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"打印升降轴移动到安全位").c_str()); + } + + ImGui::SameLine(); + + if (pMold->m_MoveAbsPos) + { + if (m_SysParamWrapper->m_MoldAbsTestPos->GetValue() == 3) + { + if (ImGui::ImageButton(chartletManager->m_MoldMovePlatformBottoming->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + { + m_Axis->m_Mold->GetCtrl()->m_MoveAbsPos->SetValue(false); + g_log->TraceInfo(_(u8"中断打印轴移动到底座缸平面位").c_str()); + } + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"中断打印轴移动到底座缸平面位").c_str()); + } + else { + ImGui::ImageButton(chartletManager->m_MoldMovePlatformBottomDisable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"不能执行打印轴移动到底座缸平面位").c_str()); + } + } + else { + if (ImGui::ImageButton(chartletManager->m_MoldMovePlatformBottomEnable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + { + m_SysParamWrapper->m_MoldAbsTestPos->SetValue(3); + m_Axis->m_Mold->GetCtrl()->m_MoveAbsPos->SetValue(true); + g_log->TraceInfo(_(u8"执行打印轴移动到底座缸平面位").c_str()); + } + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"打印轴移动到底座缸平面位").c_str()); + } + ImGui::SameLine(); + if (pMold->m_MoveAbsPos) + { + if (m_SysParamWrapper->m_MoldAbsTestPos->GetValue() == 4) + { + if (ImGui::ImageButton(chartletManager->m_MoldMovePlatforming->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + { + m_Axis->m_Mold->GetCtrl()->m_MoveAbsPos->SetValue(false); + g_log->TraceInfo(_(u8"中断打印轴移动到基板缸平面位").c_str()); + } + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"中断打印轴移动到基板缸平面位").c_str()); + + } + else { + ImGui::ImageButton(chartletManager->m_MoldMovePlatformDisable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"不能执行打印轴移动到基板缸平面位").c_str()); + } + } + else { + if (ImGui::ImageButton(chartletManager->m_MoldMovePlatformEnable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + { + m_SysParamWrapper->m_MoldAbsTestPos->SetValue(4); + m_Axis->m_Mold->GetCtrl()->m_MoveAbsPos->SetValue(true); + g_log->TraceInfo(_(u8"执行打印轴移动到基板缸平面位").c_str()); + } + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"打印轴移动到基板缸平面位").c_str()); + } + } + ImGui::EndTabItem(); + } + + if (ImGui::BeginTabItem(_(u8"移载轴").c_str())) { + ImGui::PushItemWidth(100); + if (ImGui::InputScalar(_(u8"速度(mm/s)").c_str(), ImGuiDataType_Float, &loadCfgVal.speed, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) + { + loadCfg->m_Speed->SetValue(loadCfgVal.speed); + g_log->TraceInfo(_(u8"更新移载轴速度:%.3f").c_str(), loadCfgVal.speed); + } + if (ImGui::InputScalar(_(u8"加速度(m/s²)").c_str(), ImGuiDataType_Float, &loadCfgVal.acc, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) + { + loadCfg->m_Acc->SetValue(loadCfgVal.acc); + g_log->TraceInfo(_(u8"更新移载轴加速度:%.3f").c_str(), loadCfgVal.acc); + } + if (ImGui::InputScalar(_(u8"减速度(m/s2)").c_str(), ImGuiDataType_Float, &loadCfgVal.dec, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) + { + loadCfg->m_Dec->SetValue(loadCfgVal.dec); + g_log->TraceInfo(_(u8"更新移载轴减速度:%.3f").c_str(), loadCfgVal.dec); + } + if (ImGui::InputScalar(_(u8"点动行程(μm)").c_str(), ImGuiDataType_Float, &loadCfgVal.rel, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { + loadCfg->m_RefDistance->SetValue(loadCfgVal.rel); + g_log->TraceInfo(_(u8"更新移载轴点动距离:%.3f").c_str(), loadCfgVal.rel); + } + ImGui::PopItemWidth(); + if (g_Admin > USER_ADMIN) { + ImGui::Dummy(ImVec2(0, 20)); + + if (pLoad->m_MoveAbsPos) + { + if (m_SysParamWrapper->m_LoadAxisAbsTestPos->GetValue() == 3) + { + if (ImGui::ImageButton(chartletManager->m_LoadHandPosing->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + { + m_Axis->m_Load->GetCtrl()->m_MoveAbsPos->SetValue(false); + g_log->TraceInfo(_(u8"中断移载轴移动到轨道吊装位").c_str()); + } + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"中断移载轴移动到轨道吊装位").c_str()); + + } + else { + ImGui::ImageButton(chartletManager->m_LoadHandPosDisable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"不能执行移载轴移动到轨道吊装位").c_str()); + } + } + else { + if (ImGui::ImageButton(chartletManager->m_LoadHandPosEnable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + { + m_SysParamWrapper->m_LoadAxisAbsTestPos->SetValue(3); + m_Axis->m_Load->GetCtrl()->m_MoveAbsPos->SetValue(true); + g_log->TraceInfo(_(u8"执行移载轴移动到轨道吊装位").c_str()); + } + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"移载轴移动到轨道吊装位").c_str()); + } + + ImGui::SameLine(); + if (pLoad->m_MoveAbsPos) + { + if (m_SysParamWrapper->m_LoadAxisAbsTestPos->GetValue() == 1) + { + if (ImGui::ImageButton(chartletManager->m_LoadCleanPosing->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + { + m_Axis->m_Load->GetCtrl()->m_MoveAbsPos->SetValue(false); + g_log->TraceInfo(_(u8"中断移载轴移动到轨道清粉位").c_str()); + } + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"中断移载轴移动到轨道清粉位").c_str()); + + } + else { + ImGui::ImageButton(chartletManager->m_LoadCleanPosDisable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"不能执行移载轴移动到轨道清粉位").c_str()); + } + } + else { + if (ImGui::ImageButton(chartletManager->m_LoadCleanPosEnable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + { + m_SysParamWrapper->m_LoadAxisAbsTestPos->SetValue(1); + m_Axis->m_Load->GetCtrl()->m_MoveAbsPos->SetValue(true); + g_log->TraceInfo(_(u8"执行移载轴移动到轨道清粉位").c_str()); + } + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"移载轴移动到轨道清粉位").c_str()); + } + ImGui::SameLine(); + if (pLoad->m_MoveAbsPos) + { + if (m_SysParamWrapper->m_LoadAxisAbsTestPos->GetValue() == 0) + { + if (ImGui::ImageButton(chartletManager->m_LoadPrintPosing->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + { + m_Axis->m_Load->GetCtrl()->m_MoveAbsPos->SetValue(false); + g_log->TraceInfo(_(u8"中断移载轴移动到轨道打印位").c_str()); + } + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"中断移载轴移动到轨道打印位").c_str()); + + } + else { + ImGui::ImageButton(chartletManager->m_LoadPrintPosDisable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"不能执行移载轴移动到轨道打印位").c_str()); + } + } + else { + if (ImGui::ImageButton(chartletManager->m_LoadPrintPosEnable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + { + m_SysParamWrapper->m_LoadAxisAbsTestPos->SetValue(0); + m_Axis->m_Load->GetCtrl()->m_MoveAbsPos->SetValue(true); + g_log->TraceInfo(_(u8"执行移载轴移动到轨道打印位").c_str()); + } + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"移载轴移动到轨道打印位").c_str()); + } + } + + ImGui::EndTabItem(); + } + + if (ImGui::BeginTabItem(_(u8"铺粉轴").c_str())) { + ImGui::PushItemWidth(100); + if (ImGui::InputScalar(_(u8"速度(mm/s)").c_str(), ImGuiDataType_Float, &armCfgVal.speed, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) + { + armCfg->m_Speed->SetValue(armCfgVal.speed); + g_log->TraceInfo(_(u8"更新铺粉轴速度:%.3f").c_str(), armCfgVal.speed); + } + if (ImGui::InputScalar(_(u8"加速度(m/s²)").c_str(), ImGuiDataType_Float, &armCfgVal.acc, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) + { + armCfg->m_Acc->SetValue(armCfgVal.acc); + g_log->TraceInfo(_(u8"更新铺粉轴加速度:%.3f").c_str(), armCfgVal.acc); + } + if (ImGui::InputScalar(_(u8"减速度(m/s2)").c_str(), ImGuiDataType_Float, &armCfgVal.dec, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) + { + armCfg->m_Dec->SetValue(armCfgVal.dec); + g_log->TraceInfo(_(u8"更新铺粉轴减速度:%.3f").c_str(), armCfgVal.dec); + } + if (ImGui::InputScalar(_(u8"点动行程(μm)").c_str(), ImGuiDataType_Float, &armCfgVal.rel, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { + armCfg->m_RefDistance->SetValue(armCfgVal.rel); + g_log->TraceInfo(_(u8"更新铺粉轴点动距离:%.3f").c_str(), armCfgVal.rel); + } + ImGui::PopItemWidth(); + if (g_Admin > USER_ADMIN) { + ImGui::Dummy(ImVec2(0, 20)); + + if (pArm->m_MoveAbsPos) + { + if (m_SysParamWrapper->m_ArmAbsTestPos->GetValue() == 0) + { + if (ImGui::ImageButton(chartletManager->m_ArmAcceptPosing->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + { + m_Axis->m_Arm->GetCtrl()->m_MoveAbsPos->SetValue(false); + g_log->TraceInfo(_(u8"中断铺粉轴移动到接粉位").c_str()); + } + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"中断铺粉轴移动到接粉位").c_str()); + + } + else { + ImGui::ImageButton(chartletManager->m_ArmAcceptPosDisable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"不能执行铺粉轴移动到接粉位").c_str()); + } + } + else { + if (ImGui::ImageButton(chartletManager->m_ArmAcceptPosEnable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + { + m_SysParamWrapper->m_ArmAbsTestPos->SetValue(0); + m_Axis->m_Arm->GetCtrl()->m_MoveAbsPos->SetValue(true); + g_log->TraceInfo(_(u8"执行铺粉轴移动到接粉位").c_str()); + } + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"铺粉轴移动到接粉位").c_str()); + } + ImGui::SameLine(); + if (pArm->m_MoveAbsPos) + { + if (m_SysParamWrapper->m_ArmAbsTestPos->GetValue() == 1) + { + if (ImGui::ImageButton(chartletManager->m_ArmFrontDropPosing->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + { + m_Axis->m_Arm->GetCtrl()->m_MoveAbsPos->SetValue(false); + g_log->TraceInfo(_(u8"中断铺粉轴移动到前下粉位").c_str()); + } + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"中断铺粉轴移动到前下粉位").c_str()); + + } + else { + ImGui::ImageButton(chartletManager->m_ArmFrontDropPosDisable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"不能执行铺粉轴移动到前下粉位").c_str()); + } + } + else { + if (ImGui::ImageButton(chartletManager->m_ArmFrontDropPosEnable->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + { + m_SysParamWrapper->m_ArmAbsTestPos->SetValue(1); + m_Axis->m_Arm->GetCtrl()->m_MoveAbsPos->SetValue(true); + g_log->TraceInfo(_(u8"执行铺粉轴移动到前下粉位").c_str()); + } + if (ImGui::IsItemHovered())ImGui::SetTooltip(_(u8"铺粉轴移动到前下粉位").c_str()); + } + } + + ImGui::EndTabItem(); + } + + if (ImGui::BeginTabItem(_(u8"供粉轴").c_str())) { + ImGui::PushItemWidth(100); + if (ImGui::InputScalar(_(u8"速度(mm/s)").c_str(), ImGuiDataType_Float, &supplyCfgVal.speed, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) + { + supplyCfg->m_Speed->SetValue(supplyCfgVal.speed); + g_log->TraceInfo(_(u8"更新下粉轴速度:%.3f").c_str(), supplyCfgVal.speed); + } + if (ImGui::InputScalar(_(u8"加速度(m/s²)").c_str(), ImGuiDataType_Float, &supplyCfgVal.acc, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) + { + supplyCfg->m_Acc->SetValue(supplyCfgVal.acc); + g_log->TraceInfo(_(u8"更新下粉轴加速度:%.3f").c_str(), supplyCfgVal.acc); + } + if (ImGui::InputScalar(_(u8"减速度(m/s2)").c_str(), ImGuiDataType_Float, &supplyCfgVal.dec, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) + { + supplyCfg->m_Dec->SetValue(supplyCfgVal.dec); + g_log->TraceInfo(_(u8"更新下粉轴减速度:%.3f").c_str(), supplyCfgVal.dec); + } + if (ImGui::InputScalar(_(u8"粉格").c_str(), ImGuiDataType_Float, &supplyCfgVal.rel, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { + supplyCfg->m_RefDistance->SetValue(supplyCfgVal.rel); + g_log->TraceInfo(_(u8"更新下粉轴相对移动距离:%.3f").c_str(), supplyCfgVal.rel); + } + ImGui::PopItemWidth(); + ImGui::EndTabItem(); + } + + if (ImGui::BeginTabItem(_(u8"铺粉").c_str())) { + AxisData ad; + vector ss = { _(u8"双向铺粉"),_(u8"单向铺粉"),_(u8"不铺粉") ,_(u8"双向铺粉2") ,_(u8"单向铺粉2"),_(u8"单向铺粉3") }; + m_SysParamWrapper->GetAxisData(ad); + ImGui::PushItemWidth(120); + if (ImGui::SemicolonCombo(_(u8"铺粉类型").c_str(), &ad.CoverType, ss)) { + m_SysParamWrapper->m_CoverType->SetValue(ad.CoverType); + g_log->TraceInfo(_(u8"更新铺粉方式:%d").c_str(), ad.CoverType); + } + + if (ImGui::InputFloat(_(u8"打印铺粉速度(mm/s)").c_str(), &ad.CoverSpeed, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { + m_SysParamWrapper->m_CoverSpeed->SetValue(ad.CoverSpeed); + g_log->TraceInfo(_(u8"更新铺粉速度:%.3f").c_str(), ad.CoverSpeed); + } + if (ImGui::InputFloat(_(u8"打印单向铺粉返回变速(mm/s)").c_str(), &ad.CoverReturnSpeed, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { + m_SysParamWrapper->m_CoverReturnSpeed->SetValue(ad.CoverReturnSpeed); + g_log->TraceInfo(_(u8"更新打印单向返回速度:%.3f").c_str(), ad.CoverReturnSpeed); + } + if (ImGui::InputFloat(_(u8"打印单向铺粉距离(mm)").c_str(), &ad.CoverDistance, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { + m_SysParamWrapper->m_CoverDistance->SetValue(ad.CoverDistance); + g_log->TraceInfo(_(u8"更新打印单向铺粉距离:%.3f").c_str(), ad.CoverDistance); + } + if (ImGui::InputFloat(_(u8"打印铺粉层厚(μm)").c_str(), &ad.LayerThick, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { + m_SysParamWrapper->m_LayerThick->SetValue(ad.LayerThick); + g_log->TraceInfo(_(u8"更新打印铺粉层厚:%.3f").c_str(), ad.LayerThick); + } + if (ImGui::InputFloat(_(u8"打印间隙补偿(μm)").c_str(), &ad.FixGap, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { + m_SysParamWrapper->m_FixGap->SetValue(ad.FixGap); + g_log->TraceInfo(_(u8"更新打印间隙补偿:%.3f").c_str(), ad.FixGap); + } + if (ImGui::InputScalar(_(u8"打印铺粉格数").c_str(), ImGuiDataType_S16, &ad.SupplyCount, 0, 0, 0, ImGuiInputTextFlags_EnterReturnsTrue)) { + m_SysParamWrapper->m_SupplyCount->SetValue(ad.SupplyCount); + g_log->TraceInfo(_(u8"更新打印铺粉格数:%d").c_str(), ad.SupplyCount); + } + if (ImGui::InputScalar(_(u8"打印下粉时间(ms)").c_str(), ImGuiDataType_S16, &ad.SupplyTime, 0, 0, 0, ImGuiInputTextFlags_EnterReturnsTrue)) { + m_SysParamWrapper->m_SupplyTime->SetValue(ad.SupplyTime); + g_log->TraceInfo(_(u8"更新打印下粉时间:%d").c_str(), ad.SupplyTime); + } + if (ImGui::InputFloat(_(u8"铺粉调试层厚(μm)").c_str(), &ad.DebugLayerThick, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { + m_SysParamWrapper->m_DebugLayerThick->SetValue(ad.DebugLayerThick); + g_log->TraceInfo(_(u8"更新铺粉调试层厚:%.3f").c_str(), ad.DebugLayerThick); + } + if (ImGui::InputFloat(_(u8"铺粉调试间隙(μm)").c_str(), &ad.DebugFixGap, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { + m_SysParamWrapper->m_DebugFixGap->SetValue(ad.DebugFixGap); + g_log->TraceInfo(_(u8"更新铺粉调试间隙补偿:%.3f").c_str(), ad.DebugFixGap); + } + if (ImGui::InputScalar(_(u8"铺粉调试下粉时间(ms)").c_str(), ImGuiDataType_S16, &ad.DebugSupplyTime, 0, 0, 0, ImGuiInputTextFlags_EnterReturnsTrue)) { + m_SysParamWrapper->m_DebugSupplyTime->SetValue(ad.DebugSupplyTime); + g_log->TraceInfo(_(u8"更新铺粉调试下粉时间:%d").c_str(), ad.DebugSupplyTime); + } + if (ImGui::InputScalar(_(u8"铺粉调试格数").c_str(), ImGuiDataType_S16, &ad.DebugSupplyCount, 0, 0, 0, ImGuiInputTextFlags_EnterReturnsTrue)) { + m_SysParamWrapper->m_DebugSupplyCount->SetValue(ad.DebugSupplyCount); + g_log->TraceInfo(_(u8"更新铺粉调试格数:%d").c_str(), ad.DebugSupplyCount); + } + if (ImGui::InputFloat(_(u8"铺粉调试铺粉距离(mm)").c_str(), &ad.DebugCoverDistance, 0, 0, "%.3f", ImGuiInputTextFlags_EnterReturnsTrue)) { + m_SysParamWrapper->m_DebugCoverDistance->SetValue(ad.DebugCoverDistance); + g_log->TraceInfo(_(u8"更新铺粉调试距离:%.3f").c_str(), ad.DebugCoverDistance); + } + ImGui::PopItemWidth(); + + ImGui::Dummy(ImVec2(0, 20)); + if (m_SignalStateWrapper->m_IsCovering->GetValue()) { + ImGui::PushID("CoverTrigerStop"); + if (ImGui::Button(_(u8"停止").c_str(), ImVec2(-1, 0))) { + m_SignalStateWrapper->m_CoverTriger->SetValue(false); + g_log->TraceInfo(_(u8"停止铺粉调试").c_str()); + } + ImGui::PopID(); + } + else { + // if (m_Purifier->IsCoverWindSet()) + // { + // m_Purifier->ResetSlowWind(); + // } + if (ImGui::Button(_(u8"铺粉调试").c_str(), ImVec2(-1, 0))) { + if (m_SignalStateWrapper->m_CoverEnable->GetValue()) { + // if (m_ExtCfg->m_AutoCoverSlowWind && m_Purifier->IsWindActive()) { + // m_Purifier->SetCoverWind(true); + // } + m_SignalStateWrapper->m_IsCoverDebug->SetValue(true); + Sleep(50); + m_SignalStateWrapper->m_ManualCoverTest->SetValue(true); + Sleep(50); + g_log->TraceInfo(_(u8"执行铺粉调试").c_str()); + } + else { + g_Toast->AddToast(new ToastBean(_(u8"铺粉调试条件不成立").c_str(), 3000)); + } + } + } + ImGui::EndTabItem(); + } + if (g_Admin > USER_ADMIN) { + if (ImGui::BeginTabItem(_(u8"控制").c_str())) { + if (m_SignalStateWrapper->m_CylinderReachPrintRun->GetValue()) { + ImGui::PushID("CylinderReachPrintTrigerStop"); + if (ImGui::Button(_(u8"停止").c_str())) { + m_SignalStateWrapper->m_CylinderReachPrintTriger->SetValue(false); + } + ImGui::PopID(); + } + else { + + ImGui::PushItemFlag(ImGuiItemFlags_Disabled, !m_SignalStateWrapper->m_CylinderReachPrintEnable->GetValue()); + if (ImGui::Button(_(u8"移动缸体到打印位").c_str())) { + if (m_SignalStateWrapper->m_CylinderReachPrintEnable->GetValue()) { + m_SignalStateWrapper->m_CylinderReachPrintTriger->SetValue(true); + g_log->TraceInfo(_(u8"执行移动缸体到打印位").c_str()); + } + else { + g_Toast->AddToast(new ToastBean(_(u8"移动缸体到打印位条件不成立").c_str(), 3000)); + } + m_RunCfg->m_HadSetBasePlatformPoint = false; + } + ImGui::PopItemFlag(); + } + + if (m_SignalStateWrapper->m_CylinderReachCleanRun->GetValue()) { + ImGui::PushID("CylinderReachCleanTrigerStop"); + if (ImGui::Button(_(u8"停止").c_str())) { + m_SignalStateWrapper->m_CylinderReachCleanTriger->SetValue(false); + } + ImGui::PopID(); + } + else { + ImGui::PushItemFlag(ImGuiItemFlags_Disabled, !m_SignalStateWrapper->m_CylinderReachCleanEnable->GetValue()); + if (ImGui::Button(_(u8"移动缸体到清粉位").c_str())) { + if (m_SignalStateWrapper->m_CylinderReachCleanEnable->GetValue()) { + m_SignalStateWrapper->m_CylinderReachCleanTriger->SetValue(true); + g_log->TraceInfo(_(u8"执行移动缸体到清粉位").c_str()); + } + else { + g_Toast->AddToast(new ToastBean(_(u8"移动缸体到清粉位条件不成立").c_str(), 3000)); + } + + } + ImGui::PopItemFlag(); + } + + + if (m_SignalStateWrapper->m_CylinderPrintLoadRun->GetValue()) { + ImGui::PushID("CylinderPrintLoadTrigerStop"); + if (ImGui::Button(_(u8"停止").c_str())) { + m_SignalStateWrapper->m_CylinderPrintLoadTriger->SetValue(false); + } + ImGui::PopID(); + } + else { + ImGui::PushItemFlag(ImGuiItemFlags_Disabled, !m_SignalStateWrapper->m_CylinderPrintLoadEnable->GetValue()); + if (ImGui::Button(_(u8"缸体打印位装载").c_str())) { + if (m_SignalStateWrapper->m_CylinderPrintLoadEnable->GetValue()) { + m_SignalStateWrapper->m_CylinderPrintLoadTriger->SetValue(true); + g_log->TraceInfo(_(u8"执行缸体打印位装载").c_str()); + } + else { + g_Toast->AddToast(new ToastBean(_(u8"缸体打印位装载条件不成立").c_str(), 3000)); + } + m_RunCfg->m_HadSetBasePlatformPoint = false; + } + ImGui::PopItemFlag(); + } + + if (m_SignalStateWrapper->m_CylinderConnectCleanBoxRun->GetValue()) { + ImGui::PushID("CylinderConnectCleanBoxTrigerStop"); + if (ImGui::Button(_(u8"停止").c_str())) { + m_SignalStateWrapper->m_CylinderConnectCleanBoxTriger->SetValue(false); + } + ImGui::PopID(); + } + else { + ImGui::PushItemFlag(ImGuiItemFlags_Disabled, !m_SignalStateWrapper->m_CylinderConnectCleanBoxEnable->GetValue()); + if (ImGui::Button(_(u8"缸体连接清粉箱").c_str())) { + if (m_SignalStateWrapper->m_CylinderConnectCleanBoxEnable->GetValue()) { + m_SignalStateWrapper->m_CylinderConnectCleanBoxTriger->SetValue(true); + g_log->TraceInfo(_(u8"执行缸体连接清粉箱").c_str()); + } + else { + g_Toast->AddToast(new ToastBean(_(u8"缸体连接清粉箱条件不成立").c_str(), 3000)); + } + } + ImGui::PopItemFlag(); + } + + if (m_SignalStateWrapper->m_CylinderPrintUnloadRun->GetValue()) { + ImGui::PushID("CylinderPrintUnloadTrigerStop"); + if (ImGui::Button(_(u8"停止").c_str())) { + m_SignalStateWrapper->m_CylinderPrintUnloadTriger->SetValue(false); + } + ImGui::PopID(); + } + else { + ImGui::PushItemFlag(ImGuiItemFlags_Disabled, !m_SignalStateWrapper->m_CylinderPrintUnloadEnable->GetValue()); + if (ImGui::Button(_(u8"缸体打印位卸载").c_str())) { + if (m_SignalStateWrapper->m_CylinderPrintUnloadEnable->GetValue()) { + m_SignalStateWrapper->m_CylinderPrintUnloadTriger->SetValue(true); + g_log->TraceInfo(_(u8"执行缸体打印位卸载").c_str()); + } + else { + g_Toast->AddToast(new ToastBean(_(u8"缸体打印位卸载条件不成立").c_str(), 3000)); + } + m_RunCfg->m_HadSetBasePlatformPoint = false; + } + ImGui::PopItemFlag(); + } + + if (m_SignalStateWrapper->m_CylinderDisconnectCleanBoxRun->GetValue()) { + ImGui::PushID("CylinderDisconnectCleanBoxTrigerStop"); + if (ImGui::Button(_(u8"停止").c_str())) { + m_SignalStateWrapper->m_CylinderDisconnectCleanBoxTriger->SetValue(false); + } + ImGui::PopID(); + } + else { + ImGui::PushItemFlag(ImGuiItemFlags_Disabled, !m_SignalStateWrapper->m_CylinderDisconnectCleanBoxEnable->GetValue()); + if (ImGui::Button(_(u8"缸体脱离清粉箱").c_str())) { + if (m_SignalStateWrapper->m_CylinderDisconnectCleanBoxEnable->GetValue()) { + m_SignalStateWrapper->m_CylinderDisconnectCleanBoxTriger->SetValue(true); + g_log->TraceInfo(_(u8"执行缸体脱离清粉箱").c_str()); + } + else { + g_Toast->AddToast(new ToastBean(_(u8"缸体脱离清粉箱条件不成立").c_str(), 3000)); + } + } + ImGui::PopItemFlag(); + } + + ImGui::EndTabItem(); + } + } + ImGui::EndTabBar(); + ImGui::EndChild(); + + + if (ImGui::Button(_(u8"运动急停").c_str(), ImVec2(tabwidth, 0))) { + //m_Axis->StopAll(); + DataHandle::Instance()->SetPushMsg(AXISSTOPALL); + g_log->TraceInfo(_(u8"运动急停").c_str()); + } + + ImGui::EndGroup(); + ImGui::SameLine(); + } + + ImGui::BeginChild("AxisCtrl", ImVec2(840, 670)); + if (m_PowderAssist.isLeftExpand) { + if (ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::HNARROW]->GetTex(), ImVec2(38, 50), ImVec2(0, 0), ImVec2(1, 1), 0)) { + m_PowderAssist.isLeftExpand = !m_PowderAssist.isLeftExpand; + } + } + else { + if (ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::HEXPAND]->GetTex(), ImVec2(38, 50), ImVec2(0, 0), ImVec2(1, 1), 0)) { + m_PowderAssist.isLeftExpand = !m_PowderAssist.isLeftExpand; + } + } + + ImGui::SameLine(); + ImGui::BeginGroup(); + if (ImGui::ToggleButton(_(u8"连续运动").c_str(), continue_move)) + continue_move = !continue_move; + ImGui::SameLine(); + ImGui::Text(_(u8"连续运动").c_str()); + + ImGui::Dummy(ImVec2(0, 250)); + + if (ImGui::ImageButton(chartletManager->m_LoadOut->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) { + //LoadOut(); + DataHandle::Instance()->SetPushMsg(LOADOUT); + ImGui::OpenPopup(_(u8"移载载出").c_str()); + g_log->TraceInfo(_(u8"执行移出").c_str()); + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(_(u8"载出").c_str()); + } + ImGui::SameLine(); + if (ImGui::ImageButton(chartletManager->m_LoadIn->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) { + //LoadIn(); + DataHandle::Instance()->SetPushMsg(LOADIN); + ImGui::OpenPopup(_(u8"移载载入").c_str()); + g_log->TraceInfo(_(u8"执行移入").c_str()); + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(_(u8"载入").c_str()); + } + + MACHINEPARAM mp; + GetMachineParam(mp); + if (ImGui::BeginPopupModal(_(u8"移载载入").c_str(), NULL, ImGuiWindowFlags_AlwaysAutoResize)) { + if (GetLoadInProcStep() == In_Start) { + ImGui::Text(_(u8"移载开始载入").c_str()); + } + if (GetLoadInProcStep() == In_CylinderDisconnectCleanBox) { + ImGui::Text(_(u8"缸体与清粉箱分离中").c_str()); + } + if (GetLoadInProcStep() == In_CylinderReachPrint) { + ImGui::Text(_(u8"缸体到打印位运行中").c_str()); + } + if (GetLoadInProcStep() == In_CylinderPrintLoad) { + ImGui::Text(_(u8"缸体打印位装载运行中").c_str()); + } + + if (mp.m_LoadInResut == In_Intercept) { + ImGui::TextColored(Toast::COLOR_ORANGE, mp.m_LoadInfo.c_str()); + if (ImGui::Button(_(u8"确定").c_str(), ImVec2(-1, 0))) + { + ImGui::CloseCurrentPopup(); + } + } + else if (mp.m_LoadInResut == In_Success) { + ImGui::TextColored(Toast::COLOR_GREEN, mp.m_LoadInfo.c_str()); + if (ImGui::Button(_(u8"确定").c_str(), ImVec2(-1, 0))) + { + ImGui::CloseCurrentPopup(); + } + } + else if (mp.m_LoadInResut > In_Success) { + ImGui::TextColored(Toast::COLOR_RED, mp.m_LoadInfo.c_str()); + if (ImGui::Button(_(u8"确定").c_str(), ImVec2(-1, 0))) + { + ImGui::CloseCurrentPopup(); + } + } + + if (IsLoadIn()) { + if (ImGui::Button(_(u8"中断载入").c_str(), ImVec2(-1, 0))) + { + //InterceptLoad(); + DataHandle::Instance()->SetPushMsg(INTERCEPTLOAD); + } + } + ImGui::EndPopup(); + } + + + if (ImGui::BeginPopupModal(_(u8"移载载出").c_str(), NULL, ImGuiWindowFlags_AlwaysAutoResize)) { + if (GetLoadOutProcSetp() == Out_Start) + { + ImGui::Text(_(u8"移载开始载出").c_str()); + } + if (GetLoadOutProcSetp() == Out_CylinderPrintUnload) + { + ImGui::Text(_(u8"缸体打印位卸载运行中").c_str()); + } + if (GetLoadOutProcSetp() == Out_CylinderReachClean) + { + ImGui::Text(_(u8"缸体到清粉位运行中").c_str()); + } + if (GetLoadOutProcSetp() == Out_CylinderConnectCleanBox) + { + ImGui::Text(_(u8"缸体与清粉箱连接中").c_str()); + } + if (GetLoadOutProcSetp() == Out_CylinderReachHand) + { + ImGui::Text(_(u8"缸体与吊装位运行中").c_str()); + } + + if (GetLoadOutProcSetp() == Out_CylinderDisconnectCleanBox) + { + ImGui::Text(_(u8"缸体与清粉箱分离中").c_str()); + } + + if (mp.m_NeedWaitSelectOutPos) { + vector combtemp = { _(u8"清粉位"),_(u8"吊装位") }; + ImGui::PushItemWidth(120); + ImGui::SemicolonCombo(_(u8"选择载出位置").c_str(), &m_SelectOutPos, combtemp); + ImGui::PopItemWidth(); + ImGui::SameLine(); + if (ImGui::Button(_(u8"下一步").c_str())) + { + m_WaitSelectOutPosCommit = true; + } + } + + if (mp.m_WaitConnectBoxCommit) { + if (ImGui::Button(_(u8"执行缸体与清粉箱连接").c_str())) + { + SetWaitConnectBoxCommit(false); + } + } + + + if (mp.m_LoadOutResut == Out_Intercept) { + ImGui::TextColored(Toast::COLOR_ORANGE, mp.m_LoadInfo.c_str()); + if (ImGui::Button(_(u8"确定").c_str(), ImVec2(-1, 0))) + { + ImGui::CloseCurrentPopup(); + } + } + else if (mp.m_LoadOutResut == Out_Success) { + ImGui::TextColored(Toast::COLOR_GREEN, mp.m_LoadInfo.c_str()); + if (ImGui::Button(_(u8"确定").c_str(), ImVec2(-1, 0))) + { + ImGui::CloseCurrentPopup(); + } + } + else if (mp.m_LoadOutResut > Out_Success) { + ImGui::TextColored(Toast::COLOR_RED, mp.m_LoadInfo.c_str()); + if (ImGui::Button(_(u8"确定").c_str(), ImVec2(-1, 0))) + { + ImGui::CloseCurrentPopup(); + } + } + + if (IsLoadOut()) { + if (ImGui::Button(_(u8"中断载出").c_str(), ImVec2(-1, 0))) + { + //InterceptLoad(); + DataHandle::Instance()->SetPushMsg(INTERCEPTLOAD); + } + } + ImGui::EndPopup(); + } + + ImGui::Dummy(ImVec2(0, 80)); + ImGui::RadioButton(_(u8"移载轴").c_str(), &kb, GTS_AXIS_ID_LOAD); + if (IsLoadAxisCanMoveLeft()) + { + ImGui::PushID("LoadMovePointLeft"); + if (ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::LEFT_ARROW_GREEN]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) { + m_Axis->m_Load->MovPoint(AxisConfig::ActiveDirect::LEFT); + g_log->TraceInfo(_(u8"移载[%.3f]往左移动%.3f").c_str(), pLoad->GetShowPos(), loadCfgVal.rel); + } + ImGui::PopID(); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(_(u8"移载轴左移 %.3fmm").c_str(), loadCfgVal.rel / 1000.0f); + } + if (kb == GTS_AXIS_ID_LOAD && !continue_move) { + if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_LeftArrow), false)) { + m_Axis->m_Load->MovPoint(AxisConfig::ActiveDirect::LEFT); + g_log->TraceInfo(_(u8"移载[%.3f]往左移动%.3f").c_str(), pLoad->GetShowPos(), loadCfgVal.rel); + } + } + } + else { + ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::LEFT_ARROW_RED]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(GetLoadAxisCanotMoveLeftInfo().c_str()); + } + } + + ImGui::SameLine(); + + if (IsLoadAxisCanMoveRight()) + { + ImGui::PushID("LoadMovePointRight"); + if (ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::RIGHT_ARROW_GREEN]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + { + m_Axis->m_Load->MovPoint(AxisConfig::ActiveDirect::RIGHT); + g_log->TraceInfo(_(u8"移载[%.3f]往右移动%.3f").c_str(), pLoad->GetShowPos(), loadCfgVal.rel); + } + ImGui::PopID(); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(_(u8"移载轴右移 %.3fmm").c_str(), loadCfgVal.rel); + } + if (kb == GTS_AXIS_ID_LOAD && !continue_move) { + if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_RightArrow), false)) { + m_Axis->m_Load->MovPoint(AxisConfig::ActiveDirect::RIGHT); + g_log->TraceInfo(_(u8"移载[%.3f]往右移动%.3f").c_str(), pLoad->GetShowPos(), loadCfgVal.rel); + } + } + } + else { + ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::RIGHT_ARROW_RED]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(GetLoadAxisCanotMoveRightInfo().c_str()); + } + } + + if (IsLoadAxisCanMoveLeft()) { + ImGui::PushID("LoadMoveLimitLeft"); + if (ImGui::ImageButtonEx(chartletManager->m_TextureMap[ChartletManager::LEFT_ARROW_GREEN_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) { + if (!m_PowderAssist.isLoadLeftRepeat) { + m_PowderAssist.isLoadLeftRepeat = true; + m_Axis->m_Load->MovLimitStart(AxisConfig::ActiveDirect::LEFT); + g_log->TraceInfo(_(u8"移载[%.3f]往左连续移动").c_str(), pLoad->GetShowPos()); + } + } + else { + if (m_PowderAssist.isLoadLeftRepeat) + { + m_Axis->m_Load->MovLimitStop(AxisConfig::ActiveDirect::LEFT); + m_PowderAssist.isLoadLeftRepeat = false; + } + } + ImGui::PopID(); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(_(u8"移载轴左连续").c_str()); + } + } + else { + ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::LEFT_ARROW_RED_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(GetLoadAxisCanotMoveLeftInfo().c_str()); + } + if (m_PowderAssist.isLoadLeftRepeat) { + m_Axis->m_Load->MovLimitStop(AxisConfig::ActiveDirect::LEFT); + m_PowderAssist.isLoadLeftRepeat = false; + } + } + + if (kb == GTS_AXIS_ID_LOAD && continue_move) { + if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_LeftArrow), false)) { + if (IsLoadAxisCanMoveLeft()) { + m_Axis->m_Load->MovLimitStart(AxisConfig::ActiveDirect::LEFT); + g_log->TraceInfo(_(u8"移载[%.3f]往左连续移动").c_str(), pLoad->GetShowPos()); + } + else { + g_Toast->AddToast(new ToastBean(GetLoadAxisCanotMoveLeftInfo(), 5000, Toast::COLOR_ORANGE)); + } + } + if (ImGui::IsWindowFocused() && ImGui::IsKeyReleased(ImGui::GetKeyIndex(ImGuiKey_LeftArrow))) + m_Axis->m_Load->MovLimitStop(AxisConfig::ActiveDirect::LEFT); + } + + ImGui::SameLine(); + if (IsLoadAxisCanMoveRight()) { + ImGui::PushID("LoadMoveLimitRight"); + if (ImGui::ImageButtonEx(chartletManager->m_TextureMap[ChartletManager::RIGHT_ARROW_GREEN_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + { + if (!m_PowderAssist.isLoadRightRepeat) { + m_PowderAssist.isLoadRightRepeat = true; + m_Axis->m_Load->MovLimitStart(AxisConfig::ActiveDirect::RIGHT); + g_log->TraceInfo(_(u8"移载[%.3f]往右连续移动").c_str(), pLoad->GetShowPos()); + } + + } + else { + if (m_PowderAssist.isLoadRightRepeat) + { + m_Axis->m_Load->MovLimitStop(AxisConfig::ActiveDirect::RIGHT); + m_PowderAssist.isLoadRightRepeat = false; + } + } + ImGui::PopID(); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(_(u8"移载轴右连续").c_str()); + } + } + else { + ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::RIGHT_ARROW_RED_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(GetLoadAxisCanotMoveRightInfo().c_str()); + } + if (m_PowderAssist.isLoadRightRepeat) { + m_Axis->m_Load->MovLimitStop(AxisConfig::ActiveDirect::RIGHT); + m_PowderAssist.isLoadRightRepeat = false; + } + } + if (kb == GTS_AXIS_ID_LOAD && continue_move) { + if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_RightArrow), false)) + { + if (IsLoadAxisCanMoveRight()) { + m_Axis->m_Load->MovLimitStart(AxisConfig::ActiveDirect::RIGHT); + g_log->TraceInfo(_(u8"移载[%.3f]往右连续移动").c_str(), pLoad->GetShowPos()); + } + else { + g_Toast->AddToast(new ToastBean(GetLoadAxisCanotMoveRightInfo(), 5000, Toast::COLOR_ORANGE)); + } + } + if (ImGui::IsWindowFocused() && ImGui::IsKeyReleased(ImGui::GetKeyIndex(ImGuiKey_RightArrow))) + { + m_Axis->m_Load->MovLimitStop(AxisConfig::ActiveDirect::RIGHT); + } + } + ImGui::PushID("load_to_zero"); + if (ImGui::ImageButton(chartletManager->m_ToZero->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + pLoad->SetZeroPos(); + ImGui::PopID(); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(_(u8"移栽轴位置清零").c_str()); + } + + ImGui::EndGroup(); + + ImGui::SameLine(); + ImGui::BeginGroup(); + + //ImGui::Dummy(ImVec2(500,1)); + ImGui::BeginChild("SupplyCtrl", ImVec2(500, 160)); + ImGui::BeginGroup(); + ImGui::Text(_(u8"移栽轴:%.3f").c_str(), pLoad->GetShowPos() / 1000.0f); + ImGui::Text(_(u8"成型缸:%.3f").c_str(), pMold->GetShowPos() / 1000.0f); + ImGui::Text(_(u8"铺粉臂:%.3f").c_str(), pArm->GetShowPos() / 1000.0f); + ImGui::EndGroup(); + ImGui::SameLine(350); + ImGui::BeginGroup(); + ImGui::RadioButton(_(u8"供粉轴").c_str(), &kb, GTS_AXIS_ID_SUPPLY); + + + ImGui::PushID("SupplyMovePointFront"); + if (ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::DOWN_ARROW_GREEN]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) { + m_Axis->m_Supply->MovPoint(AxisConfig::ActiveDirect::FRONT); + } + ImGui::PopID(); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(_(u8"下粉轴前转%.2f格").c_str(), supplyCfgVal.rel); + } + if (kb == GTS_AXIS_ID_SUPPLY && !continue_move) { + if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_DownArrow), false)) { + m_Axis->m_Supply->MovPoint(AxisConfig::ActiveDirect::FRONT); + } + } + ImGui::SameLine(); + ImGui::PushID("SupplyMoveLimitFront"); + if (ImGui::ImageButtonEx(chartletManager->m_TextureMap[ChartletManager::DOWN_ARROW_GREEN_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) { + if (!m_PowderAssist.isSupplyNegativeRepeat) { + m_PowderAssist.isSupplyNegativeRepeat = true; + m_Axis->m_Supply->MovLimitStart(AxisConfig::ActiveDirect::FRONT); + //OutputDebugString("left\n"); + } + } + else { + if (m_PowderAssist.isSupplyNegativeRepeat) + { + m_Axis->m_Supply->MovLimitStop(AxisConfig::ActiveDirect::FRONT); + m_PowderAssist.isSupplyNegativeRepeat = false; + //OutputDebugString("stop\n"); + } + } + ImGui::PopID(); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(_(u8"供粉轴左连续").c_str()); + } + if (kb == GTS_AXIS_ID_SUPPLY && continue_move) { + if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_DownArrow), false)) { + m_Axis->m_Supply->MovLimitStart(AxisConfig::ActiveDirect::FRONT); + } + if (ImGui::IsWindowFocused() && ImGui::IsKeyReleased(ImGui::GetKeyIndex(ImGuiKey_DownArrow))) + m_Axis->m_Supply->MovLimitStop(AxisConfig::ActiveDirect::FRONT); + } + + + ImGui::EndGroup(); + ImGui::EndChild(); + + MotionDrawAssist assit; + + AxisStateValue loadvalue; + pLoad->GetValue(loadvalue); + AxisStateValue mold; + pMold->GetValue(mold); + AxisStateValue arm; + pArm->GetValue(arm); + AxisData axisData; + m_SysParamWrapper->GetAxisData(axisData); + float loadposdif = axisData.LoadAxisTrackCleanPos - axisData.LoadAxisTrackPrintPos; + if (loadposdif != 0.0f)assit.loadRPos = (loadvalue.Pos - axisData.LoadAxisTrackPrintPos) / loadposdif; + else assit.loadRPos = 0.0f; + + assit.loadRPos = assit.loadRPos > 1.0f ? 1.0f : assit.loadRPos; + assit.loadRPos = assit.loadRPos < 0.0f ? 0.0f : assit.loadRPos; + + /*assit.loadRPos = load->m_RPos>1.0f ? 1.0f : load->m_RPos; + int cylinderState = m_SignalState.m_CylinderState; + if (cylinderState == CylinderInCleanUnConnectBox || + cylinderState == CylinderInCleanConnectedBox || + cylinderState == CylinderInHand) { + assit.loadRPos = 1.0f; + }*/ + + + assit.moldRpos = mold.RPos>1.0f ? 1.0f : mold.RPos; + assit.armRPos = arm.RPos; + assit.isCleanPressure = true; + assit.isPrintPressure = true; + assit.isPrintMoldSupprt = false; + assit.isPrintJackup = false; + assit.isInPrintPos = (m_SignalState.m_CylinderState == CylinderInPrintLoaded || m_SignalState.m_CylinderState == CylinderInPrintUnLoaded); + assit.isCleanClose = true; + if (m_IOCfgWrapper->m_Clean3RCylinderContact)assit.isCleanConnect = m_IOCfgWrapper->m_Clean3RCylinderContact->IsActive(); + ImGui::Powder1500V1(assit); + ImGui::EndGroup(); + + ImGui::SameLine(); + ImGui::BeginGroup(); + ImGui::Dummy(ImVec2(0, 170)); + ImGui::RadioButton(_(u8"铺粉臂").c_str(), &kb, GTS_AXIS_ID_ARM); + if (IsArmCanMoveBack()) { + ImGui::PushID("ArmMovPointBack"); + if (ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::UP_ARROW_GREEN]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + { + m_Axis->m_Arm->MovPoint(AxisConfig::ActiveDirect::BACK); + } + ImGui::PopID(); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(_(u8"铺粉轴后移 %.3fmm").c_str(), armCfgVal.rel / 1000.0f); + } + if (kb == GTS_AXIS_ID_ARM && !continue_move) { + if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_UpArrow), false)) { + m_Axis->m_Arm->MovPoint(AxisConfig::ActiveDirect::BACK); + } + } + } + else { + ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::UP_ARROW_RED]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(GetArmCanotMoveBackInfo().c_str()); + } + } + + ImGui::SameLine(); + if (IsArmCanMoveBack()) { + ImGui::PushID("ArmMoveLimitBack"); + if (ImGui::ImageButtonEx(chartletManager->m_TextureMap[ChartletManager::UP_ARROW_GREEN_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + { + if (!m_PowderAssist.isArmBackRepeat) { + m_PowderAssist.isArmBackRepeat = true; + m_Axis->m_Arm->MovLimitStart(AxisConfig::ActiveDirect::BACK); + } + } + else { + if (m_PowderAssist.isArmBackRepeat) + { + m_Axis->m_Arm->MovLimitStop(AxisConfig::ActiveDirect::BACK); + m_PowderAssist.isArmBackRepeat = false; + } + } + ImGui::PopID(); + + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(_(u8"铺粉轴后连续").c_str()); + } + } + else { + ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::UP_ARROW_RED_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(GetArmCanotMoveBackInfo().c_str()); + } + if (m_PowderAssist.isArmBackRepeat) { + m_Axis->m_Arm->MovLimitStop(AxisConfig::ActiveDirect::BACK); + m_PowderAssist.isArmBackRepeat = false; + } + } + if (kb == GTS_AXIS_ID_ARM && continue_move) { + if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_UpArrow), false)) + { + if (IsArmCanMoveBack()) { + m_Axis->m_Arm->MovLimitStart(AxisConfig::ActiveDirect::BACK); + } + else { + g_Toast->AddToast(new ToastBean(GetArmCanotMoveBackInfo(), 5000, Toast::COLOR_ORANGE)); + } + } + if (ImGui::IsWindowFocused() && ImGui::IsKeyReleased(ImGui::GetKeyIndex(ImGuiKey_UpArrow))) + { + m_Axis->m_Arm->MovLimitStop(AxisConfig::ActiveDirect::BACK); + } + } + + if (IsArmCanMoveFront()) { + ImGui::PushID("ArmMovPointFront"); + if (ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::DOWN_ARROW_GREEN]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) { + m_Axis->m_Arm->MovPoint(AxisConfig::ActiveDirect::FRONT); + } + ImGui::PopID(); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(_(u8"铺粉轴前移 %.3fmm").c_str(), armCfgVal.rel / 1000.0f); + } + + if (kb == GTS_AXIS_ID_ARM && !continue_move) { + if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_DownArrow), false)) { + m_Axis->m_Arm->MovPoint(AxisConfig::ActiveDirect::FRONT); + } + } + } + else { + ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::DOWN_ARROW_RED]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(GetArmCanotMoveFrontInfo().c_str()); + } + } + + ImGui::SameLine(); + + if (IsArmCanMoveFront()) { + ImGui::PushID("ArmMoveLimitFront"); + if (ImGui::ImageButtonEx(chartletManager->m_TextureMap[ChartletManager::DOWN_ARROW_GREEN_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) { + if (!m_PowderAssist.isArmFrontRepeat) { + m_PowderAssist.isArmFrontRepeat = true; + m_Axis->m_Arm->MovLimitStart(AxisConfig::ActiveDirect::FRONT); + } + } + else { + if (m_PowderAssist.isArmFrontRepeat) + { + m_Axis->m_Arm->MovLimitStop(AxisConfig::ActiveDirect::FRONT); + m_PowderAssist.isArmFrontRepeat = false; + } + } + ImGui::PopID(); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(_(u8"铺粉轴前连续").c_str()); + } + } + else { + ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::DOWN_ARROW_RED_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(GetArmCanotMoveBackInfo().c_str()); + } + if (m_PowderAssist.isArmFrontRepeat) { + m_Axis->m_Arm->MovLimitStop(AxisConfig::ActiveDirect::FRONT); + m_PowderAssist.isArmFrontRepeat = false; + } + } + if (kb == GTS_AXIS_ID_ARM && continue_move) { + if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_DownArrow), false)) { + if (IsArmCanMoveFront()) { + m_Axis->m_Arm->MovLimitStart(AxisConfig::ActiveDirect::FRONT); + } + else { + g_Toast->AddToast(new ToastBean(GetArmCanotMoveBackInfo(), 5000, Toast::COLOR_ORANGE)); + } + } + if (ImGui::IsWindowFocused() && ImGui::IsKeyReleased(ImGui::GetKeyIndex(ImGuiKey_DownArrow))) + m_Axis->m_Arm->MovLimitStop(AxisConfig::ActiveDirect::FRONT); + } + + ImGui::PushID("arm_to_zero"); + if (ImGui::ImageButton(chartletManager->m_ToZero->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + pArm->SetZeroPos(); + ImGui::PopID(); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(_(u8"铺粉轴位置清零").c_str()); + } + if (m_AxisRecordWrapper->m_PCArmOverLimitAlarm->GetValue()) + { + ImGui::SameLine(); + ImGui::PushID("arm_alarm_remove"); + if (ImGui::ImageButton(chartletManager->m_AlarmRemove->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + { + m_AxisRecordWrapper->m_PCArmOverLimitAlarmRemove->SetValue(true); + } + ImGui::PopID(); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(_(u8"铺粉轴越限解除").c_str()); + } + } + ImGui::Dummy(ImVec2(0, 35)); + ImGui::RadioButton(_(u8"成型缸").c_str(), &kb, GTS_AXIS_ID_MOLD); + if (IsMoldCanMoveUp()) { + ImGui::PushID("MoldMovePointUp"); + if (ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::UP_ARROW_GREEN]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) { + m_Axis->m_Mold->MovPoint(AxisConfig::ActiveDirect::UP); + g_log->TraceInfo(_(u8"升降[%.3f]往上移动%.3f").c_str(), pMold->GetShowPos(), moldCfgVal.rel); + } + ImGui::PopID(); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(_(u8"成型缸上移 %.3fmm").c_str(), moldCfgVal.rel / 1000.0f); + } + if (kb == GTS_AXIS_ID_MOLD && !continue_move) { + if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_UpArrow), false)) { + m_Axis->m_Mold->MovPoint(AxisConfig::ActiveDirect::UP); + g_log->TraceInfo(_(u8"升降[%.3f]往上移动%.3f").c_str(), pMold->GetShowPos(), moldCfgVal.rel); + } + } + } + else { + ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::UP_ARROW_RED]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(GetMoldCanotUpInfo().c_str()); + } + } + + ImGui::SameLine(); + if (IsMoldCanMoveUp()) { + ImGui::PushID("MoldMoveLimitUp"); + if (ImGui::ImageButtonEx(chartletManager->m_TextureMap[ChartletManager::UP_ARROW_GREEN_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) { + if (!m_PowderAssist.isMoldUpRepeat) { + m_PowderAssist.isMoldUpRepeat = true; + m_Axis->m_Mold->MovLimitStart(AxisConfig::ActiveDirect::UP); + g_log->TraceInfo(_(u8"升降[%.3f]往上连续移动").c_str(), pMold->GetShowPos()); + } + } + else { + if (m_PowderAssist.isMoldUpRepeat) + { + m_Axis->m_Mold->MovLimitStop(AxisConfig::ActiveDirect::UP); + m_PowderAssist.isMoldUpRepeat = false; + } + } + ImGui::PopID(); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(_(u8"成型缸上连续").c_str()); + } + } + else { + ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::UP_ARROW_RED_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(GetMoldCanotUpInfo().c_str()); + } + if (m_PowderAssist.isMoldUpRepeat) { + m_Axis->m_Mold->MovLimitStop(AxisConfig::ActiveDirect::UP); + m_PowderAssist.isMoldUpRepeat = false; + } + } + if (kb == GTS_AXIS_ID_MOLD && continue_move) { + if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_UpArrow), false)) { + if (IsMoldCanMoveUp()) { + m_Axis->m_Mold->MovLimitStart(AxisConfig::ActiveDirect::UP); + g_log->TraceInfo(_(u8"升降[%.3f]往上连续移动").c_str(), pMold->GetShowPos()); + } + else { + g_Toast->AddToast(new ToastBean(GetMoldCanotUpInfo(), 5000, Toast::COLOR_ORANGE)); + } + } + if (ImGui::IsWindowFocused() && ImGui::IsKeyReleased(ImGui::GetKeyIndex(ImGuiKey_UpArrow))) + m_Axis->m_Mold->MovLimitStop(AxisConfig::ActiveDirect::UP); + } + + if (IsMoldCanMoveDown()) { + ImGui::PushID("MoldMovePointDown"); + if (ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::DOWN_ARROW_GREEN]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + { + m_Axis->m_Mold->MovPoint(AxisConfig::ActiveDirect::DOWN); + g_log->TraceInfo(_(u8"升降[%.3f]往下移动%.3f").c_str(), pMold->GetShowPos(), moldCfgVal.rel); + } + ImGui::PopID(); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(_(u8"成型缸下移 %.3fmm").c_str(), moldCfgVal.rel / 1000.0f); + } + if (kb == GTS_AXIS_ID_MOLD && !continue_move) { + if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_DownArrow), false)) { + m_Axis->m_Mold->MovPoint(AxisConfig::ActiveDirect::DOWN); + g_log->TraceInfo(_(u8"升降[%.3f]往下移动%.3f").c_str(), pMold->GetShowPos(), moldCfgVal.rel); + } + } + } + else { + ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::DOWN_ARROW_RED]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(GetMoldCanotDownInfo().c_str()); + } + } + + ImGui::SameLine(); + + if (IsMoldCanMoveDown()) { + ImGui::PushID("MoldMoveLimitDown"); + if (ImGui::ImageButtonEx(chartletManager->m_TextureMap[ChartletManager::DOWN_ARROW_GREEN_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + { + if (!m_PowderAssist.isMoldDownRepeat) { + m_PowderAssist.isMoldDownRepeat = true; + m_Axis->m_Mold->MovLimitStart(AxisConfig::ActiveDirect::DOWN); + g_log->TraceInfo(_(u8"升降[%.3f]往下连续移动").c_str(), pMold->GetShowPos()); + } + } + else { + if (m_PowderAssist.isMoldDownRepeat) + { + m_Axis->m_Mold->MovLimitStop(AxisConfig::ActiveDirect::DOWN); + m_PowderAssist.isMoldDownRepeat = false; + } + } + ImGui::PopID(); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(_(u8"成型缸下连续").c_str()); + } + + } + else { + ImGui::ImageButton(chartletManager->m_TextureMap[ChartletManager::DOWN_ARROW_RED_BAR]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(GetMoldCanotDownInfo().c_str()); + } + if (m_PowderAssist.isMoldDownRepeat) { + m_Axis->m_Mold->MovLimitStop(AxisConfig::ActiveDirect::DOWN); + m_PowderAssist.isMoldDownRepeat = false; + } + } + if (kb == GTS_AXIS_ID_MOLD && continue_move) { + if (ImGui::IsWindowFocused() && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_DownArrow), false)) + { + if (IsMoldCanMoveDown()) { + m_Axis->m_Mold->MovLimitStart(AxisConfig::ActiveDirect::DOWN); + g_log->TraceInfo(_(u8"升降[%.3f]往连续下移动").c_str(), pMold->GetShowPos()); + } + else + { + g_Toast->AddToast(new ToastBean(GetMoldCanotDownInfo(), 5000, Toast::COLOR_ORANGE)); + } + + } + if (ImGui::IsWindowFocused() && ImGui::IsKeyReleased(ImGui::GetKeyIndex(ImGuiKey_DownArrow))) + { + m_Axis->m_Mold->MovLimitStop(AxisConfig::ActiveDirect::DOWN); + } + } + ImGui::PushID("mold_to_zero"); + if (ImGui::ImageButton(chartletManager->m_ToZero->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) + pMold->SetZeroPos(); + ImGui::PopID(); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(_(u8"成型缸位置清零").c_str()); + } + ImGui::EndGroup(); + + ImGui::EndChild(); + + ImGui::End(); + +} void HBD1200::DrawAnalogExt() { @@ -7040,195 +7053,195 @@ void HBD1200::GetAlarmState(SignalState& signalState) // //} // -//bool HBD1200::CheckPrintMoldReady() -//{ -// if (m_SignalStateWrapper->m_CylinderState->GetValue() != CylinderInPrintLoaded) -// { -// return false; -// } -// else return true; -//} -// -//bool HBD1200::IsLoadAxisCanMoveLeft() -//{ -// if (!m_SignalState.m_PrintJackupInSafePos)return false; -// if (!m_SignalState.m_LoadTorqueInsideLimit)return false; -// if (!m_SignalState.m_LoadPosInsideLeftSoftLimit)return false; -// if (!m_SignalState.m_CylinderFixInReleasePos)return false; -// if (!m_SignalState.m_LoadLeftNotInsideLimit)return false; -// if (!m_SignalState.m_LoadServoNoAlarm)return false; -// if (!m_SignalState.m_EleServoInBottomPos)return false; -// if (m_SignalState.m_HighPressureLackAlarm)return false; -// if (m_SignalState.m_SystemStopAlarm)return false; -// if (m_SignalState.m_CleanLiftStopAlarm)return false; -// if (m_Axis->m_Load->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return false; -// return true; -//} -// -//string HBD1200::GetLoadAxisCanotMoveLeftInfo() { -// if (!m_SignalState.m_PrintJackupInSafePos)return _(u8"打印顶升轴不在安全位").c_str(); -// if (!m_SignalState.m_LoadTorqueInsideLimit)return _(u8"移载扭力越限").c_str(); -// if (!m_SignalState.m_LoadPosInsideLeftSoftLimit)return _(u8"移载轴越软左限").c_str(); -// if (!m_SignalState.m_CylinderFixInReleasePos)return _(u8"缸体固定气缸不在松开位").c_str(); -// if (!m_SignalState.m_LoadLeftNotInsideLimit)return _(u8"移载轴已到左限位").c_str(); -// if (!m_SignalState.m_LoadServoNoAlarm)return _(u8"移载轴伺服异常").c_str(); -// if (!m_SignalState.m_EleServoInBottomPos)return _(u8"电缸不在底座位").c_str(); -// if (m_SignalState.m_HighPressureLackAlarm)return _(u8"高压气不足报警").c_str(); -// if (m_SignalState.m_SystemStopAlarm)return _(u8"系统急停异常").c_str(); -// if (m_SignalState.m_CleanLiftStopAlarm)return _(u8"清粉急停异常").c_str(); -// if (m_Axis->m_Load->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return _(u8"舱门打开时运动受限").c_str(); -// return _(u8"未知原因").c_str(); -//} -// -//bool HBD1200::IsLoadAxisCanMoveRight() -//{ -// if (!m_SignalState.m_PrintJackupInSafePos)return false; -// if (!m_SignalState.m_LoadTorqueInsideLimit)return false; -// if (!m_SignalState.m_LoadPosInsideRightSoftLimit)return false; -// if (!m_SignalState.m_CylinderFixInReleasePos)return false; -// if (!m_SignalState.m_LoadRightNotInsideLimit)return false; -// if (!m_SignalState.m_LoadServoNoAlarm)return false; -// if (!m_SignalState.m_EleServoInBottomPos)return false; -// if (m_SignalState.m_HighPressureLackAlarm)return false; -// if (m_SignalState.m_SystemStopAlarm)return false; -// if (m_SignalState.m_CleanLiftStopAlarm)return false; -// if (m_Axis->m_Load->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return false; -// return true; -//} -// -//string HBD1200::GetLoadAxisCanotMoveRightInfo() { -// if (!m_SignalState.m_PrintJackupInSafePos)return _(u8"打印顶升轴不在安全位").c_str(); -// if (!m_SignalState.m_LoadTorqueInsideLimit)return _(u8"移载扭力越限").c_str(); -// if (!m_SignalState.m_LoadPosInsideRightSoftLimit)return _(u8"移载轴越软右限").c_str(); -// if (!m_SignalState.m_CylinderFixInReleasePos)return _(u8"缸体固定气缸不在松开位").c_str(); -// if (!m_SignalState.m_LoadRightNotInsideLimit)return _(u8"移载轴已到右限位").c_str(); -// if (!m_SignalState.m_LoadServoNoAlarm)return _(u8"移载轴伺服异常").c_str(); -// if (!m_SignalState.m_EleServoInBottomPos)return _(u8"电缸不在底座位").c_str(); -// if (m_SignalState.m_HighPressureLackAlarm)return _(u8"高压气不足报警").c_str(); -// if (m_SignalState.m_SystemStopAlarm)return _(u8"系统急停异常").c_str(); -// if (m_SignalState.m_CleanLiftStopAlarm)return _(u8"清粉急停异常").c_str(); -// if (m_Axis->m_Load->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return _(u8"舱门打开时运动受限").c_str(); -// return _(u8"未知原因").c_str(); -//} -// -//bool HBD1200::IsArmCanMoveBack() -//{ -// if (!m_SignalState.m_PrintUpDownPosBelowPlatform)return false; -// if (!m_SignalState.m_ArmTorqueInsideLimit)return false; -// if (!m_SignalState.m_ArmPosInsideSoftBackLimit)return false; -// if (!m_SignalState.m_ArmPosInsideBackLimit)return false; -// if (!m_SignalState.m_ArmServoNoAlarm)return false; -// if (m_SignalState.m_HighPressureLackAlarm)return false; -// if (m_SignalState.m_SystemStopAlarm)return false; -// if (m_SignalState.m_CleanLiftStopAlarm)return false; -// if (m_Axis->m_Arm->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return false; -// return true; -//} -// -//string HBD1200::GetArmCanotMoveBackInfo() -//{ -// if (!m_SignalState.m_PrintUpDownPosBelowPlatform)return _(u8"打印升降轴高于基板缸平面").c_str(); -// if (!m_SignalState.m_ArmTorqueInsideLimit)return _(u8"铺粉轴扭力越限").c_str(); -// if (!m_SignalState.m_ArmPosInsideSoftBackLimit)return _(u8"铺粉轴位置超过软后限").c_str(); -// if (!m_SignalState.m_ArmPosInsideBackLimit)return _(u8"铺粉轴已到后限位").c_str(); -// if (!m_SignalState.m_ArmServoNoAlarm)return _(u8"铺粉轴伺服异常").c_str(); -// if (m_SignalState.m_HighPressureLackAlarm)return _(u8"高压气不足报警").c_str(); -// if (m_SignalState.m_SystemStopAlarm)return _(u8"系统急停异常").c_str(); -// if (m_SignalState.m_CleanLiftStopAlarm)return _(u8"清粉急停异常").c_str(); -// if (m_Axis->m_Arm->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return _(u8"舱门打开时运动受限").c_str(); -// return _(u8"未知原因").c_str(); -//} -// -//bool HBD1200::IsArmCanMoveFront() -//{ -// if (!m_SignalState.m_PrintUpDownPosBelowPlatform)return false; -// if (!m_SignalState.m_ArmTorqueInsideLimit)return false; -// if (!m_SignalState.m_ArmPosInsideSoftFrontLimit)return false; -// if (!m_SignalState.m_ArmPosInsideFrontLimit)return false; -// if (!m_SignalState.m_ArmServoNoAlarm)return false; -// if (m_SignalState.m_HighPressureLackAlarm)return false; -// if (m_SignalState.m_SystemStopAlarm)return false; -// if (m_SignalState.m_CleanLiftStopAlarm)return false; -// if (m_Axis->m_Arm->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return false; -// return true; -//} -// -//string HBD1200::GetArmCanotMoveFrontInfo() -//{ -// if (!m_SignalState.m_PrintUpDownPosBelowPlatform)return _(u8"打印升降轴高于基板缸平面").c_str(); -// if (!m_SignalState.m_ArmTorqueInsideLimit)return _(u8"铺粉轴扭力越限").c_str(); -// if (!m_SignalState.m_ArmPosInsideSoftFrontLimit)return _(u8"铺粉轴位置超过软前限").c_str(); -// if (!m_SignalState.m_ArmPosInsideFrontLimit)return _(u8"铺粉轴已到前限位").c_str(); -// if (!m_SignalState.m_ArmServoNoAlarm)return _(u8"铺粉轴伺服异常").c_str(); -// if (m_SignalState.m_HighPressureLackAlarm)return _(u8"高压气不足报警").c_str(); -// if (m_SignalState.m_SystemStopAlarm)return _(u8"系统急停异常").c_str(); -// if (m_SignalState.m_CleanLiftStopAlarm)return _(u8"清粉急停异常").c_str(); -// if (m_Axis->m_Arm->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return _(u8"舱门打开时运动受限").c_str(); -// return _(u8"未知原因").c_str(); -//} -// -//bool HBD1200::IsMoldCanMoveUp() -//{ -// if (!m_SignalState.m_PrintTorqueUpInsideLimit)return false; -// if (!m_SignalState.m_ArmNotUponBasePlatform)return false; -// if (!m_SignalState.m_PrintMoldPosInsideUpSoftLimit)return false; -// if (!m_SignalState.m_PrintInsideUpLimit)return false; -// if (!m_SignalState.m_PrintMainServoNoAlarm)return false; -// if (m_SignalState.m_HighPressureLackAlarm)return false; -// if (m_SignalState.m_SystemStopAlarm)return false; -// if (m_SignalState.m_CleanLiftStopAlarm)return false; -// if (!m_SignalState.m_PrintMoldInPrintPos && !m_SignalState.m_PrintMoldInCleanPos && !m_SignalState.m_PrintMoldInHandPos)return false; -// if (m_Axis->m_Mold->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return false; -// return true; -//} -// -//string HBD1200::GetMoldCanotUpInfo() -//{ -// if (!m_SignalState.m_PrintTorqueUpInsideLimit)return _(u8"升降轴上升扭力越限").c_str(); -// if (!m_SignalState.m_ArmNotUponBasePlatform)return _(u8"铺粉臂在基板范围内").c_str(); -// if (!m_SignalState.m_PrintMoldPosInsideUpSoftLimit)return _(u8"升降轴越软上限").c_str(); -// if (!m_SignalState.m_PrintInsideUpLimit)return _(u8"升降轴越上限").c_str(); -// if (!m_SignalState.m_PrintMainServoNoAlarm)return _(u8"打印主轴伺服异常").c_str(); -// if (!m_SignalState.m_PrintMoldInPrintPos && !m_SignalState.m_PrintMoldInCleanPos && !m_SignalState.m_PrintMoldInHandPos) -// { -// return _(u8"缸体不在打印位、清粉位、吊装位").c_str(); -// } -// if (m_SignalState.m_HighPressureLackAlarm)return _(u8"高压气不足报警").c_str(); -// if (m_SignalState.m_SystemStopAlarm)return _(u8"系统急停异常").c_str(); -// if (m_SignalState.m_CleanLiftStopAlarm)return _(u8"清粉急停异常").c_str(); -// if (m_Axis->m_Mold->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return _(u8"舱门打开时运动受限").c_str(); -// return _(u8"未知原因").c_str(); -//} -// -//bool HBD1200::IsMoldCanMoveDown() -//{ -// if (!m_SignalState.m_PrintTorqueDownInsideLimit)return false; -// if (!m_SignalState.m_ArmNotUponBasePlatform)return false; -// if (!m_SignalState.m_PrintAxisPosInsideDownSoftLimit)return false; -// if (!m_SignalState.m_PrintInsideDownLimit)return false; -// if (!m_SignalState.m_PrintMainServoNoAlarm)return false; -// if (m_SignalState.m_HighPressureLackAlarm)return false; -// if (m_SignalState.m_SystemStopAlarm)return false; -// if (m_SignalState.m_CleanLiftStopAlarm)return false; -// if (!m_SignalState.m_PrintMoldInPrintPos && !m_SignalState.m_PrintMoldInCleanPos && !m_SignalState.m_PrintMoldInHandPos)return false; -// if (m_Axis->m_Mold->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return false; -// return true; -//} -// -//string HBD1200::GetMoldCanotDownInfo() -//{ -// if (!m_SignalState.m_PrintTorqueDownInsideLimit)return _(u8"升降轴下降扭力越限").c_str(); -// if (!m_SignalState.m_ArmNotUponBasePlatform)return _(u8"铺粉臂在基板范围内").c_str(); -// if (!m_SignalState.m_PrintAxisPosInsideDownSoftLimit)return _(u8"升降轴越软下限").c_str(); -// if (!m_SignalState.m_PrintInsideDownLimit)return _(u8"升降轴越下限").c_str(); -// if (!m_SignalState.m_PrintMainServoNoAlarm)return _(u8"打印主轴伺服异常").c_str(); -// if (!m_SignalState.m_PrintMoldInPrintPos && !m_SignalState.m_PrintMoldInCleanPos && !m_SignalState.m_PrintMoldInHandPos) -// { -// return _(u8"缸体不在打印位、清粉位、吊装位").c_str(); -// } -// if (m_SignalState.m_HighPressureLackAlarm)return _(u8"高压气不足报警").c_str(); -// if (m_SignalState.m_SystemStopAlarm)return _(u8"系统急停异常").c_str(); -// if (m_SignalState.m_CleanLiftStopAlarm)return _(u8"清粉急停异常").c_str(); -// if (m_Axis->m_Mold->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return _(u8"舱门打开时运动受限").c_str(); -// return _(u8"未知原因").c_str(); -//} \ No newline at end of file +bool HBD1200::CheckPrintMoldReady() +{ + if (m_SignalStateWrapper->m_CylinderState->GetValue() != CylinderInPrintLoaded) + { + return false; + } + else return true; +} + +bool HBD1200::IsLoadAxisCanMoveLeft() +{ + if (!m_SignalState.m_PrintJackupInSafePos)return false; + if (!m_SignalState.m_LoadTorqueInsideLimit)return false; + if (!m_SignalState.m_LoadPosInsideLeftSoftLimit)return false; + if (!m_SignalState.m_CylinderFixInReleasePos)return false; + if (!m_SignalState.m_LoadLeftNotInsideLimit)return false; + if (!m_SignalState.m_LoadServoNoAlarm)return false; + if (!m_SignalState.m_EleServoInBottomPos)return false; + if (m_SignalState.m_HighPressureLackAlarm)return false; + if (m_SignalState.m_SystemStopAlarm)return false; + if (m_SignalState.m_CleanLiftStopAlarm)return false; + if (m_Axis->m_Load->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return false; + return true; +} + +string HBD1200::GetLoadAxisCanotMoveLeftInfo() { + if (!m_SignalState.m_PrintJackupInSafePos)return _(u8"打印顶升轴不在安全位").c_str(); + if (!m_SignalState.m_LoadTorqueInsideLimit)return _(u8"移载扭力越限").c_str(); + if (!m_SignalState.m_LoadPosInsideLeftSoftLimit)return _(u8"移载轴越软左限").c_str(); + if (!m_SignalState.m_CylinderFixInReleasePos)return _(u8"缸体固定气缸不在松开位").c_str(); + if (!m_SignalState.m_LoadLeftNotInsideLimit)return _(u8"移载轴已到左限位").c_str(); + if (!m_SignalState.m_LoadServoNoAlarm)return _(u8"移载轴伺服异常").c_str(); + if (!m_SignalState.m_EleServoInBottomPos)return _(u8"电缸不在底座位").c_str(); + if (m_SignalState.m_HighPressureLackAlarm)return _(u8"高压气不足报警").c_str(); + if (m_SignalState.m_SystemStopAlarm)return _(u8"系统急停异常").c_str(); + if (m_SignalState.m_CleanLiftStopAlarm)return _(u8"清粉急停异常").c_str(); + if (m_Axis->m_Load->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return _(u8"舱门打开时运动受限").c_str(); + return _(u8"未知原因").c_str(); +} + +bool HBD1200::IsLoadAxisCanMoveRight() +{ + if (!m_SignalState.m_PrintJackupInSafePos)return false; + if (!m_SignalState.m_LoadTorqueInsideLimit)return false; + if (!m_SignalState.m_LoadPosInsideRightSoftLimit)return false; + if (!m_SignalState.m_CylinderFixInReleasePos)return false; + if (!m_SignalState.m_LoadRightNotInsideLimit)return false; + if (!m_SignalState.m_LoadServoNoAlarm)return false; + if (!m_SignalState.m_EleServoInBottomPos)return false; + if (m_SignalState.m_HighPressureLackAlarm)return false; + if (m_SignalState.m_SystemStopAlarm)return false; + if (m_SignalState.m_CleanLiftStopAlarm)return false; + if (m_Axis->m_Load->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return false; + return true; +} + +string HBD1200::GetLoadAxisCanotMoveRightInfo() { + if (!m_SignalState.m_PrintJackupInSafePos)return _(u8"打印顶升轴不在安全位").c_str(); + if (!m_SignalState.m_LoadTorqueInsideLimit)return _(u8"移载扭力越限").c_str(); + if (!m_SignalState.m_LoadPosInsideRightSoftLimit)return _(u8"移载轴越软右限").c_str(); + if (!m_SignalState.m_CylinderFixInReleasePos)return _(u8"缸体固定气缸不在松开位").c_str(); + if (!m_SignalState.m_LoadRightNotInsideLimit)return _(u8"移载轴已到右限位").c_str(); + if (!m_SignalState.m_LoadServoNoAlarm)return _(u8"移载轴伺服异常").c_str(); + if (!m_SignalState.m_EleServoInBottomPos)return _(u8"电缸不在底座位").c_str(); + if (m_SignalState.m_HighPressureLackAlarm)return _(u8"高压气不足报警").c_str(); + if (m_SignalState.m_SystemStopAlarm)return _(u8"系统急停异常").c_str(); + if (m_SignalState.m_CleanLiftStopAlarm)return _(u8"清粉急停异常").c_str(); + if (m_Axis->m_Load->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return _(u8"舱门打开时运动受限").c_str(); + return _(u8"未知原因").c_str(); +} + +bool HBD1200::IsArmCanMoveBack() +{ + if (!m_SignalState.m_PrintUpDownPosBelowPlatform)return false; + if (!m_SignalState.m_ArmTorqueInsideLimit)return false; + if (!m_SignalState.m_ArmPosInsideSoftBackLimit)return false; + if (!m_SignalState.m_ArmPosInsideBackLimit)return false; + if (!m_SignalState.m_ArmServoNoAlarm)return false; + if (m_SignalState.m_HighPressureLackAlarm)return false; + if (m_SignalState.m_SystemStopAlarm)return false; + if (m_SignalState.m_CleanLiftStopAlarm)return false; + if (m_Axis->m_Arm->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return false; + return true; +} + +string HBD1200::GetArmCanotMoveBackInfo() +{ + if (!m_SignalState.m_PrintUpDownPosBelowPlatform)return _(u8"打印升降轴高于基板缸平面").c_str(); + if (!m_SignalState.m_ArmTorqueInsideLimit)return _(u8"铺粉轴扭力越限").c_str(); + if (!m_SignalState.m_ArmPosInsideSoftBackLimit)return _(u8"铺粉轴位置超过软后限").c_str(); + if (!m_SignalState.m_ArmPosInsideBackLimit)return _(u8"铺粉轴已到后限位").c_str(); + if (!m_SignalState.m_ArmServoNoAlarm)return _(u8"铺粉轴伺服异常").c_str(); + if (m_SignalState.m_HighPressureLackAlarm)return _(u8"高压气不足报警").c_str(); + if (m_SignalState.m_SystemStopAlarm)return _(u8"系统急停异常").c_str(); + if (m_SignalState.m_CleanLiftStopAlarm)return _(u8"清粉急停异常").c_str(); + if (m_Axis->m_Arm->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return _(u8"舱门打开时运动受限").c_str(); + return _(u8"未知原因").c_str(); +} + +bool HBD1200::IsArmCanMoveFront() +{ + if (!m_SignalState.m_PrintUpDownPosBelowPlatform)return false; + if (!m_SignalState.m_ArmTorqueInsideLimit)return false; + if (!m_SignalState.m_ArmPosInsideSoftFrontLimit)return false; + if (!m_SignalState.m_ArmPosInsideFrontLimit)return false; + if (!m_SignalState.m_ArmServoNoAlarm)return false; + if (m_SignalState.m_HighPressureLackAlarm)return false; + if (m_SignalState.m_SystemStopAlarm)return false; + if (m_SignalState.m_CleanLiftStopAlarm)return false; + if (m_Axis->m_Arm->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return false; + return true; +} + +string HBD1200::GetArmCanotMoveFrontInfo() +{ + if (!m_SignalState.m_PrintUpDownPosBelowPlatform)return _(u8"打印升降轴高于基板缸平面").c_str(); + if (!m_SignalState.m_ArmTorqueInsideLimit)return _(u8"铺粉轴扭力越限").c_str(); + if (!m_SignalState.m_ArmPosInsideSoftFrontLimit)return _(u8"铺粉轴位置超过软前限").c_str(); + if (!m_SignalState.m_ArmPosInsideFrontLimit)return _(u8"铺粉轴已到前限位").c_str(); + if (!m_SignalState.m_ArmServoNoAlarm)return _(u8"铺粉轴伺服异常").c_str(); + if (m_SignalState.m_HighPressureLackAlarm)return _(u8"高压气不足报警").c_str(); + if (m_SignalState.m_SystemStopAlarm)return _(u8"系统急停异常").c_str(); + if (m_SignalState.m_CleanLiftStopAlarm)return _(u8"清粉急停异常").c_str(); + if (m_Axis->m_Arm->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return _(u8"舱门打开时运动受限").c_str(); + return _(u8"未知原因").c_str(); +} + +bool HBD1200::IsMoldCanMoveUp() +{ + if (!m_SignalState.m_PrintTorqueUpInsideLimit)return false; + if (!m_SignalState.m_ArmNotUponBasePlatform)return false; + if (!m_SignalState.m_PrintMoldPosInsideUpSoftLimit)return false; + if (!m_SignalState.m_PrintInsideUpLimit)return false; + if (!m_SignalState.m_PrintMainServoNoAlarm)return false; + if (m_SignalState.m_HighPressureLackAlarm)return false; + if (m_SignalState.m_SystemStopAlarm)return false; + if (m_SignalState.m_CleanLiftStopAlarm)return false; + if (!m_SignalState.m_PrintMoldInPrintPos && !m_SignalState.m_PrintMoldInCleanPos && !m_SignalState.m_PrintMoldInHandPos)return false; + if (m_Axis->m_Mold->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return false; + return true; +} + +string HBD1200::GetMoldCanotUpInfo() +{ + if (!m_SignalState.m_PrintTorqueUpInsideLimit)return _(u8"升降轴上升扭力越限").c_str(); + if (!m_SignalState.m_ArmNotUponBasePlatform)return _(u8"铺粉臂在基板范围内").c_str(); + if (!m_SignalState.m_PrintMoldPosInsideUpSoftLimit)return _(u8"升降轴越软上限").c_str(); + if (!m_SignalState.m_PrintInsideUpLimit)return _(u8"升降轴越上限").c_str(); + if (!m_SignalState.m_PrintMainServoNoAlarm)return _(u8"打印主轴伺服异常").c_str(); + if (!m_SignalState.m_PrintMoldInPrintPos && !m_SignalState.m_PrintMoldInCleanPos && !m_SignalState.m_PrintMoldInHandPos) + { + return _(u8"缸体不在打印位、清粉位、吊装位").c_str(); + } + if (m_SignalState.m_HighPressureLackAlarm)return _(u8"高压气不足报警").c_str(); + if (m_SignalState.m_SystemStopAlarm)return _(u8"系统急停异常").c_str(); + if (m_SignalState.m_CleanLiftStopAlarm)return _(u8"清粉急停异常").c_str(); + if (m_Axis->m_Mold->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return _(u8"舱门打开时运动受限").c_str(); + return _(u8"未知原因").c_str(); +} + +bool HBD1200::IsMoldCanMoveDown() +{ + if (!m_SignalState.m_PrintTorqueDownInsideLimit)return false; + if (!m_SignalState.m_ArmNotUponBasePlatform)return false; + if (!m_SignalState.m_PrintAxisPosInsideDownSoftLimit)return false; + if (!m_SignalState.m_PrintInsideDownLimit)return false; + if (!m_SignalState.m_PrintMainServoNoAlarm)return false; + if (m_SignalState.m_HighPressureLackAlarm)return false; + if (m_SignalState.m_SystemStopAlarm)return false; + if (m_SignalState.m_CleanLiftStopAlarm)return false; + if (!m_SignalState.m_PrintMoldInPrintPos && !m_SignalState.m_PrintMoldInCleanPos && !m_SignalState.m_PrintMoldInHandPos)return false; + if (m_Axis->m_Mold->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return false; + return true; +} + +string HBD1200::GetMoldCanotDownInfo() +{ + if (!m_SignalState.m_PrintTorqueDownInsideLimit)return _(u8"升降轴下降扭力越限").c_str(); + if (!m_SignalState.m_ArmNotUponBasePlatform)return _(u8"铺粉臂在基板范围内").c_str(); + if (!m_SignalState.m_PrintAxisPosInsideDownSoftLimit)return _(u8"升降轴越软下限").c_str(); + if (!m_SignalState.m_PrintInsideDownLimit)return _(u8"升降轴越下限").c_str(); + if (!m_SignalState.m_PrintMainServoNoAlarm)return _(u8"打印主轴伺服异常").c_str(); + if (!m_SignalState.m_PrintMoldInPrintPos && !m_SignalState.m_PrintMoldInCleanPos && !m_SignalState.m_PrintMoldInHandPos) + { + return _(u8"缸体不在打印位、清粉位、吊装位").c_str(); + } + if (m_SignalState.m_HighPressureLackAlarm)return _(u8"高压气不足报警").c_str(); + if (m_SignalState.m_SystemStopAlarm)return _(u8"系统急停异常").c_str(); + if (m_SignalState.m_CleanLiftStopAlarm)return _(u8"清粉急停异常").c_str(); + if (m_Axis->m_Mold->GetState()->m_AxisCfg->m_SafeLimit && !g_SystemInfo->m_EnvState.m_IsPrintCabinDoorClose)return _(u8"舱门打开时运动受限").c_str(); + return _(u8"未知原因").c_str(); +} \ No newline at end of file diff --git a/PrintC/Machine/HBD1200.h b/PrintC/Machine/HBD1200.h index 567acac..feecd63 100644 --- a/PrintC/Machine/HBD1200.h +++ b/PrintC/Machine/HBD1200.h @@ -84,7 +84,7 @@ public: void InitSysParam(SysParamWrapper* spw, void* cc); //void InitPLCCommand(vector& vecs); void GetAlarmState(SignalState& signalState); - //bool CheckPrintMoldReady(); + bool CheckPrintMoldReady(); virtual void CheckIO(); private: diff --git a/PrintC/Machine/Machine.cpp b/PrintC/Machine/Machine.cpp index aaea47b..fb05240 100644 --- a/PrintC/Machine/Machine.cpp +++ b/PrintC/Machine/Machine.cpp @@ -233,6 +233,9 @@ void Machine::Update(const ReadData& rd) { else if (it->nameKey == "WaitConnectBoxCommit") { m_WaitConnectBoxCommit = (bool)stoi(it->strValue); } + else if (it->nameKey == "NeedWaitSelectOutPos") { + m_NeedWaitSelectOutPos = (bool)stoi(it->strValue); + } else { printf("error, key %s do not find...", it->nameKey.c_str()); } diff --git a/PrintC/Machine/Machine.h b/PrintC/Machine/Machine.h index 2d343c7..5249723 100644 --- a/PrintC/Machine/Machine.h +++ b/PrintC/Machine/Machine.h @@ -9,6 +9,20 @@ #include "../UI/UIBean.h" #include "../config/bean/ExtCfg.h" +struct MACHINEPARAM{ + int m_LoadInResut; + string m_LoadInfo; + int m_LoadOutResut; + int m_LoadInProcStep; + int m_LoadOutProcStep; + bool m_isLoadIn; //绑定m_LoadInThread + bool m_isLoadOut; //绑定m_LoadOutThread + bool m_WaitConnectBoxCommit; + bool m_NeedWaitSelectOutPos; + bool m_WaitSelectOutPosCommit; + int m_SelectOutPos; +}; + class Machine { public: Machine(MachineTypeCfg::MachineTypeId type); @@ -45,13 +59,13 @@ protected: LeaveCriticalSection(&m_LoadCS); return rel; } - int GetLoadOutResult() { - int rel = 0; - EnterCriticalSection(&m_LoadCS); - rel = m_LoadOutResut; - LeaveCriticalSection(&m_LoadCS); - return rel; - } + //int GetLoadOutResult() { + // int rel = 0; + // EnterCriticalSection(&m_LoadCS); + // rel = m_LoadOutResut; + // LeaveCriticalSection(&m_LoadCS); + // return rel; + //} int GetLoadInProcStep() { int rel = 0; @@ -69,21 +83,21 @@ protected: return rel; } - string GetLoadInfo() { - string rel = ""; - EnterCriticalSection(&m_LoadCS); - rel = m_LoadInfo; - LeaveCriticalSection(&m_LoadCS); - return rel; - } + //string GetLoadInfo() { + // string rel = ""; + // EnterCriticalSection(&m_LoadCS); + // rel = m_LoadInfo; + // LeaveCriticalSection(&m_LoadCS); + // return rel; + //} - bool IsWaitConnectBoxCommit() { - bool rel = false; - EnterCriticalSection(&m_LoadCS); - rel = m_WaitConnectBoxCommit; - LeaveCriticalSection(&m_LoadCS); - return rel; - } + //bool IsWaitConnectBoxCommit() { + // bool rel = false; + // EnterCriticalSection(&m_LoadCS); + // rel = m_WaitConnectBoxCommit; + // LeaveCriticalSection(&m_LoadCS); + // return rel; + //} void SetWaitConnectBoxCommit(bool commit); @@ -103,6 +117,39 @@ protected: return rel; } + bool GetMachineParam(MACHINEPARAM& mp) { + EnterCriticalSection(&m_LoadCS); + mp.m_LoadInResut = m_LoadInResut; + mp.m_LoadInfo = m_LoadInfo; + mp.m_LoadOutResut = m_LoadOutResut; + mp.m_LoadInProcStep = m_LoadInProcStep; + mp.m_LoadOutProcStep = m_LoadOutProcStep; + mp.m_isLoadIn = m_isLoadIn; + mp.m_isLoadOut = m_isLoadOut; + mp.m_WaitConnectBoxCommit = m_WaitConnectBoxCommit; + mp.m_NeedWaitSelectOutPos = m_NeedWaitSelectOutPos; + mp.m_WaitSelectOutPosCommit = m_WaitSelectOutPosCommit; + mp.m_SelectOutPos = m_SelectOutPos; + + LeaveCriticalSection(&m_LoadCS); + return true; + } + + //bool IsWaitConnectBoxCommit() { return m_WaitConnectBoxCommit; } + //void SetWaitConnectBoxCommit(bool res) { + // EnterCriticalSection(&m_LoadCS); + // m_WaitConnectBoxCommit = commit; + // LeaveCriticalSection(&m_LoadCS); + // + // } + + //void SetNeedWaitSelectOutPos(bool res) { + // EnterCriticalSection(&m_LoadCS); + // m_NeedWaitSelectOutPos->SetValue(res); + // LeaveCriticalSection(&m_LoadCS); + + //} + protected: MachineTypeCfg::MachineTypeId m_Type; SysParamWrapper* m_SysParamWrapper; @@ -134,11 +181,12 @@ protected: int m_LoadOutProcStep; bool m_isLoadIn; //是否载入 bool m_isLoadOut; //是否载出 - bool m_WaitConnectBoxCommit; + bool m_NeedWaitSelectOutPos; + bool m_WaitSelectOutPosCommit; + int m_SelectOutPos; CRITICAL_SECTION m_LoadCS; - }; \ No newline at end of file diff --git a/PrintC/PLC/AxisState.cpp b/PrintC/PLC/AxisState.cpp index 0f35dd4..da04bad 100644 --- a/PrintC/PLC/AxisState.cpp +++ b/PrintC/PLC/AxisState.cpp @@ -5,6 +5,26 @@ #include "../DataManage/DataHandle.h" AxisState::AxisState() + : m_ServoOn(new BoolData("ServoOn", u8"轴伺服ON_RW")) + , m_ServoHomeIndexOn(new BoolData("ServoHomeIndexOn", u8"轴伺服成立原点_RW")) + , m_ServoReset(new BoolData("ServoReset", u8"轴伺服复位_RW")) + , m_MoveP(new BoolData("MoveP", u8"轴相对左运动_手动_RW")) + , m_MoveN(new BoolData("MoveN", u8"轴相对右运动_手动_RW")) + , m_MovePContinue(new BoolData("MovePContinue", u8"轴左JOG_手动_RW")) + , m_MoveNContinue(new BoolData("MoveNContinue", u8"轴右JOG_手动_RW")) + , m_MoveAbsPos(new BoolData("MoveAbsPos", u8"轴绝对值运动_手动_RW")) + , m_MotionStop(new BoolData("MotionStop", u8"轴急停_RW")) + , m_ServoRDY(new BoolData("ServoRDY", u8"轴伺服RDY状态_R")) + , m_ServoHomeDone(new BoolData("ServoHomeDone", u8"轴指令运行HOME_Done_R")) + , m_ResetDone(new BoolData("ResetDone", u8"轴指令运行RESET_Done_R")) + , m_ServoBusy(new BoolData("ServoBusy", u8"轴伺服BUSY_R")) + , m_ServoException(new BoolData("ServoException", u8"轴伺服异常_R")) + , m_Runable(new BoolData("Runable", u8"轴可运行状态_R")) + , m_ExceptionCode(new ShortData("ExceptionCode", u8"轴伺服异常字_R")) + , m_Pos(new FloatData("Pos", u8"当前位置")) + , m_Torque(new FloatData("Torque", u8"当前扭矩")) + , m_ShowPos(new FloatData("ShowPos")) + , m_RPos(new FloatData("RPos")) { size_t ptrSize = sizeof(nullptr); //指针大小 void* startPtr = &m_startFlag + 1; @@ -41,6 +61,9 @@ void AxisState::GetValue(AxisStateValue& value) value.Pos = m_Pos->GetValue(); value.Torque = m_Torque->GetValue(); value.ServoBusy = m_ServoBusy->GetValue(); + value.ShowPos = m_ShowPos->GetValue(); + value.RPos = m_RPos->GetValue(); + } //void AxisState::Update(unsigned char* addr) diff --git a/PrintC/PLC/AxisState.h b/PrintC/PLC/AxisState.h index bd3bf9f..da381a6 100644 --- a/PrintC/PLC/AxisState.h +++ b/PrintC/PLC/AxisState.h @@ -79,6 +79,8 @@ public: FloatData* m_Torque; //当前扭矩 FloatData* m_ShowPos; FloatData* m_RPos; + + char m_endFlag; //结束标志 std::shared_mutex mtx; diff --git a/PrintC/UI/Controller.cpp b/PrintC/UI/Controller.cpp index 2441955..7e1e082 100644 --- a/PrintC/UI/Controller.cpp +++ b/PrintC/UI/Controller.cpp @@ -25,7 +25,7 @@ Controller::~Controller() { DELP(m_SysParamWrapper); DELP(m_AxisRecordWrapper); DELP(m_SignalStateWrapper); - DELP(m_Machine); + //DELP(m_Machine); DELP(m_MachineCfg); SysParam::SFini(); diff --git a/PrintC/UI/UIWin.cpp b/PrintC/UI/UIWin.cpp index 9721c77..5e7888f 100644 --- a/PrintC/UI/UIWin.cpp +++ b/PrintC/UI/UIWin.cpp @@ -296,7 +296,7 @@ void UIWin::Draw() { SetupDockSpace(); DrawTitleBar(); DrawToolBar(); - + DrawPowder(); DrawMain(); } diff --git a/PrintC/config/ConfigManager.h b/PrintC/config/ConfigManager.h index 31d0840..39fecaf 100644 --- a/PrintC/config/ConfigManager.h +++ b/PrintC/config/ConfigManager.h @@ -36,7 +36,6 @@ private: IOCfgWrapper* m_IOCfgWrapper; MachineCfg* m_MachineCfg; RunCfg m_RunCfg; - //ExtCfg m_ExtCfg; AlarmCfgWrapper* m_AlarmCfgWrapper; ParamLimitCfgNew m_ParamLimitCfg; diff --git a/PrintC/config/bean/AxisCfg.h b/PrintC/config/bean/AxisCfg.h index 64b053f..eeb967e 100644 --- a/PrintC/config/bean/AxisCfg.h +++ b/PrintC/config/bean/AxisCfg.h @@ -14,6 +14,7 @@ using namespace std; #define GTS_AXIS_ID_CLEAN 5 #define GTS_AXIS_ID_ELE 6 +#pragma pack(1) class AxisCfg : public Base { public: @@ -70,4 +71,5 @@ public: BoolData* m_SafeLimit; char m_endFlag; }; +#pragma pack() diff --git a/PrintC/config/bean/ParamLimitCfg.h b/PrintC/config/bean/ParamLimitCfg.h index 060b7a2..5eb3f72 100644 --- a/PrintC/config/bean/ParamLimitCfg.h +++ b/PrintC/config/bean/ParamLimitCfg.h @@ -155,6 +155,7 @@ public: }; +#pragma pack(1) class ParamLimitCfgNew :public Base { public: ParamLimitCfgNew(); @@ -227,4 +228,5 @@ private: FloatData* m_CoverDistanceMax; char m_endFlag; -}; \ No newline at end of file +}; +#pragma pack() \ No newline at end of file diff --git a/PrintC/output/Release/log/2024.hbd b/PrintC/output/Release/log/2024.hbd index 1d884fee59b6774be1508dc76d8fe5e95d5ca1be..46679f0a6a996f811e3fb1183039841a556eba23 100644 GIT binary patch delta 16526 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 == CylinderInCleanInsidePlatformUnConnectBox) { - m_WaitConnectBoxCommit->SetValue(true); - while (m_LoadCtrlFlag && m_WaitConnectBoxCommit->GetValue()) { + SetWaitConnectBoxCommit(true); + MACHINEPARAM mp; + while (m_LoadCtrlFlag && GetMachineParam(mp) && mp.m_WaitConnectBoxCommit) { Sleep(300); } - if (!m_WaitConnectBoxCommit->GetValue()) + if (!(GetMachineParam(mp) && mp.m_WaitConnectBoxCommit)) { SetLoadOutProcStep(Out_CylinderConnectCleanBox); m_SignalStateWrapper->m_CylinderConnectCleanBoxTriger->SetValue(true); diff --git a/PrintS/Machine/HBD1200.cpp b/PrintS/Machine/HBD1200.cpp index eb0b53d..54a54bb 100644 --- a/PrintS/Machine/HBD1200.cpp +++ b/PrintS/Machine/HBD1200.cpp @@ -6692,19 +6692,21 @@ void HBD1200::LoadOutRun() return; } - m_WaitSelectOutPosCommit = false; + SetWaitSelectOutPosCommit(false); if (m_RunCfg->m_ShowUnloadHandPos) { - m_NeedWaitSelectOutPos = true; - while (!m_WaitSelectOutPosCommit && m_LoadCtrlFlag) { + SetNeedWaitSelectOutPos(true); + MACHINEPARAM mp; + while (!(GetMachineParam(mp) && mp.m_WaitSelectOutPosCommit) && m_LoadCtrlFlag) { Sleep(300); } } else { - m_SelectOutPos = 0; + SetSelectOutPos(0); } - m_NeedWaitSelectOutPos = false; + //m_NeedWaitSelectOutPos->SetValue(false); + SetNeedWaitSelectOutPos(false); if (!m_LoadCtrlFlag) { SetLoadOutResult(Out_Intercept, _(u8"载出中断").c_str()); return; @@ -6762,7 +6764,10 @@ void HBD1200::LoadOutRun() SetLoadOutResult(Out_Intercept, _(u8"载出中断").c_str()); return; } - if (m_SelectOutPos == 0) { + + MACHINEPARAM mp; + GetMachineParam(mp); + if (mp.m_SelectOutPos == 0) { if (m_SignalStateWrapper->m_CylinderState->GetValue() == CylinderInCleanConnectedBox) { SetLoadOutResult(Out_Success, _(u8"缸体已载出到清粉位").c_str()); @@ -6825,11 +6830,12 @@ void HBD1200::LoadOutRun() return; } if (m_SignalStateWrapper->m_CylinderState->GetValue() == CylinderInCleanUnConnectBox) { - m_WaitConnectBoxCommit->SetValue(true); - while (m_LoadCtrlFlag && m_WaitConnectBoxCommit->GetValue()) { + SetWaitConnectBoxCommit(true); + MACHINEPARAM mp; + while (m_LoadCtrlFlag && GetMachineParam(mp) && mp.m_WaitConnectBoxCommit) { Sleep(300); } - if (!m_WaitConnectBoxCommit->GetValue()) + if (!(GetMachineParam(mp) && mp.m_WaitConnectBoxCommit)) { SetLoadOutProcStep(Out_CylinderConnectCleanBox); m_SignalStateWrapper->m_CylinderConnectCleanBoxTriger->SetValue(true); @@ -6887,7 +6893,7 @@ void HBD1200::LoadOutRun() } SetLoadOutResult(Out_Success, _(u8"缸体载出已完成").c_str()); } - else if (m_SelectOutPos == 1) { + else if (mp.m_SelectOutPos == 1) { if (m_SignalStateWrapper->m_CylinderState->GetValue() == CylinderInCleanConnectedBox) { SetLoadOutProcStep(Out_CylinderDisconnectCleanBox); diff --git a/PrintS/Machine/Machine.cpp b/PrintS/Machine/Machine.cpp index c73b088..6b9234e 100644 --- a/PrintS/Machine/Machine.cpp +++ b/PrintS/Machine/Machine.cpp @@ -29,8 +29,8 @@ Machine::Machine(MachineTypeCfg::MachineTypeId type) , m_WaitConnectBoxCommit(new BoolData("WaitConnectBoxCommit")) , m_isLoadIn(new BoolData("IsLoadIn",u8"是否载入")) , m_isLoadOut(new BoolData("IsLoadOut",u8"是否载出")) - , m_NeedWaitSelectOutPos(false) - , m_WaitSelectOutPosCommit(false) + , m_NeedWaitSelectOutPos(new BoolData("NeedWaitSelectOutPos")) + , m_WaitSelectOutPosCommit(new BoolData("WaitSelectOutPosCommit")) { InsertMp(&m_LoadInfo, 1); InsertMp(&m_LoadInProcStep, 1); @@ -40,6 +40,9 @@ Machine::Machine(MachineTypeCfg::MachineTypeId type) InsertMp(&m_WaitConnectBoxCommit, 1); InsertMp(&m_isLoadIn, 1); InsertMp(&m_isLoadOut, 1); + InsertMp(&m_NeedWaitSelectOutPos, 1); + InsertMp(&m_WaitSelectOutPosCommit, 1); + InsertMp(&m_SelectOutPos, 1); m_AlarmEnableMap["CarbinDoorOpen"] = true; @@ -382,7 +385,7 @@ void Machine::LoadIn() m_LoadCtrlFlag = true; SetLoadInResult(0, ""); m_LoadInThread = AtlCreateThread(LoadInProc, this); - m_isLoadIn->SetValue(true); + SetIsLoadIn(true); } DWORD WINAPI Machine::LoadInProc(Machine* _this) @@ -395,7 +398,7 @@ DWORD WINAPI Machine::LoadInProc(Machine* _this) { CloseHandle(_this->m_LoadInThread); _this->m_LoadInThread = INVALID_HANDLE_VALUE; - _this->m_isLoadIn->SetValue(false); + _this->SetIsLoadIn(false); } } return 0; @@ -407,10 +410,10 @@ void Machine::LoadOut() if (m_LoadOutThread != INVALID_HANDLE_VALUE)return; m_LoadCtrlFlag = true; SetLoadOutResult(0, ""); - m_WaitConnectBoxCommit->SetValue(false); - m_WaitSelectOutPosCommit = false; + SetWaitConnectBoxCommit(false); + SetWaitSelectOutPosCommit(false); m_LoadOutThread = AtlCreateThread(LoadOutProc, this); - m_isLoadOut->SetValue(true); + SetIsLoadOut(true); } DWORD WINAPI Machine::LoadOutProc(Machine* _this) @@ -423,7 +426,7 @@ DWORD WINAPI Machine::LoadOutProc(Machine* _this) { CloseHandle(_this->m_LoadOutThread); _this->m_LoadOutThread = INVALID_HANDLE_VALUE; - _this->m_isLoadOut->SetValue(false); + _this->SetIsLoadOut(false); } } return 0; diff --git a/PrintS/Machine/Machine.h b/PrintS/Machine/Machine.h index fe71d6c..f3ce904 100644 --- a/PrintS/Machine/Machine.h +++ b/PrintS/Machine/Machine.h @@ -21,6 +21,20 @@ #include "../LanguageManager.h" using namespace std; +struct MACHINEPARAM { + int m_LoadInResut; + string m_LoadInfo; + int m_LoadOutResut; + int m_LoadInProcStep; + int m_LoadOutProcStep; + bool m_isLoadIn; //绑定m_LoadInThread + bool m_isLoadOut; //绑定m_LoadOutThread + bool m_WaitConnectBoxCommit; + bool m_NeedWaitSelectOutPos; + bool m_WaitSelectOutPosCommit; + int m_SelectOutPos; +}; + class Machine :public Base { typedef void(*IoVersionCheck)(vector&, IOCfgWrapper*, string str, int type); @@ -121,9 +135,6 @@ public: //virtual bool CheckPrintMoldReady() = 0; - bool IsWaitConnectBoxCommit() { return m_WaitConnectBoxCommit->GetValue(); } - void SetWaitConnectBoxCommit(bool commit) { m_WaitConnectBoxCommit->SetValue(commit); } - virtual bool CheckPrintHigh(float jobhigh) { return true; } @@ -139,28 +150,14 @@ public: protected: virtual void LoadOutRun() = 0; virtual void LoadInRun() = 0; - bool IsLoadIn() { m_isLoadIn->SetValue(m_LoadInThread != INVALID_HANDLE_VALUE); return m_isLoadIn->GetValue(); } - bool IsLoadOut() { m_isLoadOut->SetValue(m_LoadOutThread != INVALID_HANDLE_VALUE); return m_isLoadOut->GetValue(); } - /*int GetLoadInResult() { - int rel = 0; - EnterCriticalSection(&m_LoadCS); - rel= m_LoadInResut; - LeaveCriticalSection(&m_LoadCS); - return rel; - } - int GetLoadOutResult() { - int rel = 0; - EnterCriticalSection(&m_LoadCS); - rel = m_LoadOutResut; - LeaveCriticalSection(&m_LoadCS); - return rel; - }*/ + void SetLoadInResult(int res,string info) { EnterCriticalSection(&m_LoadCS); m_LoadInResut->SetValue( res); m_LoadInfo ->SetValue( info); LeaveCriticalSection(&m_LoadCS); } + void SetLoadOutResult(int res,string info) { EnterCriticalSection(&m_LoadCS); m_LoadOutResut->SetValue(res); @@ -168,21 +165,24 @@ protected: LeaveCriticalSection(&m_LoadCS); } - //int GetLoadInProcStep() { - // int rel = 0; - // EnterCriticalSection(&m_LoadCS); - // rel = m_LoadInProcStep->GetValue(); - // LeaveCriticalSection(&m_LoadCS); - // return rel; - //} + bool GetMachineParam(MACHINEPARAM& mp) { + EnterCriticalSection(&m_LoadCS); + mp.m_LoadInResut = m_LoadInResut->GetValue(); + mp.m_LoadInfo = m_LoadInfo->GetValueStr(); + mp.m_LoadOutResut = m_LoadOutResut->GetValue(); + mp.m_LoadInProcStep = m_LoadInProcStep->GetValue(); + mp.m_LoadOutProcStep = m_LoadOutProcStep->GetValue(); + mp.m_isLoadIn = m_isLoadIn->GetValue(); + mp.m_isLoadOut = m_isLoadOut->GetValue(); + mp.m_WaitConnectBoxCommit = m_WaitConnectBoxCommit->GetValue(); + mp.m_NeedWaitSelectOutPos = m_NeedWaitSelectOutPos->GetValue(); + mp.m_WaitSelectOutPosCommit = m_WaitSelectOutPosCommit->GetValue(); + mp.m_SelectOutPos = m_SelectOutPos->GetValue(); + + LeaveCriticalSection(&m_LoadCS); + return true; + } - //int GetLoadOutProcSetp() { - // int rel = 0; - // EnterCriticalSection(&m_LoadCS); - // rel = m_LoadOutProcStep; - // LeaveCriticalSection(&m_LoadCS); - // return rel; - //} void SetLoadInProcStep(int res) { EnterCriticalSection(&m_LoadCS); @@ -195,13 +195,40 @@ protected: LeaveCriticalSection(&m_LoadCS); } - //string GetLoadInfo() { - // string rel = ""; - // EnterCriticalSection(&m_LoadCS); - // rel = m_LoadInfo; - // LeaveCriticalSection(&m_LoadCS); - // return rel; - //} + void SetIsLoadIn(bool res) { + EnterCriticalSection(&m_LoadCS); + m_isLoadIn->SetValue(res); + LeaveCriticalSection(&m_LoadCS); + } + void SetIsLoadOut(bool res) { + EnterCriticalSection(&m_LoadCS); + m_isLoadOut->SetValue(res); + LeaveCriticalSection(&m_LoadCS); + } + + void SetWaitConnectBoxCommit(bool res) { + EnterCriticalSection(&m_LoadCS); + m_WaitConnectBoxCommit->SetValue(res); + LeaveCriticalSection(&m_LoadCS); + } + + void SetNeedWaitSelectOutPos(bool res) { + EnterCriticalSection(&m_LoadCS); + m_NeedWaitSelectOutPos->SetValue(res); + LeaveCriticalSection(&m_LoadCS); + } + + void SetWaitSelectOutPosCommit(bool res) { + EnterCriticalSection(&m_LoadCS); + m_WaitSelectOutPosCommit->SetValue(res); + LeaveCriticalSection(&m_LoadCS); + } + + void SetSelectOutPos(int res) { + EnterCriticalSection(&m_LoadCS); + m_SelectOutPos->SetValue(res); + LeaveCriticalSection(&m_LoadCS); + } private: @@ -249,16 +276,15 @@ protected: IntData* m_LoadOutResut; IntData* m_LoadInProcStep; IntData* m_LoadOutProcStep; - BoolData* m_WaitConnectBoxCommit; BoolData* m_isLoadIn; //绑定m_LoadInThread BoolData* m_isLoadOut; //绑定m_LoadOutThread - - - bool m_NeedWaitSelectOutPos; - bool m_WaitSelectOutPosCommit; - int m_SelectOutPos; - CRITICAL_SECTION m_LoadCS; + BoolData* m_WaitConnectBoxCommit; + BoolData* m_NeedWaitSelectOutPos; + BoolData* m_WaitSelectOutPosCommit; + IntData* m_SelectOutPos; + + CRITICAL_SECTION m_LoadCS; vector m_AxisTabs; };