GrpcPrint/PrintC/Communication/HBDPurifierG3Client.cpp

478 lines
20 KiB
C++
Raw Normal View History

2024-04-18 11:59:51 +08:00
#include "HBDPurifierG3Client.h"
//#include "S7Command.h"
#include "../SystemInfo.h"
#include "../utils/DataByte.h"
//#include "../PLC/SignalService.h"
HBDPurifierG3Client::HBDPurifierG3Client(void* pconfig):PurifierClient(pconfig)
{
}
HBDPurifierG3Client::~HBDPurifierG3Client()
{
Shutdown();
}
//void HBDPurifierG3Client::InitCommand()
//{
// //PurifierClient::InitCommand();
//
// S7Command* pcommand = new S7Command(S7_COMMAND_READ_INFO, READ_ITEM_COUNT);
// TS7DataItem* items = pcommand->getDataItems();
// int itemFlag = 0;
// items[itemFlag].Area = S7AreaMK;
// items[itemFlag].WordLen = S7WLByte;
// items[itemFlag].Start = 0;
// items[itemFlag].Amount = 6;
// items[itemFlag].pdata = new unsigned char[6];
//
// //VD_中效过滤器压力实值
// itemFlag = 1;
// items[itemFlag].Area = S7AreaDB;
// items[itemFlag].WordLen = S7WLByte;
// items[itemFlag].DBNumber = 1;
// items[itemFlag].Start = 0;
// items[itemFlag].Amount = 206;
// items[itemFlag].pdata = new unsigned char[206];
//
// itemFlag = 2;
// items[itemFlag].Area = S7AreaDB;
// items[itemFlag].WordLen = S7WLByte;
// items[itemFlag].DBNumber = 1;
// items[itemFlag].Start = 1000;
// items[itemFlag].Amount = 1;
// items[itemFlag].pdata = new unsigned char[1];
//
// pcommand->m_Ref = this;
// pcommand->m_Fun = &HBDPurifierG3Client::G3ProcReadInfoXT;
// pcommand->isNeedDel = false;
//
//
// S7Command* pcommand2 = new S7Command(S7_COMMAND_READ_INFO, READ_ITEM_COUNT_2);
// TS7DataItem* items2 = pcommand2->getDataItems();
// itemFlag = 0;
// //报警信息
// items2[itemFlag].Area = S7AreaDB;
// items2[itemFlag].WordLen = S7WLByte;
// items2[itemFlag].DBNumber = 1;
// items2[itemFlag].Start = 389;
// items2[itemFlag].Amount = 5;
// items2[itemFlag].pdata = new unsigned char[5];
//
// itemFlag = 1;
// //最大风速
// items2[itemFlag].Area = S7AreaDB;
// items2[itemFlag].WordLen = S7WLByte;
// items2[itemFlag].DBNumber = 1;
// items2[itemFlag].Start = 550;
// items2[itemFlag].Amount = 8;
// items2[itemFlag].pdata = new unsigned char[8];
//
// itemFlag = 2;
// items2[itemFlag].Area = S7AreaDB;
// items2[itemFlag].WordLen = S7WLByte;
// items2[itemFlag].DBNumber = 1;
// items2[itemFlag].Start = 600;
// items2[itemFlag].Amount = 4;
// items2[itemFlag].pdata = new unsigned char[4];
//
//
// itemFlag = 3;
// items2[itemFlag].Area = S7AreaDB;
// items2[itemFlag].WordLen = S7WLByte;
// items2[itemFlag].DBNumber = 1;
// items2[itemFlag].Start = 356;
// items2[itemFlag].Amount = 4;
// items2[itemFlag].pdata = new unsigned char[4];
//
// itemFlag = 4;
// items2[itemFlag].Area = S7AreaDB;
// items2[itemFlag].WordLen = S7WLByte;
// items2[itemFlag].DBNumber = 1;
// items2[itemFlag].Start = 696;
// items2[itemFlag].Amount = 4;
// items2[itemFlag].pdata = new unsigned char[4];
//
// itemFlag = 5;
// items2[itemFlag].Area = S7AreaDB;
// items2[itemFlag].WordLen = S7WLByte;
// items2[itemFlag].DBNumber = 1;
// items2[itemFlag].Start = 1442;
// items2[itemFlag].Amount = 4;
// items2[itemFlag].pdata = new unsigned char[4];
//
// itemFlag = 6;
// items2[itemFlag].Area = S7AreaDB;
// items2[itemFlag].WordLen = S7WLByte;
// items2[itemFlag].DBNumber = 1;
// items2[itemFlag].Start = 595;
// items2[itemFlag].Amount = 1;
// items2[itemFlag].pdata = new unsigned char[1];
//
// itemFlag = 7;
// items2[itemFlag].Area = S7AreaDB;
// items2[itemFlag].WordLen = S7WLByte;
// items2[itemFlag].DBNumber = 1;
// items2[itemFlag].Start = 658;
// items2[itemFlag].Amount = 4;
// items2[itemFlag].pdata = new unsigned char[4];
//
// itemFlag = 8;
// items2[itemFlag].Area = S7AreaDB;
// items2[itemFlag].WordLen = S7WLByte;
// items2[itemFlag].DBNumber = 1;
// items2[itemFlag].Start = 430;
// items2[itemFlag].Amount = 6;
// items2[itemFlag].pdata = new unsigned char[6];
//
// pcommand2->m_Ref = this;
// pcommand2->m_Fun = &HBDPurifierG3Client::G3ProcReadInfoXT_2;
// pcommand2->isNeedDel = false;
//
// //写测氧值
// S7Command* oxygenPressureCom = new S7Command(S7_COMMAND_WRITE, 2);
// TS7DataItem* dataItem = oxygenPressureCom->getDataItems();
// dataItem[0].Area = S7AreaDB;
// dataItem[0].DBNumber = 1;
// dataItem[0].Start = 408;
// dataItem[0].WordLen = S7WLByte;
// dataItem[0].Amount = 4;
// unsigned char* poxygenfloat = new unsigned char[4];
// S7FLOATDATA foxygendata;
// foxygendata.fValue = (g_SystemInfo->m_ComPrintOxygen1 > g_SystemInfo->m_ComPrintOxygen2 ? g_SystemInfo->m_ComPrintOxygen1 : g_SystemInfo->m_ComPrintOxygen2);
// poxygenfloat[0] = foxygendata.data[3];
// poxygenfloat[1] = foxygendata.data[2];
// poxygenfloat[2] = foxygendata.data[1];
// poxygenfloat[3] = foxygendata.data[0];
// dataItem[0].pdata = poxygenfloat;
// m_OxygenWriteValue = (unsigned char*)dataItem[0].pdata;
//
// dataItem[1].Area = S7AreaDB;
// dataItem[1].DBNumber = 1;
// dataItem[1].Start = 20;
// dataItem[1].WordLen = S7WLByte;
// dataItem[1].Amount = 4;
// unsigned char* pfloat = new unsigned char[4];
// S7FLOATDATA fdata;
// EnterCriticalSection(&g_SystemInfo->m_InfoCs);
// fdata.fValue = g_SystemInfo->m_EnvState.m_PrintPressureAnalog;
// LeaveCriticalSection(&g_SystemInfo->m_InfoCs);
// pfloat[0] = fdata.data[3];
// pfloat[1] = fdata.data[2];
// pfloat[2] = fdata.data[1];
// pfloat[3] = fdata.data[0];
// dataItem[1].pdata = pfloat;
// m_PressureWriteValue = (unsigned char*)dataItem[1].pdata;
//
// oxygenPressureCom->m_Ref = this;
// oxygenPressureCom->m_Fun = &PurifierClient::ProcWriteValueXT;
// oxygenPressureCom->isNeedDel = false;
// oxygenPressureCom->m_PreWrite = &HBDPurifierG3Client::ProcSetPressureValue;
//
// m_CycleCommands.push_back(pcommand);
// m_CycleCommands.push_back(pcommand2);
// m_CycleCommands.push_back(oxygenPressureCom);
//}
//void HBDPurifierG3Client::G3ProcReadInfoXT(void *pobject, Command* pcommand)
//{
// S7Command* s7Command = (S7Command*)pcommand;
// TS7DataItem* pdataItems = s7Command->getDataItems();
// int itemcount = s7Command->getItemCount();
// if (pobject == NULL || itemcount != READ_ITEM_COUNT)return;
// HBDPurifierG3Client* ppw = (HBDPurifierG3Client*)pobject;
// TS7DataItem pCtrl = pdataItems[0];
// TS7DataItem pPresure = pdataItems[1];
// TS7DataItem ppCtrl = pdataItems[2];
//
// TS7DataItem pKeepAlive = pdataItems[7];
// TS7DataItem pFreq = pdataItems[8];
// //TS7DataItem pUseDeoxygenLimit = pdataItems[8];
// //TS7DataItem pUseGasSupply = pdataItems[9];
// //TS7DataItem pFanFreq = pdataItems[8];
//
//
// EnterCriticalSection(&ppw->m_ValueCS);
// if (pCtrl.Result == 0) {
// unsigned char* arr = (unsigned char*)pCtrl.pdata;
// unsigned char mdata0 = arr[0];
// unsigned char mdata1 = arr[1];
// unsigned char mdata2 = arr[2];
// unsigned char mdata3 = arr[3];
// unsigned char mdata4 = arr[4];
// unsigned char mdata5 = arr[5];
// ppw->m_Stat.isPurifying ->SetValue ((mdata5 & 0x1)>0 ? true : false);
// ppw->m_Stat.isDedusting ->SetValue ((mdata0 & 0x4) ? true : false);
// ppw->m_Stat.isBoxCleaning ->SetValue ((mdata0 & 0x40) ? true : false);
// ppw->m_Stat.isBlowBack ->SetValue ((mdata1 & 0x2) ? true : false);
// ppw->m_Stat.isFilterDiscarding ->SetValue ((mdata1 & 0x10) ? true : false);
// ppw->m_Stat.isFilterCleaning ->SetValue ((mdata1 & 0x80) ? true : false);
// ppw->m_Stat.isHopperCleaning ->SetValue ((mdata2 & 0x20) ? true : false);
// }
// if (pPresure.Result == 0) {
// unsigned char* pchar = (unsigned char*)pPresure.pdata;
// ppw->m_Stat.midPressureValue->SetValue(FLOATDATA(false, &pchar[0]).fValue);
// ppw->m_Stat.midPressureDifValue->SetValue(FLOATDATA(false, &pchar[4]).fValue);
// ppw->m_Stat.midTemperatureValue->SetValue(FLOATDATA(false, &pchar[8]).fValue);
// ppw->m_Stat.highPressureDifValue->SetValue(FLOATDATA(false, &pchar[12]).fValue);
// //ppw->m_Stat.anemometerActualValue ->SetValue( FLOATDATA(false, &pchar[16]).fValue;
// ppw->m_Stat.printPressureValue->SetValue(FLOATDATA(false, &pchar[20]).fValue);
// ppw->m_Stat.boxPressureUpLimit->SetValue(FLOATDATA(false, &pchar[28]).fValue);
// ppw->m_Stat.boxPressureDownLimit->SetValue(FLOATDATA(false, &pchar[32]).fValue);
// ppw->m_Stat.filterOxygenValue->SetValue(FLOATDATA(false, &pchar[48]).fValue);
// ppw->m_Stat.printOxygenValue->SetValue(FLOATDATA(false, &pchar[60]).fValue);
// ppw->m_Stat.midPressureDifAlarmValue->SetValue(FLOATDATA(false, &pchar[64]).fValue);
// ppw->m_Stat.highPressureDifAlarmValue->SetValue(FLOATDATA(false, &pchar[68]).fValue);
// ppw->m_Stat.printOxygenUpSetValue->SetValue(FLOATDATA(false, &pchar[76]).fValue);
// ppw->m_RunCfg->m_WarnOxygen = ppw->m_Stat.printOxygenUpSetValue->GetValue();
//
// ppw->m_Stat.boxWashTime->SetValue(((pchar[110] & 0xff) << 8) + (pchar[111] & 0xff));
// ppw->m_Stat.filterWashTime->SetValue(((pchar[112] & 0xff) << 8) + (pchar[113] & 0xff));
// ppw->m_Stat.boxWashDelayTime->SetValue(((pchar[114] & 0xff) << 8) + (pchar[115] & 0xff));
// ppw->m_Stat.dedustingWashDelayTime->SetValue(((pchar[116] & 0xff) << 8) + (pchar[117] & 0xff));
// ppw->m_Stat.hopperCleanRemind->SetValue(((pchar[118] & 0xff) << 8) + (pchar[119] & 0xff));
//
// ppw->m_Stat.printCleanOxygenSetValue->SetValue(FLOATDATA(false, &pchar[142]).fValue);
// ppw->m_Stat.windSetValue->SetValue(FLOATDATA(false, &pchar[146]).fValue);
// ppw->m_Stat.windActualValue->SetValue(FLOATDATA(false, &pchar[150]).fValue);
// ppw->m_Stat.filterCleanOxygenSetValue->SetValue(FLOATDATA(false, &pchar[158]).fValue);
// ppw->m_Stat.midTempHighSetValue->SetValue(FLOATDATA(false, &pchar[166]).fValue);
// ppw->m_Stat.midTempUltraSetValue->SetValue(FLOATDATA(false, &pchar[170]).fValue);
// ppw->m_Stat.oxygenAlarmValue->SetValue(FLOATDATA(false, &pchar[190]).fValue);
// ppw->m_RunCfg->SetOxygenAlarmValue(ppw->m_Stat.oxygenAlarmValue->GetValue());
// ppw->m_RunCfg->SetOxygenTargeValue(ppw->m_Stat.printCleanOxygenSetValue->GetValue());
//
// FanFit* al = ppw->m_ExtCfg->m_FanWindFit[ppw->m_ExtCfg->m_SelectedFanWindFit];
// if (al->alarmWind > ppw->m_Stat.windSetValue->GetValue()) {
// al->alarmWind = (ppw->m_Stat.windSetValue->GetValue() > 50.0f) ? (ppw->m_Stat.windSetValue->GetValue() - 50.0f) : 1.0f;
// }
//
// ppw->m_Stat.filterTotalUseTime->SetValue(((pchar[194] & 0xff) << 8) + (pchar[195] & 0xff));
// ppw->m_Stat.usedTimeFromlastBowBack->SetValue(((pchar[196] & 0xff) << 8) + (pchar[197] & 0xff));
// ppw->m_Stat.bowBackTimes->SetValue(((pchar[198] & 0xff) << 8) + (pchar[199] & 0xff));
// ppw->m_Stat.hopperTimeLastClean->SetValue(((pchar[204] & 0xff) << 8) + (pchar[205] & 0xff));
//
// if (ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm) {
// if (ppw->m_Stat.filterOxygenValue->GetValue() > ppw->m_RunCfg->m_FilterOxygenAlarmValue) {
// if (ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm->m_AlarmContinueTick > ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm->m_CheckAlarmSetTick) {
// ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm->m_AlarmInfo = to_string(ppw->m_Stat.filterOxygenValue->GetValue());
// SignalService::GetInstance().SetAlarm(ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm, true);
// }
// else {
// ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm->m_AlarmContinueTick++;
// }
// }
// else {
// ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm->m_AlarmContinueTick = 0;
// SignalService::GetInstance().SetAlarm(ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm, false);
// }
// }
// }
// if (ppCtrl.Result == 0) {
// unsigned char* arr = (unsigned char*)ppCtrl.pdata;
// ppw->m_Stat.ProtectionPressuring->SetValue((arr[0] & 0x10) > 0 ? true : false);
// ppw->m_Stat.protectionPressureEnable ->SetValue((arr[0] & 0x40) > 0 ? true : false);
// }
//
// LeaveCriticalSection(&ppw->m_ValueCS);
//}
//void HBDPurifierG3Client::G3ProcReadInfoXT_2(void* pobject, Command* pcommand)
//{
// S7Command* s7Command = (S7Command*)pcommand;
// TS7DataItem* pdataItems = s7Command->getDataItems();
// int itemcount = s7Command->getItemCount();
// if (pobject == NULL || itemcount != READ_ITEM_COUNT_2)return;
// HBDPurifierG3Client* ppw = (HBDPurifierG3Client*)pobject;
//
// TS7DataItem pAlarm = pdataItems[0];
// TS7DataItem pMaxWind = pdataItems[1];
// TS7DataItem pCoverWindOffset = pdataItems[2];
// TS7DataItem pWindAct = pdataItems[3];
// TS7DataItem pKeepAlive = pdataItems[4];
// TS7DataItem pFreq = pdataItems[5];
// TS7DataItem pSignal = pdataItems[6];
// TS7DataItem testRel = pdataItems[7];
// TS7DataItem pBlowRel = pdataItems[8];
//
// EnterCriticalSection(&ppw->m_ValueCS);
// if (pAlarm.Result == 0) {
// unsigned char* arr = (unsigned char*)pAlarm.pdata;
// unsigned char pdata1 = arr[0];
// unsigned char pdata2 = arr[1];
// unsigned char pdata3 = arr[2];
//
// ppw->m_Stat.midTempOverLimitAlarm->SetValue(((pdata1 & 0x1) > 0 ? true : false)); //中效高温报警,请注意
// ppw->m_Stat.midHighTempOverLimitAlarm->SetValue(((pdata1 & 0x2) > 0 ? true : false)); //中效超高温报警,已经很危险请停机检查
// ppw->m_Stat.hopperUseLongTimeAlarm->SetValue(((pdata1 & 0x4) > 0 ? true : false)); //料斗使用时间过长,请进行清理
// ppw->m_Stat.highPressureLackValveAlarm->SetValue(((pdata1 & 0x8) > 0 ? true : false)); //高压气气压不足,导致阀门异常关闭,请使用稳定气压
// ppw->m_Stat.protectionTestFail->SetValue(((pdata1 & 0x10) > 0 ? true : false));
// ppw->m_Stat.inverterAlarm->SetValue(((pdata1 & 0x20) > 0 ? true : false)); //变频器报警,请检查电机是否正常
// ppw->m_Stat.whirlwindJarIsFull->SetValue(((pdata1 & 0x40) > 0 ? true : false));
// ppw->m_Stat.midInValveOpenAlarm->SetValue(((pdata1 & 0x80) > 0 ? true : false));
//
// ppw->m_Stat.cycleInValveOpenAlarm->SetValue((pdata2 & 0x1) > 0 ? true : false); //循环进气阀打开异常,请检查阀门与感应器是否正常
// ppw->m_Stat.cycleOutValueOpenAlarm->SetValue((pdata2 & 0x2) > 0 ? true : false); //循环出气阀打开异常,请检查阀门与感应器是否正常
// ppw->m_Stat.highPressureLackAlarm->SetValue((pdata2 & 0x4) > 0 ? true : false); //高压气气压不足,无法启动设备请补充压力
// ppw->m_Stat.protectedPressureLackAlarm->SetValue((pdata2 & 0x8) > 0 ? true : false); //保护气气压不足,无法启动设备请补充压力
// ppw->m_Stat.midConnectException->SetValue((pdata2 & 0x10) > 0 ? true : false); //中效室连接异常,请检查是否连接完毕
// ppw->m_Stat.carbinDoorOpenException ->SetValue((pdata2 & 0x20) > 0 ? true : false); //舱门打开异常,请检查关闭好舱门与舱门感应器
// ppw->m_Stat.midFilterBlockAlarm ->SetValue((pdata2 & 0x40) > 0 ? true : false); //中效滤芯堵塞严重,请执行清理工作
// ppw->m_Stat.busOutValveNotOpenAlarm ->SetValue((pdata2 & 0x80) > 0 ? true : false); //总排气阀未打开,请检查总排气阀工作状态
//
// ppw->m_Stat.busOutValveNotCloseAlarm->SetValue((pdata3 & 0x01) > 0 ? true : false); //总排气阀未关闭,请检查总排气阀工作状态
// ppw->m_Stat.busOutValveNotInPosAlarm->SetValue((pdata3 & 0x02) > 0 ? true : false); //总排气阀处于不到位状态,请检查总排气阀工作状态
// ppw->m_Stat.printOutValveNotOpenAlarm->SetValue((pdata3 & 0x04) > 0 ? true : false); //打印室排气阀未打开,请检查打印室排气阀工作状态
// ppw->m_Stat.printOutValveNotCloseAlarm->SetValue((pdata3 & 0x08) > 0 ? true : false); //打印室排气阀未关闭,请检查打印室排气阀工作状态
// ppw->m_Stat.printOutValveNotInPosAlarm->SetValue((pdata3 & 0x10) > 0 ? true : false); //打印室排气阀处于不到位状态,请检查打印室排气阀工作状态
// ppw->m_Stat.inverterComException->SetValue((pdata3 & 0x20) > 0 ? true : false);
// ppw->m_Stat.anemometerException->SetValue((pdata3 & 0x40) > 0 ? true : false);
// ppw->m_Stat.midOutValveOpenAlarm->SetValue((pdata3 & 0x80) > 0 ? true : false); //打印室排气阀处于不到位状态,请检查打印室排气阀工作状态
// ppw->m_Stat.oxygenSelfTestFail->SetValue((arr[4] & 0x01) > 0 ? true : false);
//
// if (ppw->m_AlarmCfgWrapper->m_PurifierMidTempAlarm)
// SignalService::GetInstance().SetAlarm(ppw->m_AlarmCfgWrapper->m_PurifierMidTempAlarm, ppw->m_Stat.midTempOverLimitAlarm);
// }
//
// if (pMaxWind.Result == 0) {
// char* pchar = (char*)pMaxWind.pdata;
// S7FLOATDATA maxWindSetValue;
// maxWindSetValue.data[0] = pchar[3];
// maxWindSetValue.data[1] = pchar[2];
// maxWindSetValue.data[2] = pchar[1];
// maxWindSetValue.data[3] = pchar[0];
// ppw->m_Stat.maxWindSetValue->SetValue(maxWindSetValue.fValue);
// ppw->m_Stat.shieldMonitorPrintPressure->SetValue((pchar[7] & 0x1) > 0 ? true : false);
// ppw->m_Stat.useArgon->SetValue((pchar[7] & 0x2) > 0 ? true : false);
// ppw->m_ExtCfg->m_SelectedFanWindFit = ppw->m_Stat.useArgon ? 1 : 0;
//
// ppw->m_Stat.isCoverWind->SetValue((pchar[7] & 0x10) > 0 ? true : false);
// }
//
// if (pCoverWindOffset.Result == 0) {
// char* pchar = (char*)pCoverWindOffset.pdata;
// // S7FLOATDATA anemometerActualValue;
// S7FLOATDATA coverWindOffset;
//
// coverWindOffset.data[0] = pchar[3];
// coverWindOffset.data[1] = pchar[2];
// coverWindOffset.data[2] = pchar[1];
// coverWindOffset.data[3] = pchar[0];
// ppw->m_Stat.coverWindSpeedOffset->SetValue(coverWindOffset.fValue);
// }
//
// if (pWindAct.Result == 0)
// {
// unsigned char* pchar = (unsigned char*)pWindAct.pdata;
// ppw->m_Stat.anemometerActualValue->SetValue(FLOATDATA(false, &pchar[0]).fValue);
// }
//
// if (pKeepAlive.Result == 0)
// {
// char* pchar = (char*)pKeepAlive.pdata;
// ppw->m_Stat.purifierType->SetValue(((pchar[0] & 0xff) << 8) + (pchar[1] & 0xff));
// ppw->m_Stat.keepAlive->SetValue(((pchar[2] & 0xff) << 8) + (pchar[3] & 0xff));
// }
//
// if (pFreq.Result == 0)
// {
// char* pchar = (char*)pFreq.pdata;
// S7FLOATDATA freq;
// freq.data[0] = pchar[3];
// freq.data[1] = pchar[2];
// freq.data[2] = pchar[1];
// freq.data[3] = pchar[0];
// ppw->m_Stat.fanFreq->SetValue(freq.fValue);
// }
//
// if (pSignal.Result == 0)
// {
// char* pchar = (char*)pSignal.pdata;
// ppw->m_Stat.coverWindSlowFinish->SetValue((pchar[0] & 0x1) > 0 ? true : false);
// ppw->m_Stat.coverWindResumeFinish->SetValue((pchar[0] & 0x2) > 0 ? true : false);
// }
//
// if (testRel.Result == 0)
// {
// unsigned char* arr = (unsigned char*)testRel.pdata;
// ppw->m_Stat.ProtectionPressureSetTime->SetValue(((arr[0] & 0xff) << 8) + (arr[1] & 0xff));
// if (arr[2] == 2) {
// ppw->m_Stat.ProtectionPressureTestRelFail->SetValue(true);
// }
// else ppw->m_Stat.ProtectionPressureTestRelFail->SetValue(false);
//
// if (arr[3] == 2) {
// ppw->m_Stat.oxygenSelfTestRelFail->SetValue(true);
// }
// else ppw->m_Stat.oxygenSelfTestRelFail->SetValue(false);
//
// }
//
// if (pBlowRel.Result == 0)
// {
// unsigned char* arr = (unsigned char*)pBlowRel.pdata;
// ppw->m_Stat.blowBackBlowTime->SetValue(((arr[0] & 0xff) << 8) + (arr[1] & 0xff));
// ppw->m_Stat.blowBackSetTimes->SetValue(((arr[4] & 0xff) << 8) + (arr[5] & 0xff));
// }
// LeaveCriticalSection(&ppw->m_ValueCS);
//}
//
//
//void HBDPurifierG3Client::ProcSetPressureValue(void *pobject, Command* pcommand)
//{
// if (pobject == NULL)return;
// HBDPurifierG3Client* ppw = (HBDPurifierG3Client*)pobject;
// S7FLOATDATA fdata;
// S7FLOATDATA foxygen;
// g_SystemInfo->LockInfo();
// EnterCriticalSection(&g_SystemInfo->m_InfoCs);
// foxygen.fValue = (g_SystemInfo->m_ComPrintOxygen1 > g_SystemInfo->m_ComPrintOxygen2 ? g_SystemInfo->m_ComPrintOxygen1 : g_SystemInfo->m_ComPrintOxygen2);
// fdata.fValue = g_SystemInfo->m_EnvState.m_PrintPressureAnalog;
//
// LeaveCriticalSection(&g_SystemInfo->m_InfoCs);
// g_SystemInfo->UnlockInfo();
// ppw->m_PressureWriteValue[0] = fdata.data[3];
// ppw->m_PressureWriteValue[1] = fdata.data[2];
// ppw->m_PressureWriteValue[2] = fdata.data[1];
// ppw->m_PressureWriteValue[3] = fdata.data[0];
//
// ppw->m_OxygenWriteValue[0] = foxygen.data[3];
// ppw->m_OxygenWriteValue[1] = foxygen.data[2];
// ppw->m_OxygenWriteValue[2] = foxygen.data[1];
// ppw->m_OxygenWriteValue[3] = foxygen.data[0];
//}
//
//void HBDPurifierG3Client::SetCoverWind(bool bvalue)
//{
// 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 = 557 * 8 + 4;
// items[0].WordLen = S7WLBit;
// items[0].Amount = 1;
// bool* tempv = new bool[1];
// tempv[0] = bvalue;
// items[0].pdata = tempv;
// pcommand->m_Ref = this;
// pcommand->m_waitTime = 0;
// pcommand->m_Fun = &PurifierClient::ProcWriteValueXT;
// m_RTCommands.push(pcommand);
// LeaveCriticalSection(&m_RtcCS);
//}
//
//void HBDPurifierG3Client::SetCoverWindOffset(float offset)
//{
// if (!IsServerConnected())return;
// SetDBFloat(600, offset);
//}
//
//void HBDPurifierG3Client::SetProtectionPressure(bool bvalue)
//{
// if (!IsServerConnected())return;
// SetBit(1000 * 8 + 4, bvalue);
//}