#include "PowderSupplySimpleClient.h" #include "S7Command.h" #include "../SystemInfo.h" #include "../external/imgui/imgui_custom.h" #include "../LanguageManager.h" #include "../config/ConfigManager.h" #include #include "../Toast.h" //#include "../ScannerCtrl/BaseCtrl.h" #include "../utils/DataByte.h" PowderSupplySimpleClient::PowderSupplySimpleClient(CommunicationCfg* pconfig) :S7Client(pconfig) { m_RunCfg = ConfigManager::GetInstance()->GetRunCfg(); m_ExtCfg = ConfigManager::GetInstance()->GetExtCfg(); m_PowderEstimateCfg = ConfigManager::GetInstance()->GetPowderEstimateCfg(); IOCfgWrapper* iw = ConfigManager::GetInstance()->GetIoCfgWrapper(); m_IOCfgWrapper = iw; m_AutoSupplyThread = INVALID_HANDLE_VALUE; m_AutoSupplyFlag = false; m_InfoTick = GetTickCount64(); size_t ptrSize = sizeof(nullptr); //指针大小 void* startPtr = &m_ClientState.m_startFlag + 1; size_t count = ((size_t)&m_ClientState.m_endFlag - (size_t)startPtr) / ptrSize; InsertMp(startPtr, count); startPtr = &m_ShowAssist.m_startFlag + 1; count = ((size_t)&m_ShowAssist.m_endFlag - (size_t)startPtr) / ptrSize; InsertMp(startPtr, count); } PowderSupplySimpleClient::~PowderSupplySimpleClient() { m_AutoSupplyFlag = false; if (m_AutoSupplyThread != INVALID_HANDLE_VALUE) { if (WaitForSingleObject(m_AutoSupplyThread, 500) == WAIT_TIMEOUT) { TerminateThread(m_AutoSupplyThread, 1); } CloseHandle(m_AutoSupplyThread); m_AutoSupplyThread = INVALID_HANDLE_VALUE; } RequestSupplyStop(); Sleep(500); Shutdown(); } void PowderSupplySimpleClient::InitCommand() { S7Command* pcommand = new S7Command(S7_COMMAND_READ_INFO, READ_ITEM_COUNT); TS7DataItem* items = pcommand->getDataItems(); items[0].Area = S7AreaDB; items[0].WordLen = S7WLByte; items[0].DBNumber = 1; items[0].Start = 0; items[0].Amount = 3; items[0].pdata = new unsigned char[3]; items[1].Area = S7AreaDB; items[1].WordLen = S7WLByte; items[1].DBNumber = 1; items[1].Start = 105; items[1].Amount = 1; items[1].pdata = new unsigned char[1]; items[2].Area = S7AreaDB; items[2].WordLen = S7WLByte; items[2].DBNumber = 1; items[2].Start = 200; items[2].Amount = 35; items[2].pdata = new unsigned char[35]; pcommand->m_Ref = this; pcommand->m_Fun = &PowderSupplySimpleClient::ProcReadInfo; pcommand->isNeedDel = false; //写压力 S7Command* pressureCom = new S7Command(S7_COMMAND_WRITE, 1); TS7DataItem* dataItem = pressureCom->getDataItems(); dataItem[0].Area = S7AreaDB; dataItem[0].DBNumber = 1; dataItem[0].Start = 226; dataItem[0].WordLen = S7WLByte; dataItem[0].Amount = 4; unsigned char* pfloat = new unsigned char[4]; S7FLOATDATA fdata; fdata.fValue = g_SystemInfo->m_EnvState.m_PowderJarCabinPressureVoltage; pfloat[0] = fdata.data[3]; pfloat[1] = fdata.data[2]; pfloat[2] = fdata.data[1]; pfloat[3] = fdata.data[0]; dataItem[0].pdata = pfloat; //char* temp= (char*)dataItem[0].pdata; m_PressureWriteValue = ((unsigned char*)dataItem[0].pdata); pressureCom->m_Ref = this; //pressureCom->m_Fun = &PowderSupplySimpleClient::ProcWriteValueXT; pressureCom->isNeedDel = false; pressureCom->m_PreWrite = &PowderSupplySimpleClient::ProcSetPressureValue; m_CycleCommands.push_back(pcommand); m_CycleCommands.push_back(pressureCom); } void PowderSupplySimpleClient::ProcSetPressureValue(void *pobject, Command* pcommand) { if (pobject == NULL)return; PowderSupplySimpleClient* ppw = (PowderSupplySimpleClient*)pobject; S7FLOATDATA fdata; g_SystemInfo->LockInfo(); fdata.fValue = g_SystemInfo->m_EnvState.m_PowderJarCabinPressureVoltage; g_SystemInfo->UnlockInfo(); unsigned char* pfloat = new unsigned char[4]; pfloat[0] = fdata.data[3]; pfloat[1] = fdata.data[2]; pfloat[2] = fdata.data[1]; pfloat[3] = fdata.data[0]; ppw->m_PressureWriteValue = (unsigned char*)pfloat; } void PowderSupplySimpleClient::ProcReadInfo(void *pobject, Command* pcommand) { S7Command* s7Command = (S7Command*)pcommand; TS7DataItem* pdataItems = s7Command->getDataItems(); unsigned int itemcount = s7Command->getItemCount(); if (pobject == NULL || itemcount != READ_ITEM_COUNT)return; PowderSupplySimpleClient* ppw = (PowderSupplySimpleClient*)pobject; TS7DataItem pReq = pdataItems[0]; TS7DataItem pNet = pdataItems[1]; TS7DataItem pCtrl = pdataItems[2]; EnterCriticalSection(&ppw->m_ValueCS); if (pReq.Result == 0) { unsigned char* data = (unsigned char*)pReq.pdata; ppw->m_ClientState.m_RequestDropPowder->SetValue(((data[0] & 0x1) > 0 ? true : false)); ppw->m_ClientState.m_DropPowderEnable->SetValue(((data[0] & 0x2) > 0 ? true : false)); ppw->m_ClientState.m_OpenDropPowderValve->SetValue(((data[0] & 04) > 0 ? true : false)); ppw->m_ClientState.m_SupplyBlockAlarm->SetValue(((data[2] & 0x1) > 0 ? true : false)); ppw->m_ClientState.m_SupplyFilterBlockAlarm->SetValue(((data[2] & 0x2) > 0 ? true : false)); ppw->m_ClientState.m_SupplyJarHangUpPowderAlarm->SetValue(((data[2] & 0x4) > 0 ? true : false)); ppw->m_ClientState.m_OxygenOverLimitAlarm->SetValue(((data[2] & 0x8) > 0 ? true : false)); ppw->m_ClientState.m_DeoxygenStartupFailed->SetValue(((data[2] & 0x10) > 0 ? true : false)); ppw->m_ClientState.m_SupplyPowderStartupFailed->SetValue(((data[2] & 0x20) > 0 ? true : false)); ppw->m_ClientState.m_OxygenDetectorOfflineAlarm->SetValue(((data[2] & 0x40) > 0 ? true : false)); ppw->m_ClientState.m_FanForceRunAlarm->SetValue(((data[2] & 0x80) > 0 ? true : false)); } if (pNet.Result == 0) { unsigned char* data = (unsigned char*)pNet.pdata; ppw->m_ClientState.m_DeoxygenActive->SetValue(((data[0] & 0x1) > 0 ? true : false)); ppw->m_ClientState.m_RequestSupplyPowder->SetValue(((data[0] & 0x2) > 0 ? true : false)); } if (pCtrl.Result == 0) { unsigned char* data = (unsigned char*)pCtrl.pdata; S7FLOATDATA machineOxygenTarge; S7FLOATDATA machineOxygenAlarm; S7FLOATDATA machineOxygenRealtime; S7FLOATDATA pressureDif; ppw->m_ClientState.m_PcCtrlSupply->SetValue(((data[0] & 0x1) > 0 ? true : false)); ppw->m_ClientState.m_ReactiveMetals->SetValue(((data[0] & 0x2) > 0 ? true : false)); // ppw->m_ClientState.m_SupplyBlockAlarm ->SetValue( ((data[0] & 0x4) > 0 ? true : false); // ppw->m_ClientState.m_SupplyFilterBlockAlarm ->SetValue( ((data[0] & 0x8) > 0 ? true : false); ppw->m_ClientState.m_EnableHammer->SetValue(!((data[0] & 0x10) > 0 ? true : false)); ppw->m_ClientState.m_EnableNewPowderDorpFreq->SetValue(((data[0] & 0x20) > 0 ? true : false)); machineOxygenTarge.data[0] = data[7]; machineOxygenTarge.data[1] = data[6]; machineOxygenTarge.data[2] = data[5]; machineOxygenTarge.data[3] = data[4]; machineOxygenAlarm.data[0] = data[11]; machineOxygenAlarm.data[1] = data[10]; machineOxygenAlarm.data[2] = data[9]; machineOxygenAlarm.data[3] = data[8]; machineOxygenRealtime.data[0] = data[15]; machineOxygenRealtime.data[1] = data[14]; machineOxygenRealtime.data[2] = data[13]; machineOxygenRealtime.data[3] = data[12]; ppw->m_ClientState.m_PowderValveOpenTime->SetValue((float)((data[16] & 0xff) << 8) + (data[17] & 0xff) / 10.0f); ppw->m_ClientState.m_PowderValveCloseTime->SetValue((float)((data[18] & 0xff) << 8) + (data[19] & 0xff) / 10.0f); ppw->m_ClientState.m_AirHammerOpenTime->SetValue((float)((data[20] & 0xff) << 8) + (data[21] & 0xff) / 10.0f); ppw->m_ClientState.m_AirHammerCloseTime->SetValue((float)((data[22] & 0xff) << 8) + (data[23] & 0xff) / 10.0f); pressureDif.data[0] = data[29]; pressureDif.data[1] = data[28]; pressureDif.data[2] = data[27]; pressureDif.data[3] = data[26]; ppw->m_ClientState.m_MachineOxygenTarge->SetValue(machineOxygenTarge.fValue); ppw->m_ClientState.m_MachineOxygenAlarm->SetValue(machineOxygenAlarm.fValue); ppw->m_ClientState.m_MachineOxygenRealtime->SetValue(machineOxygenRealtime.fValue); ppw->m_ClientState.m_PressureDif->SetValue(pressureDif.fValue); ppw->m_ClientState.m_SupplyBlockStopMinute->SetValue(((data[30] & 0xff) << 8) + (data[31] & 0xff)); ppw->m_ClientState.m_FanWorkTiming->SetValue(data[32]); ppw->m_ClientState.m_FanWorkStopTime->SetValue(data[33]); ppw->m_ClientState.m_FanCoolTime->SetValue(data[34]); } LeaveCriticalSection(&ppw->m_ValueCS); } void PowderSupplySimpleClient::GetStat(PowderSupplySimpleStat& stat) { EnterCriticalSection(&m_ValueCS); memcpy_s(&stat, sizeof(PowderSupplySimpleStat), &m_ClientState, sizeof(PowderSupplySimpleStat)); LeaveCriticalSection(&m_ValueCS); } void PowderSupplySimpleClient::SetBit(int dindex, bool flag) { if (!IsServerConnected())return; EnterCriticalSection(&m_RtcCS); S7Command* pcommand = new S7Command(S7_COMMAND_WRITE, 1); TS7DataItem* items = pcommand->getDataItems(); //items[0].Area = S7AreaMK; items[0].Area = S7AreaDB; items[0].DBNumber = 1; items[0].Start = dindex; items[0].WordLen = S7WLBit; items[0].Amount = 1; bool* tempv = new bool[1]; tempv[0] = flag; items[0].pdata = tempv; pcommand->m_Ref = this; pcommand->m_waitTime = 0; m_RTCommands.push(pcommand); LeaveCriticalSection(&m_RtcCS); } void PowderSupplySimpleClient::RequestSupplyStart() { SetBit(0, true); } void PowderSupplySimpleClient::RequestSupplyStop() { SetBit(0, false); } void PowderSupplySimpleClient::AutoSupply() { //if (!m_PowderPositon1 || !m_PowderPositon2 || !m_PowderPositon3 || !m_PowderPositon4 || !m_PowderPositon5)return; //if (m_Stat.m_PowderInhaleActive)return; if (!IsServerConnected() || !IsSignalConnected())return; if (!m_IOCfgWrapper->IsSafeDoorClose())return; if (!m_ClientState.m_DropPowderEnable) { uint64_t tnow = GetTickCount64(); if (tnow - m_InfoTick > 20000) { g_Toast->AddToast(new ToastBean(_(u8"送粉失败:未达到送粉条件").c_str(), 5000, Toast::COLOR_ORANGE)); m_InfoTick = tnow; } return; } if (m_AutoSupplyThread != INVALID_HANDLE_VALUE) return; m_AutoSupplyFlag = true; m_AutoSupplyThread = AtlCreateThread(AutoSupplyProc, this); } DWORD WINAPI PowderSupplySimpleClient::AutoSupplyProc(PowderSupplySimpleClient* _this) { if (_this) { _this->AutoSupplyRun(); CloseHandle(_this->m_AutoSupplyThread); _this->m_AutoSupplyThread = INVALID_HANDLE_VALUE; _this->m_AutoSupplyFlag = false; } return 0; } void PowderSupplySimpleClient::StopAutoSupply() { m_AutoSupplyFlag = false; if (m_AutoSupplyThread != INVALID_HANDLE_VALUE) { if (WaitForSingleObject(m_AutoSupplyThread, 500) == WAIT_TIMEOUT) { TerminateThread(m_AutoSupplyThread, 1); } CloseHandle(m_AutoSupplyThread); m_AutoSupplyThread = INVALID_HANDLE_VALUE; } RequestSupplyStop(); } void PowderSupplySimpleClient::AutoSupplyRun() { g_Toast->AddToast(new ToastBean(_(u8"开始自动供粉").c_str(), 5000, Toast::COLOR_GREEN)); RequestStart(); bool isfinish = false; uint64_t tbegin = GetTickCount64(); unsigned int autoSupplyRunTime = 0; int disconnectTimes = 0; bool isDisconnect = false; bool isDoorOpen = false; while (m_AutoSupplyFlag) { //if (!BaseCtrl::IsStart()) { // break; //} if (!m_ClientState.m_DropPowderEnable) { break; } if (IsPowderEnough()) { isfinish = true; break; } uint64_t tnow = GetTickCount64(); autoSupplyRunTime =(unsigned int) tnow - tbegin; if (autoSupplyRunTime > m_PowderEstimateCfg->m_AutoSupplyTimeoutMinute * 60 * 1000) { isfinish = true; break; } if (!IsServerConnected()) { disconnectTimes++; if (disconnectTimes > 120) { isDisconnect = true; break; } } else { disconnectTimes = 0; } if (!m_IOCfgWrapper->IsSafeDoorClose()) { isDoorOpen = true; break; } Sleep(500); } if (isDisconnect) { g_Toast->AddToast(new ToastBean(_(u8"由于供粉设备通讯连接中断,自动送粉中止").c_str(), 5000, Toast::COLOR_RED)); } if (isDoorOpen) { g_Toast->AddToast(new ToastBean(_(u8"舱门打开终止送粉").c_str(), 5000, Toast::COLOR_RED)); } RequestSupplyStop(); Sleep(500); if (isfinish) { g_Toast->AddToast(new ToastBean(_(u8"自动供粉完成").c_str(), 5000, Toast::COLOR_GREEN)); } } bool PowderSupplySimpleClient::IsPowderEnough() { bool rel = true; if (m_ExtCfg->m_UsePowderStick) { if (g_SystemInfo->GetPowderQty()*100.0f < m_PowderEstimateCfg->m_StopSupplyQty) { rel = false; } } else { for (size_t i = m_PowderEstimateCfg->m_StopSupplyPos; i < m_PowderEstimateCfg->m_PEVec.size(); i++) { if (!m_PowderEstimateCfg->m_PEVec[i]->m_PosSensor->IsActive()) { rel = false; break; } } } return rel; } bool PowderSupplySimpleClient::IsAutoSuppling() { return (m_AutoSupplyThread != INVALID_HANDLE_VALUE); } void PowderSupplySimpleClient::SetReactiveMetals(bool enable) { SetBit(200 * 8 + 1, enable); } void PowderSupplySimpleClient::SetDeoxygenActive(bool enable) { SetBit(105 * 8, enable); } void PowderSupplySimpleClient::SetSupplyEnable(bool enable) { SetBit(105 * 8 + 1, enable); } void PowderSupplySimpleClient::SetPCCtrlSupply(bool enable) { SetBit(200 * 8, enable); } void PowderSupplySimpleClient::SetOpenDropPowderValve(bool enable) { SetBit(2, enable); } void PowderSupplySimpleClient::SetStartHammer(bool enable) { SetBit(200 * 8 + 4, enable); } void PowderSupplySimpleClient::SetStartNewPowderDorpFreq(bool enable) { SetBit(200 * 8 + 5, enable); } void PowderSupplySimpleClient::SetDBFloat(int dindex, float fvalue) { EnterCriticalSection(&m_RtcCS); S7Command* pcommand = new S7Command(S7_COMMAND_WRITE, 1); TS7DataItem* items = pcommand->getDataItems(); items[0].Area = S7AreaDB; items[0].DBNumber = 1; items[0].Start = dindex; items[0].WordLen = S7WLByte; items[0].Amount = 4; unsigned char* pfloat = new unsigned char[4]; S7FLOATDATA fdata; fdata.fValue = fvalue; pfloat[0] = fdata.data[3]; pfloat[1] = fdata.data[2]; pfloat[2] = fdata.data[1]; pfloat[3] = fdata.data[0]; items[0].pdata = pfloat; pcommand->m_Ref = this; //pcommand->m_Fun = &PurifierClient::ProcWriteValueXT; m_RTCommands.push(pcommand); LeaveCriticalSection(&m_RtcCS); } void PowderSupplySimpleClient::SetDBWord(int dindex, unsigned short fvalue) { EnterCriticalSection(&m_RtcCS); S7Command* pcommand = new S7Command(S7_COMMAND_WRITE, 1); TS7DataItem* items = pcommand->getDataItems(); items[0].Area = S7AreaDB; items[0].DBNumber = 1; items[0].Start = dindex; items[0].WordLen = S7WLByte; items[0].Amount = 2; unsigned char* pfloat = new unsigned char[2]; S7WORDDATA fdata; fdata.wValue = fvalue; pfloat[0] = fdata.data[1]; pfloat[1] = fdata.data[0]; items[0].pdata = pfloat; pcommand->m_Ref = this; //pcommand->m_Fun = &PurifierClient::ProcWriteValueXT; m_RTCommands.push(pcommand); LeaveCriticalSection(&m_RtcCS); } void PowderSupplySimpleClient::SetDBByte(int dindex, unsigned char fvalue) { EnterCriticalSection(&m_RtcCS); S7Command* pcommand = new S7Command(S7_COMMAND_WRITE, 1); TS7DataItem* items = pcommand->getDataItems(); items[0].Area = S7AreaDB; items[0].DBNumber = 1; items[0].Start = dindex; items[0].WordLen = S7WLByte; items[0].Amount = 1; unsigned char* pfloat = new unsigned char[1]; // S7WORDDATA fdata; // fdata.usValue = fvalue; pfloat[0] = fvalue; items[0].pdata = pfloat; pcommand->m_Ref = this; //pcommand->m_Fun = &PurifierClient::ProcWriteValueXT; m_RTCommands.push(pcommand); LeaveCriticalSection(&m_RtcCS); } void PowderSupplySimpleClient::SetMachineDeoxygenTarge(float fvalue) { SetDBFloat(204, fvalue); } void PowderSupplySimpleClient::SetMachineOxygenAlarm(float fvalue) { SetDBFloat(208, fvalue); } void PowderSupplySimpleClient::SetPowderValveOpenTime(unsigned short fvalue) { SetDBWord(216, fvalue); } void PowderSupplySimpleClient::SetPowderValveCloseTime(unsigned short fvalue) { SetDBWord(218, fvalue); } void PowderSupplySimpleClient::SetAirHammerOpenTime(unsigned short fvalue) { SetDBWord(220, fvalue); } void PowderSupplySimpleClient::SetAirHammerCloseTime(unsigned short fvalue) { SetDBWord(222, fvalue); } void PowderSupplySimpleClient::SetSupplyBlockStopMinute(unsigned short value) { SetDBWord(230, value); } void PowderSupplySimpleClient::SetFanWorkTiming(unsigned char value) { SetDBByte(232, value); } void PowderSupplySimpleClient::SetFanCoolTime(unsigned char value) { SetDBByte(234, value); } void PowderSupplySimpleClient::SetFanWorkStopTime(unsigned char value) { SetDBByte(233, value); } //void PowderSupplySimpleClient::DrawUI(bool* isshow) //{ // PowderSupplySimpleStat powderSupplyStat; // GetStat(powderSupplyStat); // //ImGui::SetNextWindowSize(ImVec2(780, 420)); // ImGui::Begin(_(u8"供粉状态").c_str(), isshow, ImGuiWindowFlags_NoDocking | ImGuiWindowFlags_NoNav | ImGuiWindowFlags_AlwaysAutoResize); // ImGui::BeginGroup(); // // if (IsServerConnected())ImGui::TextColored(ImVec4(0.0, 1.0, 0.0, 1.0), _(u8"供粉端口连接:正常").c_str()); // else ImGui::TextColored(ImVec4(1.0, 0.0, 0.0, 1.0), _(u8"供粉端口连接:断开").c_str()); // if (IsSignalConnected())ImGui::TextColored(ImVec4(0.0, 1.0, 0.0, 1.0), _(u8"供粉通讯连接:正常").c_str()); // else ImGui::TextColored(ImVec4(1.0, 0.0, 0.0, 1.0), _(u8"供粉通讯连接:断开").c_str()); // // ImGui::Dummy(ImVec2(0.0f, 15.0f)); // // ImGui::Checkbox(_(u8"打印自动送粉").c_str(), &m_PowderEstimateCfg->m_AutoSupplyEnable); // ImGui::Text(_(u8"自动送粉状态:%s").c_str(), IsAutoSuppling() ? _(u8"启动").c_str() : _(u8"停止").c_str()); // if (IsAutoSuppling()) { // if (ImGui::Button(_(u8"中断自动送粉").c_str(), ImVec2(150, 0))) { // StopAutoSupply(); // } // } // // ImGui::Text(_(u8"自动送粉超时分钟:").c_str()); ImGui::SameLine(); // ImGui::PushID("AutoSupplyTimeoutMinute"); // ImGui::PushItemWidth(40); // ImGui::InputScalar("", ImGuiDataType_U32, &m_PowderEstimateCfg->m_AutoSupplyTimeoutMinute, 0, 0, 0, ImGuiInputTextFlags_EnterReturnsTrue); // ImGui::PopItemWidth(); // ImGui::PopID(); // // ImGui::Dummy(ImVec2(0.0f, 15.0f)); // // m_ShowAssist.m_RequestDropPowder = powderSupplyStat.m_RequestDropPowder; // if (ImGui::Checkbox(_(u8"请求供粉").c_str(), &m_ShowAssist.m_RequestDropPowder)) { // if (m_ShowAssist.m_RequestDropPowder) RequestSupplyStart(); // else RequestSupplyStop(); // } // // ImGui::PushItemFlag(ImGuiItemFlags_Disabled, true); // m_ShowAssist.m_DropPowderEnable = powderSupplyStat.m_DropPowderEnable; // ImGui::Checkbox(_(u8"允许供粉").c_str(), &m_ShowAssist.m_DropPowderEnable); // ImGui::PopItemFlag(); // // m_ShowAssist.m_OpenDropPowderValve = powderSupplyStat.m_OpenDropPowderValve; // if (ImGui::Checkbox(_(u8"开启下粉阀").c_str(), &m_ShowAssist.m_OpenDropPowderValve)) { // SetOpenDropPowderValve(m_ShowAssist.m_OpenDropPowderValve); // } // // ImGui::Dummy(ImVec2(0.0f, 15.0f)); // // m_ShowAssist.m_DeoxygenActive = powderSupplyStat.m_DeoxygenActive; // if (ImGui::Checkbox(_(u8"送粉机除氧").c_str(), &m_ShowAssist.m_DeoxygenActive)) { // SetDeoxygenActive(m_ShowAssist.m_DeoxygenActive); // } // // m_ShowAssist.m_RequestSupplyPowder = powderSupplyStat.m_RequestSupplyPowder; // if (ImGui::Checkbox(_(u8"启动送粉").c_str(), &m_ShowAssist.m_RequestSupplyPowder)) { // SetSupplyEnable(m_ShowAssist.m_RequestSupplyPowder); // } // // m_ShowAssist.m_PcCtrlSupply = powderSupplyStat.m_PcCtrlSupply; // if (ImGui::Checkbox(_(u8"PC控制送粉").c_str(), &m_ShowAssist.m_PcCtrlSupply)) { // SetPCCtrlSupply(m_ShowAssist.m_PcCtrlSupply); // } // // m_ShowAssist.m_ReactiveMetals = powderSupplyStat.m_ReactiveMetals; // if (ImGui::Checkbox(_(u8"活性金属").c_str(), &m_ShowAssist.m_ReactiveMetals)) { // SetReactiveMetals(m_ShowAssist.m_ReactiveMetals); // } // // m_ShowAssist.m_EnableHammer = powderSupplyStat.m_EnableHammer; // if (ImGui::Checkbox(_(u8"启动气锤").c_str(), &m_ShowAssist.m_EnableHammer)) { // SetStartHammer(!m_ShowAssist.m_EnableHammer); // } // // m_ShowAssist.m_EnableNewPowderDorpFreq = powderSupplyStat.m_EnableNewPowderDorpFreq; // if (ImGui::Checkbox(_(u8"启用新粉下粉阀频率").c_str(), &m_ShowAssist.m_EnableNewPowderDorpFreq)) { // SetStartNewPowderDorpFreq(m_ShowAssist.m_EnableNewPowderDorpFreq); // } // // ImGui::EndGroup(); // ImGui::SameLine(0, 20); // ImGui::SeparatorEx(ImGuiSeparatorFlags_Vertical); // ImGui::SameLine(); // // ImGui::BeginGroup(); // ImGui::PushItemWidth(120); // m_ShowAssist.m_MachineOxygenTarge = powderSupplyStat.m_MachineOxygenTarge; // if (ImGui::InputFloat(_(u8"送粉机除氧目标值").c_str(), &m_ShowAssist.m_MachineOxygenTarge, 0, 0, "%.2f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetMachineDeoxygenTarge(m_ShowAssist.m_MachineOxygenTarge); // } // // m_ShowAssist.m_MachineOxygenAlarm = powderSupplyStat.m_MachineOxygenAlarm; // if (ImGui::InputFloat(_(u8"送粉机氧报警值").c_str(), &m_ShowAssist.m_MachineOxygenAlarm, 0.0f, 0.0f, "%.2f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetMachineOxygenAlarm(m_ShowAssist.m_MachineOxygenAlarm); // } // // m_ShowAssist.m_MachineOxygenRealtime = powderSupplyStat.m_MachineOxygenRealtime; // ImGui::InputFloat(_(u8"送粉机氧含量").c_str(), &m_ShowAssist.m_MachineOxygenRealtime, 0.0f, 0.0f, "%.2f", ImGuiInputTextFlags_ReadOnly); // // m_ShowAssist.m_PowderValveOpenTime = powderSupplyStat.m_PowderValveOpenTime; // if (ImGui::InputFloat(_(u8"下粉阀打开时间(s)").c_str(), &m_ShowAssist.m_PowderValveOpenTime, 0.0f, 0.0f, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetPowderValveOpenTime(m_ShowAssist.m_PowderValveOpenTime * 10); // } // // m_ShowAssist.m_PowderValveCloseTime = powderSupplyStat.m_PowderValveCloseTime; // if (ImGui::InputFloat(_(u8"下粉阀关闭时间(s)").c_str(), &m_ShowAssist.m_PowderValveCloseTime, 0.0f, 0.0f, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetPowderValveCloseTime(m_ShowAssist.m_PowderValveCloseTime * 10); // } // // m_ShowAssist.m_AirHammerOpenTime = powderSupplyStat.m_AirHammerOpenTime; // if (ImGui::InputFloat(_(u8"气锤打开时间(s)").c_str(), &m_ShowAssist.m_AirHammerOpenTime, 0.0f, 0.0f, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetAirHammerOpenTime(m_ShowAssist.m_AirHammerOpenTime * 10); // } // // m_ShowAssist.m_AirHammerCloseTime = powderSupplyStat.m_AirHammerCloseTime; // if (ImGui::InputFloat(_(u8"气锤关闭时间(s)").c_str(), &m_ShowAssist.m_AirHammerCloseTime, 0.0f, 0.0f, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetAirHammerCloseTime(m_ShowAssist.m_AirHammerCloseTime * 10); // } // // m_ShowAssist.m_SupplyBlockStopMinute = powderSupplyStat.m_SupplyBlockStopMinute; // if (ImGui::InputScalar(_(u8"送粉堵塞停止时间(min)").c_str(), ImGuiDataType_U16, &m_ShowAssist.m_SupplyBlockStopMinute, 0, 0, 0, ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetSupplyBlockStopMinute(m_ShowAssist.m_SupplyBlockStopMinute); // } // // m_ShowAssist.m_FanWorkTiming = powderSupplyStat.m_FanWorkTiming; // if (ImGui::InputScalar(_(u8"运行风机计时(min)").c_str(), ImGuiDataType_U8, &m_ShowAssist.m_FanWorkTiming, 0, 0, 0, ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetFanWorkTiming(m_ShowAssist.m_FanWorkTiming); // } // // m_ShowAssist.m_FanWorkStopTime = powderSupplyStat.m_FanWorkStopTime; // if (ImGui::InputScalar(_(u8"风机运行停机时间(min)").c_str(), ImGuiDataType_U8, &m_ShowAssist.m_FanWorkStopTime, 0, 0, 0, ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetFanWorkStopTime(m_ShowAssist.m_FanWorkStopTime); // } // // // m_ShowAssist.m_FanCoolTime = powderSupplyStat.m_FanCoolTime; // if (ImGui::InputScalar(_(u8"强制风机冷却时间(min)").c_str(), ImGuiDataType_U8, &m_ShowAssist.m_FanCoolTime, 0, 0, 0, ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetFanCoolTime(m_ShowAssist.m_FanCoolTime); // } // ImGui::PopItemWidth(); // // // //ImGui::Text(_(u8"风机运行停机时间(min)").c_str(), powderSupplyStat.m_FanWorkStopTime); // // ImGui::Dummy(ImVec2(0, 10)); // ImGui::PushItemWidth(130); // // if (m_ExtCfg->m_UsePowderStick) { // if (ImGui::InputFloat(_(u8"开始补粉位").c_str(), &m_PowderEstimateCfg->m_StartSupplyQty, 0, 0, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) { // if (m_PowderEstimateCfg->m_StartSupplyQty < 0.0f)m_PowderEstimateCfg->m_StartSupplyQty = 0.0f; // if (m_PowderEstimateCfg->m_StartSupplyQty > m_PowderEstimateCfg->m_StopSupplyQty)m_PowderEstimateCfg->m_StartSupplyQty = m_PowderEstimateCfg->m_StopSupplyQty; // } // if (ImGui::InputFloat(_(u8"结束补粉位").c_str(), &m_PowderEstimateCfg->m_StopSupplyQty, 0, 0, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) { // if (m_PowderEstimateCfg->m_StopSupplyQty < 0.0f)m_PowderEstimateCfg->m_StopSupplyQty = 0.0f; // if (m_PowderEstimateCfg->m_StartSupplyQty > m_PowderEstimateCfg->m_StopSupplyQty)m_PowderEstimateCfg->m_StopSupplyQty = m_PowderEstimateCfg->m_StartSupplyQty; // } // } // else { // char buffer[512]; // int bufferoffset = 0; // for (size_t i = 0; i < m_PowderEstimateCfg->m_PEVec.size(); i++) { // bufferoffset += sprintf_s(buffer + bufferoffset, sizeof(buffer) - bufferoffset, "%s", m_PowderEstimateCfg->m_PEVec[i]->m_PosSensor->m_ShowContent.c_str()); // bufferoffset += 1; // } // string str(buffer, bufferoffset); // if (ImGui::Combo(_(u8"开始补粉位").c_str(), &m_PowderEstimateCfg->m_StartSupplyPos, str.data())) // { // if (m_PowderEstimateCfg->m_StartSupplyPos >= m_PowderEstimateCfg->m_StopSupplyPos)m_PowderEstimateCfg->m_StartSupplyPos = m_PowderEstimateCfg->m_StopSupplyPos - 1; // } // if (ImGui::Combo(_(u8"结束补粉位").c_str(), &m_PowderEstimateCfg->m_StopSupplyPos, str.data())) // { // if (m_PowderEstimateCfg->m_StartSupplyPos >= m_PowderEstimateCfg->m_StopSupplyPos)m_PowderEstimateCfg->m_StopSupplyPos = m_PowderEstimateCfg->m_StartSupplyPos + 1; // } // } // ImGui::PopItemWidth(); // ImGui::EndGroup(); // // ImGui::SameLine(0, 20); // ImGui::SeparatorEx(ImGuiSeparatorFlags_Vertical); // ImGui::SameLine(); // // ImGui::BeginGroup(); // ImGui::Text(_(u8"送粉堵塞报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_SupplyBlockAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"送粉滤芯堵塞报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_SupplyFilterBlockAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"加粉罐挂粉报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_SupplyJarHangUpPowderAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"氧含量越限报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_OxygenOverLimitAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"除氧功能启动失败报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_DeoxygenStartupFailed) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"送粉功能启动失败报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_SupplyPowderStartupFailed) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"测氧仪离线报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_OxygenDetectorOfflineAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"冷却风机强制运行报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_FanForceRunAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Dummy(ImVec2(0.0f, 15.0f)); // // ImGui::Text(_(u8"压差模拟量:%.2f").c_str(), g_SystemInfo->m_EnvState.m_PowderJarCabinPressureVoltage); // // ImGui::EndGroup(); // ImGui::SameLine(0, 20); // ImGui::Spacing(); // // ImGui::End(); //} void PowderSupplySimpleClient2::InitCommand() { S7Command* pcommand = new S7Command(S7_COMMAND_READ_INFO, READ_ITEM_COUNT); TS7DataItem* items = pcommand->getDataItems(); items[0].Area = S7AreaDB; items[0].WordLen = S7WLByte; items[0].DBNumber = 1; items[0].Start = 0; items[0].Amount = 4; items[0].pdata = new unsigned char[4]; items[1].Area = S7AreaDB; items[1].WordLen = S7WLByte; items[1].DBNumber = 1; items[1].Start = 105; items[1].Amount = 1; items[1].pdata = new unsigned char[1]; items[2].Area = S7AreaDB; items[2].WordLen = S7WLByte; items[2].DBNumber = 1; items[2].Start = 200; items[2].Amount = 76; items[2].pdata = new unsigned char[76]; items[3].Area = S7AreaDB; items[3].WordLen = S7WLByte; items[3].DBNumber = 1; items[3].Start = 316; items[3].Amount = 19; items[3].pdata = new unsigned char[19]; pcommand->m_Ref = this; pcommand->m_Fun = &PowderSupplySimpleClient2::ProcReadInfo; pcommand->isNeedDel = false; //写压力 S7Command* pressureCom = new S7Command(S7_COMMAND_WRITE, 1); TS7DataItem* dataItem = pressureCom->getDataItems(); dataItem[0].Area = S7AreaDB; dataItem[0].DBNumber = 1; dataItem[0].Start = 226; dataItem[0].WordLen = S7WLByte; dataItem[0].Amount = 4; unsigned char* pfloat = new unsigned char[4]; S7FLOATDATA fdata; fdata.fValue = g_SystemInfo->m_EnvState.m_PowderJarCabinPressureVoltage; //ad4 压差 pfloat[0] = fdata.data[3]; pfloat[1] = fdata.data[2]; pfloat[2] = fdata.data[1]; pfloat[3] = fdata.data[0]; dataItem[0].pdata = pfloat; //m_PressureWriteValue = (unsigned char*)dataItem[0].pdata; m_PressureWriteValue = (unsigned char*)pfloat; pressureCom->m_Ref = this; //pressureCom->m_Fun = &PowderSupplySimpleClient::ProcWriteValueXT; pressureCom->isNeedDel = false; pressureCom->m_PreWrite = &PowderSupplySimpleClient::ProcSetPressureValue; m_CycleCommands.push_back(pcommand); m_CycleCommands.push_back(pressureCom); } void PowderSupplySimpleClient2::ProcReadInfo(void *pobject, Command* pcommand) { S7Command* s7Command = (S7Command*)pcommand; TS7DataItem* pdataItems = s7Command->getDataItems(); unsigned int itemcount = s7Command->getItemCount(); if (pobject == NULL || itemcount != READ_ITEM_COUNT)return; PowderSupplySimpleClient2* ppw = (PowderSupplySimpleClient2*)pobject; TS7DataItem pReq = pdataItems[0]; TS7DataItem pNet = pdataItems[1]; TS7DataItem pCtrl = pdataItems[2]; TS7DataItem pTime = pdataItems[3]; EnterCriticalSection(&ppw->m_ValueCS); if (pReq.Result == 0) { unsigned char* data = (unsigned char*)pReq.pdata; ppw->m_ClientState.m_RequestDropPowder->SetValue(((data[0] & 0x1) > 0 ? true : false)); ppw->m_ClientState.m_DropPowderEnable->SetValue(((data[0] & 0x2) > 0 ? true : false)); ppw->m_ClientState.m_OpenDropPowderValve->SetValue(((data[0] & 04) > 0 ? true : false)); ppw->m_ClientState.m_SupplyBlockAlarm->SetValue(((data[2] & 0x1) > 0 ? true : false)); ppw->m_ClientState.m_SupplyFilterBlockAlarm->SetValue(((data[2] & 0x2) > 0 ? true : false)); ppw->m_ClientState.m_SupplyJarHangUpPowderAlarm->SetValue(((data[2] & 0x4) > 0 ? true : false)); ppw->m_ClientState.m_OxygenOverLimitAlarm->SetValue(((data[2] & 0x8) > 0 ? true : false)); ppw->m_ClientState.m_DeoxygenStartupFailed->SetValue(((data[2] & 0x10) > 0 ? true : false)); ppw->m_ClientState.m_SupplyPowderStartupFailed->SetValue(((data[2] & 0x20) > 0 ? true : false)); ppw->m_ClientState.m_OxygenDetectorOfflineAlarm->SetValue(((data[2] & 0x40) > 0 ? true : false)); ppw->m_ClientState.m_FanForceRunAlarm->SetValue(((data[2] & 0x80) > 0 ? true : false)); ppw->m_ClientState.m_FanOverHeatAlarm->SetValue(((data[3] & 0x1) > 0 ? true : false)); ppw->m_ClientState.m_SupplyPowderTempAlarm->SetValue(((data[3] & 0x2) > 0 ? true : false)); ppw->m_ClientState.m_NewJarNoPowerAlarm->SetValue(((data[3] & 0x4) > 0 ? true : false)); ppw->m_ClientState.m_SupplyPowderFilterAlarm->SetValue(((data[3] & 0x8) > 0 ? true : false)); ppw->m_ClientState.m_AddPowderJarFullBlowbackAlarm->SetValue(((data[3] & 0x10) > 0 ? true : false)); ppw->m_ClientState.m_FanBlowbackAlarm->SetValue(((data[3] & 0x20) > 0 ? true : false)); } if (pNet.Result == 0) { unsigned char* data = (unsigned char*)pNet.pdata; ppw->m_ClientState.m_DeoxygenActive->SetValue(((data[0] & 0x1) > 0 ? true : false)); ppw->m_ClientState.m_RequestSupplyPowder->SetValue(((data[0] & 0x2) > 0 ? true : false)); } if (pCtrl.Result == 0) { unsigned char* data = (unsigned char*)pCtrl.pdata; S7FLOATDATA machineOxygenTarge; S7FLOATDATA machineOxygenAlarm; S7FLOATDATA machineOxygenRealtime; S7FLOATDATA pressureDif; S7FLOATDATA OxygenSensorUpLimit; S7FLOATDATA SupplyPowderPressureDifUpLimit; S7FLOATDATA SupplyPowderPressureDifDownLimit; S7FLOATDATA SupplyPowderPressureDifValue; S7FLOATDATA FilterPressureDifUpLimit; S7FLOATDATA FilterPressureDifDownLimit; S7FLOATDATA FilterPressureDifValue; S7FLOATDATA SupplyPowderBlockPressureValue; S7FLOATDATA FilterBlockPressureValue; S7FLOATDATA SupplyPowderBlockWarnValue; //ppw->m_ClientState.m_PcCtrlSupply ->SetValue( ((data[0] & 0x1) > 0 ? true : false); ppw->m_ClientState.m_SupplyPowderDeoxygenEnable->SetValue(((data[0] & 0x2) > 0 ? true : false)); // ppw->m_ClientState.m_SupplyBlockAlarm ->SetValue( ((data[0] & 0x4) > 0 ? true : false); // ppw->m_ClientState.m_SupplyFilterBlockAlarm ->SetValue( ((data[0] & 0x8) > 0 ? true : false); ppw->m_ClientState.m_EnableHammer->SetValue(!((data[0] & 0x10) > 0 ? true : false)); ppw->m_ClientState.m_EnableNewPowderDorpFreq->SetValue(((data[0] & 0x20) > 0 ? true : false)); ppw->m_ClientState.m_DorpPowderPressureCompensateEnable->SetValue(((data[0] & 0x40) > 0 ? true : false)); machineOxygenTarge.data[0] = data[7]; machineOxygenTarge.data[1] = data[6]; machineOxygenTarge.data[2] = data[5]; machineOxygenTarge.data[3] = data[4]; machineOxygenAlarm.data[0] = data[11]; machineOxygenAlarm.data[1] = data[10]; machineOxygenAlarm.data[2] = data[9]; machineOxygenAlarm.data[3] = data[8]; machineOxygenRealtime.data[0] = data[15]; machineOxygenRealtime.data[1] = data[14]; machineOxygenRealtime.data[2] = data[13]; machineOxygenRealtime.data[3] = data[12]; ppw->m_ClientState.m_PowderValveOpenTime->SetValue((float)((data[16] & 0xff) << 8) + (data[17] & 0xff) / 10.0f); ppw->m_ClientState.m_PowderValveCloseTime->SetValue((float)((data[18] & 0xff) << 8) + (data[19] & 0xff) / 10.0f); ppw->m_ClientState.m_AirHammerOpenTime->SetValue((float)((data[20] & 0xff) << 8) + (data[21] & 0xff) / 10.0f); ppw->m_ClientState.m_AirHammerCloseTime->SetValue((float)((data[22] & 0xff) << 8) + (data[23] & 0xff) / 10.0f); pressureDif.data[0] = data[29]; pressureDif.data[1] = data[28]; pressureDif.data[2] = data[27]; pressureDif.data[3] = data[26]; ppw->m_ClientState.m_MachineOxygenTarge->SetValue(machineOxygenTarge.fValue); ppw->m_ClientState.m_MachineOxygenAlarm->SetValue(machineOxygenAlarm.fValue); ppw->m_ClientState.m_MachineOxygenRealtime->SetValue(machineOxygenRealtime.fValue); ppw->m_ClientState.m_PressureDif->SetValue(pressureDif.fValue); ppw->m_ClientState.m_SupplyBlockStopMinute->SetValue(((data[30] & 0xff) << 8) + (data[31] & 0xff)); ppw->m_ClientState.m_BlowbackTimes->SetValue(((data[32] & 0xff) << 8) + (data[33] & 0xff)); ppw->m_ClientState.m_BlowbackValveOpenTime->SetValue((float)((data[34] & 0xff) << 8) + (data[35] & 0xff) / 10.0f); OxygenSensorUpLimit.data[0] = data[39]; OxygenSensorUpLimit.data[1] = data[38]; OxygenSensorUpLimit.data[2] = data[37]; OxygenSensorUpLimit.data[3] = data[36]; SupplyPowderPressureDifUpLimit.data[0] = data[43]; SupplyPowderPressureDifUpLimit.data[1] = data[42]; SupplyPowderPressureDifUpLimit.data[2] = data[41]; SupplyPowderPressureDifUpLimit.data[3] = data[40]; SupplyPowderPressureDifDownLimit.data[0] = data[47]; SupplyPowderPressureDifDownLimit.data[1] = data[46]; SupplyPowderPressureDifDownLimit.data[2] = data[45]; SupplyPowderPressureDifDownLimit.data[3] = data[44]; SupplyPowderPressureDifValue.data[0] = data[51]; SupplyPowderPressureDifValue.data[1] = data[50]; SupplyPowderPressureDifValue.data[2] = data[49]; SupplyPowderPressureDifValue.data[3] = data[48]; FilterPressureDifUpLimit.data[0] = data[55]; FilterPressureDifUpLimit.data[1] = data[54]; FilterPressureDifUpLimit.data[2] = data[53]; FilterPressureDifUpLimit.data[3] = data[52]; FilterPressureDifDownLimit.data[0] = data[59]; FilterPressureDifDownLimit.data[1] = data[58]; FilterPressureDifDownLimit.data[2] = data[57]; FilterPressureDifDownLimit.data[3] = data[56]; FilterPressureDifValue.data[0] = data[63]; FilterPressureDifValue.data[1] = data[62]; FilterPressureDifValue.data[2] = data[61]; FilterPressureDifValue.data[3] = data[60]; SupplyPowderBlockPressureValue.data[0] = data[67]; SupplyPowderBlockPressureValue.data[1] = data[66]; SupplyPowderBlockPressureValue.data[2] = data[65]; SupplyPowderBlockPressureValue.data[3] = data[64]; FilterBlockPressureValue.data[0] = data[71]; FilterBlockPressureValue.data[1] = data[70]; FilterBlockPressureValue.data[2] = data[69]; FilterBlockPressureValue.data[3] = data[68]; SupplyPowderBlockWarnValue.data[0] = data[75]; SupplyPowderBlockWarnValue.data[1] = data[74]; SupplyPowderBlockWarnValue.data[2] = data[73]; SupplyPowderBlockWarnValue.data[3] = data[72]; ppw->m_ClientState.m_OxygenSensorUpLimit->SetValue(OxygenSensorUpLimit.fValue); ppw->m_ClientState.m_SupplyPowderPressureDifUpLimit->SetValue(SupplyPowderPressureDifUpLimit.fValue); ppw->m_ClientState.m_SupplyPowderPressureDifDownLimit->SetValue(SupplyPowderPressureDifDownLimit.fValue); ppw->m_ClientState.m_SupplyPowderPressureDifValue->SetValue(SupplyPowderPressureDifValue.fValue); ppw->m_ClientState.m_FilterPressureDifUpLimit->SetValue(FilterPressureDifUpLimit.fValue); ppw->m_ClientState.m_FilterPressureDifDownLimit->SetValue(FilterPressureDifDownLimit.fValue); ppw->m_ClientState.m_FilterPressureDifValue->SetValue(FilterPressureDifValue.fValue); ppw->m_ClientState.m_SupplyPowderBlockPressureValue->SetValue(SupplyPowderBlockPressureValue.fValue); ppw->m_ClientState.m_FilterBlockPressureValue->SetValue(FilterBlockPressureValue.fValue); ppw->m_ClientState.m_SupplyPowderBlockWarnValue->SetValue(SupplyPowderBlockWarnValue.fValue); } if (pTime.Result == 0) { unsigned char* data = (unsigned char*)pTime.pdata; ppw->m_ClientState.m_PocketAerateTime->SetValue((float)((data[0] & 0xff) << 8) + (data[1] & 0xff) / 10.0f); ppw->m_ClientState.m_WorkFanStopDelayTime->SetValue((float)((data[2] & 0xff) << 8) + (data[3] & 0xff) / 10.0f); ppw->m_ClientState.m_DropPowderValveOpenKeepTime->SetValue((float)((data[4] & 0xff) << 8) + (data[5] & 0xff) / 10.0f); ppw->m_ClientState.m_AddPowderUpLimitSenseTime->SetValue((float)((data[6] & 0xff) << 8) + (data[7] & 0xff) / 10.0f); ppw->m_ClientState.m_Version->SetValue(data[18]); //版本 } LeaveCriticalSection(&ppw->m_ValueCS); } //void PowderSupplySimpleClient2::DrawUI(bool* isshow) //{ // PowderSupplySimpleStat powderSupplyStat; // GetStat(powderSupplyStat); // //ImGui::SetNextWindowSize(ImVec2(780, 420)); // ImGui::Begin(_(u8"供粉状态").c_str(), isshow, ImGuiWindowFlags_NoDocking | ImGuiWindowFlags_NoNav | ImGuiWindowFlags_AlwaysAutoResize); // ImGui::BeginGroup(); // // if (IsServerConnected())ImGui::TextColored(ImVec4(0.0, 1.0, 0.0, 1.0), _(u8"供粉端口连接:正常").c_str()); // else ImGui::TextColored(ImVec4(1.0, 0.0, 0.0, 1.0), _(u8"供粉端口连接:断开").c_str()); // if (IsSignalConnected())ImGui::TextColored(ImVec4(0.0, 1.0, 0.0, 1.0), _(u8"供粉通讯连接:正常").c_str()); // else ImGui::TextColored(ImVec4(1.0, 0.0, 0.0, 1.0), _(u8"供粉通讯连接:断开").c_str()); // // ImGui::Dummy(ImVec2(0.0f, 15.0f)); // // ImGui::Checkbox(_(u8"打印自动送粉").c_str(), &m_PowderEstimateCfg->m_AutoSupplyEnable); // ImGui::Text(_(u8"自动送粉状态:%s").c_str(), IsAutoSuppling() ? _(u8"启动").c_str() : _(u8"停止").c_str()); // if (IsAutoSuppling()) { // if (ImGui::Button(_(u8"中断自动送粉").c_str(), ImVec2(150, 0))) { // StopAutoSupply(); // } // } // // ImGui::Text(_(u8"自动送粉超时分钟:").c_str()); ImGui::SameLine(); // ImGui::PushID("AutoSupplyTimeoutMinute"); // ImGui::PushItemWidth(40); // ImGui::InputScalar("", ImGuiDataType_U32, &m_PowderEstimateCfg->m_AutoSupplyTimeoutMinute, 0, 0, 0, ImGuiInputTextFlags_EnterReturnsTrue); // ImGui::PopItemWidth(); // ImGui::PopID(); // // ImGui::Dummy(ImVec2(0.0f, 15.0f)); // // m_ShowAssist.m_RequestDropPowder = powderSupplyStat.m_RequestDropPowder; // if (ImGui::Checkbox(_(u8"请求供粉").c_str(), &m_ShowAssist.m_RequestDropPowder)) { // if (m_ShowAssist.m_RequestDropPowder) RequestSupplyStart(); // else RequestSupplyStop(); // } // // ImGui::PushItemFlag(ImGuiItemFlags_Disabled, true); // m_ShowAssist.m_DropPowderEnable = powderSupplyStat.m_DropPowderEnable; // ImGui::Checkbox(_(u8"允许供粉").c_str(), &m_ShowAssist.m_DropPowderEnable); // ImGui::PopItemFlag(); // // m_ShowAssist.m_OpenDropPowderValve = powderSupplyStat.m_OpenDropPowderValve; // if (ImGui::Checkbox(_(u8"开启下粉阀").c_str(), &m_ShowAssist.m_OpenDropPowderValve)) { // SetOpenDropPowderValve(m_ShowAssist.m_OpenDropPowderValve); // } // // ImGui::Dummy(ImVec2(0.0f, 15.0f)); // // m_ShowAssist.m_DeoxygenActive = powderSupplyStat.m_DeoxygenActive; // if (ImGui::Checkbox(_(u8"送粉机除氧").c_str(), &m_ShowAssist.m_DeoxygenActive)) { // SetDeoxygenActive(m_ShowAssist.m_DeoxygenActive); // } // // m_ShowAssist.m_RequestSupplyPowder = powderSupplyStat.m_RequestSupplyPowder; // if (ImGui::Checkbox(_(u8"启动送粉").c_str(), &m_ShowAssist.m_RequestSupplyPowder)) { // SetSupplyEnable(m_ShowAssist.m_RequestSupplyPowder); // } // // m_ShowAssist.m_EnableHammer = powderSupplyStat.m_EnableHammer; // if (ImGui::Checkbox(_(u8"启动气锤").c_str(), &m_ShowAssist.m_EnableHammer)) { // SetStartHammer(!m_ShowAssist.m_EnableHammer); // } // // m_ShowAssist.m_EnableNewPowderDorpFreq = powderSupplyStat.m_EnableNewPowderDorpFreq; // if (ImGui::Checkbox(_(u8"启用新粉下粉阀频率").c_str(), &m_ShowAssist.m_EnableNewPowderDorpFreq)) { // SetStartNewPowderDorpFreq(m_ShowAssist.m_EnableNewPowderDorpFreq); // } // // m_ShowAssist.m_DorpPowderPressureCompensateEnable = powderSupplyStat.m_DorpPowderPressureCompensateEnable; // if (ImGui::Checkbox(_(u8"启用下粉补压").c_str(), &m_ShowAssist.m_DorpPowderPressureCompensateEnable)) { // SetStartDorpPowderPressureCompensateEnable(m_ShowAssist.m_DorpPowderPressureCompensateEnable); // } // // ImGui::Dummy(ImVec2(0.0f, 15.0f)); // ImGui::PushItemWidth(100); // m_ShowAssist.m_MachineOxygenTarge = powderSupplyStat.m_MachineOxygenTarge; // if (ImGui::InputFloat(_(u8"送粉机除氧目标值").c_str(), &m_ShowAssist.m_MachineOxygenTarge, 0, 0, "%.2f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetMachineDeoxygenTarge(m_ShowAssist.m_MachineOxygenTarge); // } // // m_ShowAssist.m_MachineOxygenAlarm = powderSupplyStat.m_MachineOxygenAlarm; // if (ImGui::InputFloat(_(u8"送粉机氧报警值").c_str(), &m_ShowAssist.m_MachineOxygenAlarm, 0, 0, "%.2f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetMachineOxygenAlarm(m_ShowAssist.m_MachineOxygenAlarm); // } // // m_ShowAssist.m_MachineOxygenRealtime = powderSupplyStat.m_MachineOxygenRealtime; // ImGui::InputFloat(_(u8"送粉机氧含量").c_str(), &m_ShowAssist.m_MachineOxygenRealtime, 0, 0, "%.2f", ImGuiInputTextFlags_ReadOnly); // // m_ShowAssist.m_OxygenSensorUpLimit = powderSupplyStat.m_OxygenSensorUpLimit; // if (ImGui::InputFloat(_(u8"送粉机测氧仪上限(%)").c_str(), &m_ShowAssist.m_OxygenSensorUpLimit, 0, 0, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetOxygenSensorUpLimit(m_ShowAssist.m_OxygenSensorUpLimit); // } // // m_ShowAssist.m_SupplyPowderPressureDifUpLimit = powderSupplyStat.m_SupplyPowderPressureDifUpLimit; // if (ImGui::InputFloat(_(u8"送粉压差上限(kpa)").c_str(), &m_ShowAssist.m_SupplyPowderPressureDifUpLimit, 0, 0, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetSupplyPowderPressureDifUpLimit(m_ShowAssist.m_SupplyPowderPressureDifUpLimit); // } // // m_ShowAssist.m_SupplyPowderPressureDifDownLimit = powderSupplyStat.m_SupplyPowderPressureDifDownLimit; // if (ImGui::InputFloat(_(u8"送粉压差下限(kpa)").c_str(), &m_ShowAssist.m_SupplyPowderPressureDifDownLimit, 0, 0, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetSupplyPowderPressureDifDownLimit(m_ShowAssist.m_SupplyPowderPressureDifDownLimit); // } // // m_ShowAssist.m_SupplyPowderPressureDifValue = powderSupplyStat.m_SupplyPowderPressureDifValue; // ImGui::InputFloat(_(u8"送粉压差实际值(kpa)").c_str(), &m_ShowAssist.m_SupplyPowderPressureDifValue, 0, 0, "%.2f", ImGuiInputTextFlags_ReadOnly); // // ImGui::PopItemWidth(); // // ImGui::EndGroup(); // ImGui::SameLine(0, 20); // ImGui::SeparatorEx(ImGuiSeparatorFlags_Vertical); // ImGui::SameLine(); // // ImGui::BeginGroup(); // // ImGui::PushItemWidth(100); // m_ShowAssist.m_FilterPressureDifUpLimit = powderSupplyStat.m_FilterPressureDifUpLimit; // if (ImGui::InputFloat(_(u8"滤芯压差上限(kpa)").c_str(), &m_ShowAssist.m_FilterPressureDifUpLimit, 0, 0, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetFilterPressureDifUpLimit(m_ShowAssist.m_FilterPressureDifUpLimit); // } // // m_ShowAssist.m_FilterPressureDifDownLimit = powderSupplyStat.m_FilterPressureDifDownLimit; // if (ImGui::InputFloat(_(u8"滤芯压差下限(kpa)").c_str(), &m_ShowAssist.m_FilterPressureDifDownLimit, 0, 0, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetFilterPressureDifDownLimit(m_ShowAssist.m_FilterPressureDifDownLimit); // } // // m_ShowAssist.m_FilterPressureDifValue = powderSupplyStat.m_FilterPressureDifValue; // ImGui::InputFloat(_(u8"滤压差实际值(kpa)").c_str(), &m_ShowAssist.m_FilterPressureDifValue, 0, 0, "%.2f", ImGuiInputTextFlags_ReadOnly); // // m_ShowAssist.m_SupplyPowderBlockPressureValue = powderSupplyStat.m_SupplyPowderBlockPressureValue; // if (ImGui::InputFloat(_(u8"送粉堵塞压力值(kpa)").c_str(), &m_ShowAssist.m_SupplyPowderBlockPressureValue, 0, 0, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetSupplyPowderBlockPressureValue(m_ShowAssist.m_SupplyPowderBlockPressureValue); // } // // m_ShowAssist.m_FilterBlockPressureValue = powderSupplyStat.m_FilterBlockPressureValue; // if (ImGui::InputFloat(_(u8"滤芯堵塞压力值(kpa)").c_str(), &m_ShowAssist.m_FilterBlockPressureValue, 0, 0, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetFilterBlockPressureValue(m_ShowAssist.m_FilterBlockPressureValue); // } // // m_ShowAssist.m_SupplyPowderBlockWarnValue = powderSupplyStat.m_SupplyPowderBlockWarnValue; // if (ImGui::InputFloat(_(u8"送粉堵塞预警值(kpa)").c_str(), &m_ShowAssist.m_SupplyPowderBlockWarnValue, 0, 0, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetSupplyPowderBlockWarnValue(m_ShowAssist.m_SupplyPowderBlockWarnValue); // } // // m_ShowAssist.m_PowderValveOpenTime = powderSupplyStat.m_PowderValveOpenTime; // if (ImGui::InputFloat(_(u8"下粉阀打开时间(s)").c_str(), &m_ShowAssist.m_PowderValveOpenTime, 0, 0, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetPowderValveOpenTime(m_ShowAssist.m_PowderValveOpenTime * 10); // } // // m_ShowAssist.m_PowderValveCloseTime = powderSupplyStat.m_PowderValveCloseTime; // if (ImGui::InputFloat(_(u8"下粉阀关闭时间(s)").c_str(), &m_ShowAssist.m_PowderValveCloseTime, 0, 0, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetPowderValveCloseTime(m_ShowAssist.m_PowderValveCloseTime * 10); // } // // m_ShowAssist.m_AirHammerOpenTime = powderSupplyStat.m_AirHammerOpenTime; // if (ImGui::InputFloat(_(u8"气锤打开时间(s)").c_str(), &m_ShowAssist.m_AirHammerOpenTime, 0, 0, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetAirHammerOpenTime(m_ShowAssist.m_AirHammerOpenTime * 10); // } // // m_ShowAssist.m_AirHammerCloseTime = powderSupplyStat.m_AirHammerCloseTime; // if (ImGui::InputFloat(_(u8"气锤关闭时间(s)").c_str(), &m_ShowAssist.m_AirHammerCloseTime, 0, 0, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetAirHammerCloseTime(m_ShowAssist.m_AirHammerCloseTime * 10); // } // // m_ShowAssist.m_SupplyBlockStopMinute = powderSupplyStat.m_SupplyBlockStopMinute; // if (ImGui::InputScalar(_(u8"送粉堵塞停止时间(min)").c_str(), ImGuiDataType_U16, &m_ShowAssist.m_SupplyBlockStopMinute, 0, 0, 0, ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetSupplyBlockStopMinute(m_ShowAssist.m_SupplyBlockStopMinute); // } // // m_ShowAssist.m_BlowbackTimes = powderSupplyStat.m_BlowbackTimes; // if (ImGui::InputScalar(_(u8"反吹次数").c_str(), ImGuiDataType_U16, &m_ShowAssist.m_BlowbackTimes, 0, 0, 0, ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetBlowbackTimes(m_ShowAssist.m_BlowbackTimes); // } // // m_ShowAssist.m_BlowbackValveOpenTime = powderSupplyStat.m_BlowbackValveOpenTime; // if (ImGui::InputFloat(_(u8"反吹阀打开时间(s)").c_str(), &m_ShowAssist.m_BlowbackValveOpenTime, 0, 0, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetBlowbackValveOpenTime(m_ShowAssist.m_BlowbackValveOpenTime * 10); // } // // m_ShowAssist.m_PocketAerateTime = powderSupplyStat.m_PocketAerateTime; // if (ImGui::InputFloat(_(u8"气包充气时间(s)").c_str(), &m_ShowAssist.m_PocketAerateTime, 0, 0, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetPocketAerateTime(m_ShowAssist.m_PocketAerateTime * 10); // } // // m_ShowAssist.m_WorkFanStopDelayTime = powderSupplyStat.m_WorkFanStopDelayTime; // if (ImGui::InputFloat(_(u8"运行风机停止延时(s)").c_str(), &m_ShowAssist.m_WorkFanStopDelayTime, 0, 0, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetWorkFanStopDelayTime(m_ShowAssist.m_WorkFanStopDelayTime * 10); // } // // m_ShowAssist.m_DropPowderValveOpenKeepTime = powderSupplyStat.m_DropPowderValveOpenKeepTime; // if (ImGui::InputFloat(_(u8"加粉下粉阀打开保持时间(s)").c_str(), &m_ShowAssist.m_DropPowderValveOpenKeepTime, 0, 0, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetDropPowderValveOpenKeepTime(m_ShowAssist.m_DropPowderValveOpenKeepTime * 10); // } // // m_ShowAssist.m_AddPowderUpLimitSenseTime = powderSupplyStat.m_AddPowderUpLimitSenseTime; // if (ImGui::InputFloat(_(u8"加粉上限感应时间(s)").c_str(), &m_ShowAssist.m_AddPowderUpLimitSenseTime, 0, 0, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetAddPowderUpLimitSenseTime(m_ShowAssist.m_AddPowderUpLimitSenseTime * 10); // } // // // ImGui::Dummy(ImVec2(0.0f, 15.0f)); // if (m_ExtCfg->m_UsePowderStick) { // if (ImGui::InputFloat(_(u8"开始补粉位").c_str(), &m_PowderEstimateCfg->m_StartSupplyQty, 0, 0, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) { // if (m_PowderEstimateCfg->m_StartSupplyQty < 0.0f)m_PowderEstimateCfg->m_StartSupplyQty = 0.0f; // if (m_PowderEstimateCfg->m_StartSupplyQty > m_PowderEstimateCfg->m_StopSupplyQty)m_PowderEstimateCfg->m_StartSupplyQty = m_PowderEstimateCfg->m_StopSupplyQty; // } // if (ImGui::InputFloat(_(u8"结束补粉位").c_str(), &m_PowderEstimateCfg->m_StopSupplyQty, 0, 0, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) { // if (m_PowderEstimateCfg->m_StopSupplyQty < 0.0f)m_PowderEstimateCfg->m_StopSupplyQty = 0.0f; // if (m_PowderEstimateCfg->m_StartSupplyQty > m_PowderEstimateCfg->m_StopSupplyQty)m_PowderEstimateCfg->m_StopSupplyQty = m_PowderEstimateCfg->m_StartSupplyQty; // } // } // else { // char buffer[512]; // int bufferoffset = 0; // for (size_t i = 0; i < m_PowderEstimateCfg->m_PEVec.size(); i++) { // bufferoffset += sprintf_s(buffer + bufferoffset, sizeof(buffer) - bufferoffset, "%s", m_PowderEstimateCfg->m_PEVec[i]->m_PosSensor->m_Content.c_str()); // bufferoffset += 1; // } // string str(buffer, bufferoffset); // if (ImGui::Combo(_(u8"开始补粉位").c_str(), &m_PowderEstimateCfg->m_StartSupplyPos, str.data())) // { // if (m_PowderEstimateCfg->m_StartSupplyPos >= m_PowderEstimateCfg->m_StopSupplyPos)m_PowderEstimateCfg->m_StartSupplyPos = m_PowderEstimateCfg->m_StopSupplyPos - 1; // } // if (ImGui::Combo(_(u8"结束补粉位").c_str(), &m_PowderEstimateCfg->m_StopSupplyPos, str.data())) // { // if (m_PowderEstimateCfg->m_StartSupplyPos >= m_PowderEstimateCfg->m_StopSupplyPos)m_PowderEstimateCfg->m_StopSupplyPos = m_PowderEstimateCfg->m_StartSupplyPos + 1; // } // } // ImGui::PopItemWidth(); // ImGui::EndGroup(); // ImGui::SameLine(0, 20); // ImGui::SeparatorEx(ImGuiSeparatorFlags_Vertical); // ImGui::SameLine(); // // ImGui::BeginGroup(); // // // ImGui::Text(_(u8"送粉堵塞报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_SupplyBlockAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"送粉滤芯堵塞报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_SupplyFilterBlockAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"加粉罐挂粉报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_SupplyJarHangUpPowderAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"氧含量越限报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_OxygenOverLimitAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"除氧功能启动失败报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_DeoxygenStartupFailed) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"送粉功能启动失败报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_SupplyPowderStartupFailed) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"测氧仪离线报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_OxygenDetectorOfflineAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"冷却风机强制运行报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_FanForceRunAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"风机过热报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_FanOverHeatAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"送粉温度报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_SupplyPowderTempAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"新粉罐无粉报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_NewJarNoPowerAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"送粉滤芯报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_SupplyPowderFilterAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"粉罐满粉无法反吹报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_AddPowderJarFullBlowbackAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"风机反吹报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_FanBlowbackAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // // ImGui::Dummy(ImVec2(0.0f, 15.0f)); // ImGui::Text(_(u8"压差模拟量:%.2f").c_str(), g_SystemInfo->m_EnvState.m_PowderJarCabinPressureVoltage); // ImGui::Text(_(u8"版本:%d").c_str(), powderSupplyStat.m_Version); // ImGui::EndGroup(); // ImGui::SameLine(0, 20); // ImGui::Spacing(); // ImGui::End(); //} void PowderSupplySimpleClient2::SetStartDorpPowderPressureCompensateEnable(bool enable) { SetBit(200 * 8 + 6, enable); } void PowderSupplySimpleClient2::SetOxygenSensorUpLimit(float fvalue) { SetDBFloat(236, fvalue); } void PowderSupplySimpleClient2::SetSupplyPowderPressureDifUpLimit(float fvalue) { SetDBFloat(240, fvalue); } void PowderSupplySimpleClient2::SetSupplyPowderPressureDifDownLimit(float fvalue) { SetDBFloat(244, fvalue); } void PowderSupplySimpleClient2::SetFilterPressureDifUpLimit(float fvalue) { SetDBFloat(252, fvalue); } void PowderSupplySimpleClient2::SetFilterPressureDifDownLimit(float fvalue) { SetDBFloat(256, fvalue); } void PowderSupplySimpleClient2::SetSupplyPowderBlockPressureValue(float fvalue) { SetDBFloat(264, fvalue); } void PowderSupplySimpleClient2::SetFilterBlockPressureValue(float fvalue) { SetDBFloat(268, fvalue); } void PowderSupplySimpleClient2::SetSupplyPowderBlockWarnValue(float fvalue) { SetDBFloat(272, fvalue); } void PowderSupplySimpleClient2::SetBlowbackTimes(unsigned short svalue) { SetDBWord(232, svalue); } void PowderSupplySimpleClient2::SetBlowbackValveOpenTime(unsigned short svalue) { SetDBWord(234, svalue); } void PowderSupplySimpleClient2::SetPocketAerateTime(unsigned short svalue) { SetDBWord(316, svalue); } void PowderSupplySimpleClient2::SetWorkFanStopDelayTime(unsigned short svalue) { SetDBWord(318, svalue); } void PowderSupplySimpleClient2::SetDropPowderValveOpenKeepTime(unsigned short svalue) { SetDBWord(320, svalue); } void PowderSupplySimpleClient2::SetAddPowderUpLimitSenseTime(unsigned short svalue) { SetDBWord(322, svalue); } void PowderSupplySimpleClient3::InitCommand() { S7Command* pcommand = new S7Command(S7_COMMAND_READ_INFO, READ_ITEM_COUNT); TS7DataItem* items = pcommand->getDataItems(); items[0].Area = S7AreaDB; items[0].WordLen = S7WLByte; items[0].DBNumber = 1; items[0].Start = 30; items[0].Amount = 24; items[0].pdata = new unsigned char[24]; items[1].Area = S7AreaDB; items[1].WordLen = S7WLByte; items[1].DBNumber = 1; items[1].Start = 82; items[1].Amount = 4; items[1].pdata = new unsigned char[4]; items[2].Area = S7AreaDB; items[2].WordLen = S7WLByte; items[2].DBNumber = 1; items[2].Start = 116; items[2].Amount = 8; items[2].pdata = new unsigned char[8]; items[3].Area = S7AreaDB; items[3].WordLen = S7WLByte; items[3].DBNumber = 1; items[3].Start = 136; items[3].Amount = 4; items[3].pdata = new unsigned char[4]; items[4].Area = S7AreaDB; items[4].WordLen = S7WLByte; items[4].DBNumber = 1; items[4].Start = 201; items[4].Amount = 35; items[4].pdata = new unsigned char[35]; items[5].Area = S7AreaDB; items[5].WordLen = S7WLByte; items[5].DBNumber = 1; items[5].Start = 397; items[5].Amount = 2; items[5].pdata = new unsigned char[2]; pcommand->m_Ref = this; pcommand->m_Fun = &PowderSupplySimpleClient3::ProcReadInfo; pcommand->isNeedDel = false; m_CycleCommands.push_back(pcommand); } void PowderSupplySimpleClient3::ProcReadInfo(void *pobject, Command* pcommand) { S7Command* s7Command = (S7Command*)pcommand; TS7DataItem* pdataItems = s7Command->getDataItems(); unsigned int itemcount = s7Command->getItemCount(); if (pobject == NULL || itemcount != READ_ITEM_COUNT)return; PowderSupplySimpleClient3* ppw = (PowderSupplySimpleClient3*)pobject; TS7DataItem sec0 = pdataItems[0]; TS7DataItem sec1 = pdataItems[1]; TS7DataItem sec2 = pdataItems[2]; TS7DataItem sec3 = pdataItems[3]; TS7DataItem sec4 = pdataItems[4]; TS7DataItem sec5 = pdataItems[5]; EnterCriticalSection(&ppw->m_ValueCS); if (sec0.Result == 0) { unsigned char* data = (unsigned char*)sec0.pdata; ppw->m_ClientState.m_SupplyBlockPreProcValue->SetValue(FLOATDATA(false, &data[0]).fValue); ppw->m_ClientState.m_MachineOxygenTarge->SetValue(FLOATDATA(false, &data[4]).fValue); ppw->m_ClientState.m_MachineOxygenAlarm->SetValue(FLOATDATA(false, &data[8]).fValue); ppw->m_ClientState.m_PowerCarNoPowderValue->SetValue(FLOATDATA(false, &data[12]).fValue); ppw->m_ClientState.m_SupplyReleasePressureValue->SetValue(FLOATDATA(false, &data[16]).fValue); ppw->m_ClientState.m_SupplyStopReleasePressureValue->SetValue(FLOATDATA(false, &data[20]).fValue); } if (sec1.Result == 0) { unsigned char* data = (unsigned char*)sec1.pdata; ppw->m_ClientState.m_InverterFreqSetValue->SetValue(FLOATDATA(false, &data[0]).fValue); } if (sec2.Result == 0) { unsigned char* data = (unsigned char*)sec2.pdata; ppw->m_ClientState.m_DropPowderNeedDeoxygenValue->SetValue(FLOATDATA(false, &data[0]).fValue); ppw->m_ClientState.m_DropPowderDeoxygenTargetValue->SetValue(FLOATDATA(false, &data[4]).fValue); } if (sec3.Result == 0) { unsigned char* data = (unsigned char*)sec3.pdata; ppw->m_ClientState.m_SupplyDifPressureWarnValue->SetValue(FLOATDATA(false, &data[0]).fValue); } if (sec4.Result==0) { unsigned char* data = (unsigned char*)sec4.pdata; ppw->m_ClientState.m_DeoxygenActive->SetValue(((data[0] & 0x1) > 0 ? true : false)); ppw->m_ClientState.m_RequestSupplyPowder->SetValue(((data[0] & 0x2) > 0 ? true : false)); ppw->m_ClientState.m_BlowbackActive->SetValue(((data[0] & 0x4) > 0 ? true : false)); ppw->m_ClientState.m_OpenDropPowderValve->SetValue(((data[0] & 0x8) > 0 ? true : false)); ppw->m_ClientState.m_DropPowderEnable->SetValue(((data[0] & 0x10) > 0 ? true : false)); ppw->m_ClientState.m_SupplyPressure->SetValue(FLOATDATA(false, &data[1]).fValue); ppw->m_ClientState.m_SupplyJarPressure->SetValue(FLOATDATA(false, &data[5]).fValue); ppw->m_ClientState.m_MachineOxygenRealtime->SetValue(FLOATDATA(false, &data[9]).fValue); ppw->m_ClientState.m_PowderCarWeight->SetValue(FLOATDATA(false, &data[13]).fValue); ppw->m_ClientState.m_WorkGasPressure->SetValue(FLOATDATA(false, &data[17]).fValue); ppw->m_ClientState.m_CompressGasPressure->SetValue(FLOATDATA(false, &data[21]).fValue); ppw->m_ClientState.m_SupplyDifPressure->SetValue(FLOATDATA(false, &data[27]).fValue); ppw->m_ClientState.m_DropDifPressure->SetValue(FLOATDATA(false, &data[31]).fValue); } if (sec5.Result == 0) { unsigned char* data = (unsigned char*)sec5.pdata; ppw->m_ClientState.m_SupplyJarEnterValveOpenAlarm->SetValue(((data[0] & 0x1) > 0 ? true : false)); ppw->m_ClientState.m_SupplyJarReturnValveOpenAlarm->SetValue(((data[0] & 0x2) > 0 ? true : false)); ppw->m_ClientState.m_ExhaustOpenAlarm->SetValue(((data[0] & 0x4) > 0 ? true : false)); ppw->m_ClientState.m_FanRevTurnAlarm->SetValue(((data[0] & 0x8) > 0 ? true : false)); ppw->m_ClientState.m_StopButtonPressDown->SetValue(((data[0] & 0x10) > 0 ? true : false)); ppw->m_ClientState.m_NoDropPowderWarn->SetValue(((data[0] & 0x20) > 0 ? true : false)); ppw->m_ClientState.m_CompressGasPressureLeakAlarm->SetValue(((data[1] & 0x1) > 0 ? true : false)); ppw->m_ClientState.m_WorkGasPressureLeakAlarm->SetValue(((data[1] & 0x2) > 0 ? true : false)); ppw->m_ClientState.m_NoPowderWarn->SetValue(((data[1] & 0x4) > 0 ? true : false)); ppw->m_ClientState.m_InverterAlarm->SetValue(((data[1] & 0x8) > 0 ? true : false)); ppw->m_ClientState.m_SupplyJarFilterBlockAlarm->SetValue(((data[1] & 0x10) > 0 ? true : false)); ppw->m_ClientState.m_SupplyBlockAlarm->SetValue(((data[1] & 0x20) > 0 ? true : false)); ppw->m_ClientState.m_FanEnterValveOpenAlarm->SetValue(((data[1] & 0x40) > 0 ? true : false)); ppw->m_ClientState.m_SupplyJarDropValveCloseAlarm->SetValue(((data[1] & 0x80) > 0 ? true : false)); } LeaveCriticalSection(&ppw->m_ValueCS); } void PowderSupplySimpleClient3::SetDeoxygenActive(bool enable) { SetBit(201 * 8, enable); } void PowderSupplySimpleClient3::SetSupplyEnable(bool enable) { SetBit(201 * 8+1, enable); } void PowderSupplySimpleClient3::SetBlowbackActive(bool enable) { SetBit(201 * 8 + 2, enable); } void PowderSupplySimpleClient3::SetOpenDropPowderValve(bool enable) { SetBit(201 * 8 + 3, enable); } void PowderSupplySimpleClient3::ResetAlarm() { SetBit(201 * 8 + 5,true); } void PowderSupplySimpleClient3::SetSupplyBlockPreProcValue(float fvalue) { SetDBFloat(30, fvalue); } void PowderSupplySimpleClient3::SetMachineDeoxygenTarge(float fvalue) { SetDBFloat(34, fvalue); } void PowderSupplySimpleClient3::SetMachineOxygenAlarm(float fvalue) { SetDBFloat(38, fvalue); } void PowderSupplySimpleClient3::SetPowerCarNoPowderValue(float fvalue) { SetDBFloat(42, fvalue); } void PowderSupplySimpleClient3::SetSupplyReleasePressureValue(float fvalue) { SetDBFloat(46, fvalue); } void PowderSupplySimpleClient3::SetSupplyStopReleasePressureValue(float fvalue) { SetDBFloat(50, fvalue); } void PowderSupplySimpleClient3::SetInverterFreqSetValue(float fvalue) { SetDBFloat(82, fvalue); } void PowderSupplySimpleClient3::SetDropPowderNeedDeoxygenValue(float fvalue) { SetDBFloat(116, fvalue); } void PowderSupplySimpleClient3::SetDropPowderDeoxygenTargetValue(float fvalue) { SetDBFloat(120, fvalue); } void PowderSupplySimpleClient3::SetSupplyDifPressureWarnValue(float fvalue) { SetDBFloat(136, fvalue); } void PowderSupplySimpleClient3::RequestStart() { if (!m_ClientState.m_RequestSupplyPowder) { SetSupplyEnable(true); Sleep(500); } } void PowderSupplySimpleClient3::RequestSupplyStop() { SetSupplyEnable(false); } //void PowderSupplySimpleClient3::DrawUI(bool* isshow) //{ // PowderSupplySimpleStat powderSupplyStat; // GetStat(powderSupplyStat); // //ImGui::SetNextWindowSize(ImVec2(780, 420)); // ImGui::Begin(_(u8"供粉状态").c_str(), isshow, ImGuiWindowFlags_NoDocking | ImGuiWindowFlags_NoNav | ImGuiWindowFlags_AlwaysAutoResize); // ImGui::BeginGroup(); // // if (IsServerConnected())ImGui::TextColored(ImVec4(0.0, 1.0, 0.0, 1.0), _(u8"供粉端口连接:正常").c_str()); // else ImGui::TextColored(ImVec4(1.0, 0.0, 0.0, 1.0), _(u8"供粉端口连接:断开").c_str()); // if (IsSignalConnected())ImGui::TextColored(ImVec4(0.0, 1.0, 0.0, 1.0), _(u8"供粉通讯连接:正常").c_str()); // else ImGui::TextColored(ImVec4(1.0, 0.0, 0.0, 1.0), _(u8"供粉通讯连接:断开").c_str()); // // ImGui::Dummy(ImVec2(0.0f, 15.0f)); // // ImGui::Checkbox(_(u8"打印自动送粉").c_str(), &m_PowderEstimateCfg->m_AutoSupplyEnable); // ImGui::Text(_(u8"自动送粉状态:%s").c_str(), IsAutoSuppling() ? _(u8"启动").c_str() : _(u8"停止").c_str()); // if (IsAutoSuppling()) { // if (ImGui::Button(_(u8"中断自动送粉").c_str(), ImVec2(150, 0))) { // StopAutoSupply(); // } // } // // ImGui::Text(_(u8"自动送粉超时分钟:").c_str()); ImGui::SameLine(); // ImGui::PushID("AutoSupplyTimeoutMinute"); // ImGui::PushItemWidth(40); // ImGui::InputScalar("", ImGuiDataType_U32, &m_PowderEstimateCfg->m_AutoSupplyTimeoutMinute, 0, 0, 0, ImGuiInputTextFlags_EnterReturnsTrue); // ImGui::PopItemWidth(); // ImGui::PopID(); // // ImGui::Dummy(ImVec2(0.0f, 15.0f)); // // ImGui::PushItemFlag(ImGuiItemFlags_Disabled, true); // m_ShowAssist.m_DropPowderEnable = powderSupplyStat.m_DropPowderEnable; // ImGui::Checkbox(_(u8"允许供粉").c_str(), &m_ShowAssist.m_DropPowderEnable); // ImGui::PopItemFlag(); // // m_ShowAssist.m_DeoxygenActive = powderSupplyStat.m_DeoxygenActive; // if (ImGui::Checkbox(_(u8"送粉机除氧").c_str(), &m_ShowAssist.m_DeoxygenActive)) { // SetDeoxygenActive(m_ShowAssist.m_DeoxygenActive); // } // // m_ShowAssist.m_RequestSupplyPowder = powderSupplyStat.m_RequestSupplyPowder; // if (ImGui::Checkbox(_(u8"启动送粉").c_str(), &m_ShowAssist.m_RequestSupplyPowder)) { // SetSupplyEnable(m_ShowAssist.m_RequestSupplyPowder); // } // // m_ShowAssist.m_BlowbackActive = powderSupplyStat.m_BlowbackActive; // if (ImGui::Checkbox(_(u8"反吹启动").c_str(), &m_ShowAssist.m_BlowbackActive)) { // SetBlowbackActive(!m_ShowAssist.m_BlowbackActive); // } // // m_ShowAssist.m_OpenDropPowderValve = powderSupplyStat.m_OpenDropPowderValve; // if (ImGui::Checkbox(_(u8"开启下粉阀").c_str(), &m_ShowAssist.m_OpenDropPowderValve)) { // SetOpenDropPowderValve(m_ShowAssist.m_OpenDropPowderValve); // } // // // ImGui::Dummy(ImVec2(0.0f, 15.0f)); // ImGui::Text(_(u8"送粉压力:%.1f KPa").c_str(), powderSupplyStat.m_SupplyPressure); // ImGui::Text(_(u8"上加粉罐压力:%.1f KPa").c_str(), powderSupplyStat.m_SupplyJarPressure); // ImGui::Text(_(u8"送粉机氧含量:%.1f PPM").c_str(), powderSupplyStat.m_MachineOxygenRealtime); // ImGui::Text(_(u8"小车称重:%.1f Kg").c_str(), powderSupplyStat.m_PowderCarWeight); // ImGui::Text(_(u8"工作气压力:%.1f MPa").c_str(), powderSupplyStat.m_WorkGasPressure); // ImGui::Text(_(u8"压缩气压力:%.1f MPa").c_str(), powderSupplyStat.m_CompressGasPressure); // ImGui::Text(_(u8"送粉压差值:%.1f KPa").c_str(), powderSupplyStat.m_SupplyDifPressure); // ImGui::Text(_(u8"落粉压差值:%.1f KPa").c_str(), powderSupplyStat.m_DropDifPressure); // // ImGui::EndGroup(); // ImGui::SameLine(0, 20); // ImGui::SeparatorEx(ImGuiSeparatorFlags_Vertical); // ImGui::SameLine(); // // ImGui::BeginGroup(); // // ImGui::PushItemWidth(100); // // m_ShowAssist.m_SupplyBlockPreProcValue = powderSupplyStat.m_SupplyBlockPreProcValue; // if (ImGui::InputFloat(_(u8"送粉堵塞预处理KPa").c_str(), &m_ShowAssist.m_SupplyBlockPreProcValue, 0, 0, "%.2f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetSupplyBlockPreProcValue(m_ShowAssist.m_SupplyBlockPreProcValue); // } // // m_ShowAssist.m_MachineOxygenTarge = powderSupplyStat.m_MachineOxygenTarge; // if (ImGui::InputFloat(_(u8"送粉机除氧目标值").c_str(), &m_ShowAssist.m_MachineOxygenTarge, 0, 0, "%.2f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetMachineDeoxygenTarge(m_ShowAssist.m_MachineOxygenTarge); // } // // m_ShowAssist.m_MachineOxygenAlarm = powderSupplyStat.m_MachineOxygenAlarm; // if (ImGui::InputFloat(_(u8"送粉机氧报警值").c_str(), &m_ShowAssist.m_MachineOxygenAlarm, 0, 0, "%.2f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetMachineOxygenAlarm(m_ShowAssist.m_MachineOxygenAlarm); // } // // m_ShowAssist.m_PowerCarNoPowderValue = powderSupplyStat.m_PowerCarNoPowderValue; // if (ImGui::InputFloat(_(u8"小车无粉值").c_str(), &m_ShowAssist.m_PowerCarNoPowderValue, 0, 0, "%.2f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetPowerCarNoPowderValue(m_ShowAssist.m_PowerCarNoPowderValue); // } // // m_ShowAssist.m_SupplyReleasePressureValue = powderSupplyStat.m_SupplyReleasePressureValue; // if (ImGui::InputFloat(_(u8"供粉机泄压值KPA").c_str(), &m_ShowAssist.m_SupplyReleasePressureValue, 0, 0, "%.2f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetSupplyReleasePressureValue(m_ShowAssist.m_SupplyReleasePressureValue); // } // // m_ShowAssist.m_SupplyStopReleasePressureValue = powderSupplyStat.m_SupplyStopReleasePressureValue; // if (ImGui::InputFloat(_(u8"供粉机压力停止泄压值").c_str(), &m_ShowAssist.m_SupplyStopReleasePressureValue, 0, 0, "%.2f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetSupplyStopReleasePressureValue(m_ShowAssist.m_SupplyStopReleasePressureValue); // } // // m_ShowAssist.m_InverterFreqSetValue = powderSupplyStat.m_InverterFreqSetValue; // if (ImGui::InputFloat(_(u8"变频器频率设定值Hz").c_str(), &m_ShowAssist.m_InverterFreqSetValue, 0, 0, "%.2f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetInverterFreqSetValue(m_ShowAssist.m_InverterFreqSetValue); // } // // m_ShowAssist.m_DropPowderNeedDeoxygenValue = powderSupplyStat.m_DropPowderNeedDeoxygenValue; // if (ImGui::InputFloat(_(u8"下粉时需要除氧值PPM").c_str(), &m_ShowAssist.m_DropPowderNeedDeoxygenValue, 0, 0, "%.2f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetDropPowderNeedDeoxygenValue(m_ShowAssist.m_DropPowderNeedDeoxygenValue); // } // // m_ShowAssist.m_DropPowderDeoxygenTargetValue = powderSupplyStat.m_DropPowderDeoxygenTargetValue; // if (ImGui::InputFloat(_(u8"下粉除氧目标值PPM").c_str(), &m_ShowAssist.m_DropPowderDeoxygenTargetValue, 0, 0, "%.2f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetDropPowderDeoxygenTargetValue(m_ShowAssist.m_DropPowderDeoxygenTargetValue); // } // // m_ShowAssist.m_SupplyDifPressureWarnValue = powderSupplyStat.m_SupplyDifPressureWarnValue; // if (ImGui::InputFloat(_(u8"送粉压差堵塞预警值KPA").c_str(), &m_ShowAssist.m_SupplyDifPressureWarnValue, 0, 0, "%.2f", ImGuiInputTextFlags_EnterReturnsTrue)) // { // SetSupplyDifPressureWarnValue(m_ShowAssist.m_SupplyDifPressureWarnValue); // } // // ImGui::Dummy(ImVec2(0.0f, 15.0f)); // if (m_ExtCfg->m_UsePowderStick) { // if (ImGui::InputFloat(_(u8"开始补粉位").c_str(), &m_PowderEstimateCfg->m_StartSupplyQty, 0, 0, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) { // if (m_PowderEstimateCfg->m_StartSupplyQty < 0.0f)m_PowderEstimateCfg->m_StartSupplyQty = 0.0f; // if (m_PowderEstimateCfg->m_StartSupplyQty > m_PowderEstimateCfg->m_StopSupplyQty)m_PowderEstimateCfg->m_StartSupplyQty = m_PowderEstimateCfg->m_StopSupplyQty; // } // if (ImGui::InputFloat(_(u8"结束补粉位").c_str(), &m_PowderEstimateCfg->m_StopSupplyQty, 0, 0, "%.1f", ImGuiInputTextFlags_EnterReturnsTrue)) { // if (m_PowderEstimateCfg->m_StopSupplyQty < 0.0f)m_PowderEstimateCfg->m_StopSupplyQty = 0.0f; // if (m_PowderEstimateCfg->m_StartSupplyQty > m_PowderEstimateCfg->m_StopSupplyQty)m_PowderEstimateCfg->m_StopSupplyQty = m_PowderEstimateCfg->m_StartSupplyQty; // } // } // else { // char buffer[512]; // int bufferoffset = 0; // for (size_t i = 0; i < m_PowderEstimateCfg->m_PEVec.size(); i++) { // bufferoffset += sprintf_s(buffer + bufferoffset, sizeof(buffer) - bufferoffset, "%s", m_PowderEstimateCfg->m_PEVec[i]->m_PosSensor->m_ShowContent.c_str()); // bufferoffset += 1; // } // string str(buffer, bufferoffset); // if (ImGui::Combo(_(u8"开始补粉位").c_str(), &m_PowderEstimateCfg->m_StartSupplyPos, str.data())) // { // if (m_PowderEstimateCfg->m_StartSupplyPos >= m_PowderEstimateCfg->m_StopSupplyPos)m_PowderEstimateCfg->m_StartSupplyPos = m_PowderEstimateCfg->m_StopSupplyPos - 1; // } // if (ImGui::Combo(_(u8"结束补粉位").c_str(), &m_PowderEstimateCfg->m_StopSupplyPos, str.data())) // { // if (m_PowderEstimateCfg->m_StartSupplyPos >= m_PowderEstimateCfg->m_StopSupplyPos)m_PowderEstimateCfg->m_StopSupplyPos = m_PowderEstimateCfg->m_StartSupplyPos + 1; // } // } // ImGui::PopItemWidth(); // ImGui::EndGroup(); // ImGui::SameLine(0, 20); // ImGui::SeparatorEx(ImGuiSeparatorFlags_Vertical); // ImGui::SameLine(); // // ImGui::BeginGroup(); // // // ImGui::Text(_(u8"上加粉罐进粉阀打开失败报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_SupplyJarEnterValveOpenAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"上加粉罐回气阀打开失败报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_SupplyJarReturnValveOpenAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"排气挡板打开失败报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_ExhaustOpenAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"风机反转报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_FanRevTurnAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"压缩气压力不足报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_CompressGasPressureLeakAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"工作气压力不足:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_WorkGasPressureLeakAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"无粉警告:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_NoPowderWarn) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"变频器报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_InverterAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"加粉罐滤芯堵塞:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_SupplyJarFilterBlockAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"送粉堵塞报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_SupplyBlockAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // // ImGui::Text(_(u8"风机进风阀打开失败报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_FanEnterValveOpenAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"风机进风阀打开失败报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_FanEnterValveOpenAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"上加粉罐落粉阀关闭失败报警:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_SupplyJarDropValveCloseAlarm) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"紧急开关已按下:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_StopButtonPressDown) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // ImGui::Text(_(u8"无落粉警告:").c_str()); ImGui::SameLine(); // if (powderSupplyStat.m_NoDropPowderWarn) { // ImGui::TextColored(Toast::COLOR_RED, _(u8"是").c_str()); // } // else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"否").c_str()); // // if (ImGui::Button(_(u8"报警复位").c_str())) // { // ResetAlarm(); // } // // ImGui::EndGroup(); // ImGui::SameLine(0, 20); // ImGui::Spacing(); // ImGui::End(); //}