#include "HBDPurifierClient.h" //#include "S7Command.h" #include "../global.h" #include "../DataManage/DataHandle.h" HBDPurifierClient::HBDPurifierClient(void* pconfig) :S7Client(pconfig) { } HBDPurifierClient::~HBDPurifierClient() { Shutdown(); } //void HBDPurifierClient::InitCommand() //{ // S7Command* pcommand = new S7Command(S7_COMMAND_READ_INFO, READ_ITEM_COUNT); // TS7DataItem* items = pcommand->getDataItems(); // items[0].Area = S7AreaDB; // items[0].DBNumber = 1; // items[0].WordLen = S7WLByte; // items[0].Start = 111; // items[0].Amount = 5; // items[0].pdata = new unsigned char[5]; // // items[1].Area = S7AreaDB; // items[1].DBNumber = 1; // items[1].WordLen = S7WLDWord; // items[1].Start = 0; // items[1].Amount = 1; // items[1].pdata = new int[1]; // // items[2].Area = S7AreaDB; // items[2].DBNumber = 1; // items[2].WordLen = S7WLReal; // items[2].Start = 30; // items[2].Amount = 2; // items[2].pdata = new float[2]; // // items[3].Area = S7AreaDB; // items[3].DBNumber = 1; // items[3].WordLen = S7WLDWord; // items[3].Start = 224; // items[3].Amount = 2; // items[3].pdata = new int[2]; // // items[4].Area = S7AreaDB; // items[4].DBNumber = 1; // items[4].WordLen = S7WLByte; // items[4].Start = 135; // items[4].Amount = 2; // items[4].pdata = new unsigned char[2]; // // items[5].Area = S7AreaDB; // items[5].DBNumber = 1; // items[5].WordLen = S7WLByte; // items[5].Start = 120; // items[5].Amount = 2; // items[5].pdata = new unsigned char[2]; // // items[6].Area = S7AreaDB; // items[6].DBNumber = 1; // items[6].WordLen = S7WLDWord; // items[6].Start = 68; // items[6].Amount = 1; // items[6].pdata = new int[1]; // // pcommand->m_Ref = this; // pcommand->m_Fun = &HBDPurifierClient::ProcReadInfo; // pcommand->isNeedDel = false; // m_CycleCommands.push_back(pcommand); //} //void HBDPurifierClient::ProcReadInfo(void *pobject, Command* pcommand) //{ // S7Command* s7Command = (S7Command*)pcommand; // TS7DataItem* pdataItems = s7Command->getDataItems(); // int itemcount = s7Command->getItemCount(); // if (pobject == NULL || itemcount != READ_ITEM_COUNT)return; // HBDPurifierClient* pc = (HBDPurifierClient*)pobject; // TS7DataItem pPurifier = pdataItems[0]; // TS7DataItem pTemp = pdataItems[1]; // TS7DataItem pDifPressure = pdataItems[2]; // TS7DataItem pFilter = pdataItems[3]; // TS7DataItem pValve = pdataItems[4]; // TS7DataItem pExcept = pdataItems[5]; // TS7DataItem pFilterAlarm = pdataItems[6]; // // EnterCriticalSection(&pc->m_ValueCS); // if (pPurifier.Result == 0) { // unsigned char* arr = (unsigned char*)pPurifier.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]; // // pc->m_Stat.isDeoxygen = ((mdata0 & 0x80) > 0 ? true : false); // pc->m_Stat.isBlowBack = ((mdata2 & 0x80) > 0 ? true : false); // pc->m_Stat.isDedusting = ((mdata4 & 0x80) > 0 ? true : false); // } // if (pTemp.Result == 0) { // char* pchar = (char*)pTemp.pdata; // S7DWORDDATA temperature; // temperature.data[0] = pchar[3]; // temperature.data[1] = pchar[2]; // temperature.data[2] = pchar[1]; // // temperature.data[3] = pchar[0]; // pc->m_Stat.temperature = temperature.iValue; // } // if (pDifPressure.Result == 0) { // char* pchar = (char*)pDifPressure.pdata; // S7FLOATDATA difpressure; // difpressure.data[0] = pchar[3]; // difpressure.data[1] = pchar[2]; // difpressure.data[2] = pchar[1]; // difpressure.data[3] = pchar[0]; // pc->m_Stat.difPressure = difpressure.fValue; // // S7FLOATDATA jampressure; // jampressure.data[0] = pchar[7]; // jampressure.data[1] = pchar[6]; // jampressure.data[2] = pchar[5]; // jampressure.data[3] = pchar[4]; // pc->m_Stat.filterJamPressure = jampressure.fValue; // } // if (pFilter.Result == 0) { // char* pchar = (char*)pFilter.pdata; // S7DWORDDATA filterTime; // S7DWORDDATA spinFilterTime; // // filterTime.data[0] = pchar[3]; // filterTime.data[1] = pchar[2]; // filterTime.data[2] = pchar[1]; // filterTime.data[3] = pchar[0]; // // spinFilterTime.data[0] = pchar[7]; // spinFilterTime.data[1] = pchar[6]; // spinFilterTime.data[2] = pchar[5]; // spinFilterTime.data[3] = pchar[4]; // // pc->m_Stat.filterTotalUseTime = filterTime.iValue; // pc->m_Stat.spinFilterTotalUseTime = spinFilterTime.iValue; // } // if (pValve.Result == 0) { // unsigned char* pchar = (unsigned char*)pValve.pdata; // pc->m_Stat.cycleEnter = HBDPurifierStat::ValveStat(pchar[0]); // pc->m_Stat.cycleExit = HBDPurifierStat::ValveStat(pchar[1]); // } // // if (pExcept.Result == 0) { // unsigned char* pchar = (unsigned char*)pExcept.pdata; // unsigned char mdata0 = pchar[0]; // unsigned char mdata1 = pchar[1]; // pc->m_Stat.hasExcept = ((mdata0 & 0x01) > 0 ? true : false); // pc->m_Stat.isDifPressureAlarm = ((mdata1 & 0x01) > 0 ? true : false); // pc->m_Stat.isDeoxygenEnterCloseExcept = ((mdata1 & 0x02) > 0 ? true : false); // pc->m_Stat.isBlowBackEnterCloseExcept = ((mdata1 & 0x04) > 0 ? true : false); // pc->m_Stat.isDeoxygenExitCloseExcept = ((mdata1 & 0x08) > 0 ? true : false); // pc->m_Stat.isBlowBackExitCloseExcept = ((mdata1 & 0x10) > 0 ? true : false); // pc->m_Stat.isEnterGapOpenExcept = ((mdata1 & 0x20) > 0 ? true : false); // pc->m_Stat.isExitGapOpenExcept = ((mdata1 & 0x40) > 0 ? true : false); // pc->m_Stat.isOverTemp = ((mdata1 & 0x80) > 0 ? true : false); // } // // if (pFilterAlarm.Result == 0) // { // char* pchar = (char*)pFilterAlarm.pdata; // S7DWORDDATA filterAlarmTime; // filterAlarmTime.data[0] = pchar[3]; // filterAlarmTime.data[1] = pchar[2]; // filterAlarmTime.data[2] = pchar[1]; // filterAlarmTime.data[3] = pchar[0]; // pc->m_Stat.spinFilterAlarmTime = filterAlarmTime.iValue; // } // LeaveCriticalSection(&pc->m_ValueCS); //} // //void HBDPurifierClient::ProcWriteValue(void *pobject, Command* pcommand) //{ // //} void HBDPurifierClient::SetDeoxygen(bool enable) { DataHandle::Instance()->SetPushMsg(PURIFIERPARAMW, "SetDeoxygen", to_string(enable), iBOOL); //if (g_isDebug) { // m_Stat.isDeoxygen = enable; //} //if (!m_BaseStat.isConnected)return; //S7Command* pcommand = new S7Command(S7_COMMAND_WRITE, 1); //TS7DataItem* items = pcommand->getDataItems(); //items[0].Area = S7AreaDB; //items[0].DBNumber = 1; //items[0].Start = 111 * 8 + 7; //items[0].WordLen = S7WLBit; //items[0].Amount = 1; //bool* tempv = new bool[1]; //tempv[0] = enable; //items[0].pdata = tempv; //pcommand->m_Ref = this; //pcommand->m_Fun = &HBDPurifierClient::ProcWriteValue; //EnterCriticalSection(&m_RtcCS); //m_RTCommands.push(pcommand); //LeaveCriticalSection(&m_RtcCS); } void HBDPurifierClient::SetBlowBack(bool enable) { DataHandle::Instance()->SetPushMsg(PURIFIERPARAMW, "SetBlowBack", to_string(enable), iBOOL); //if (g_isDebug) { // m_Stat.isBlowBack = enable; //} //if (!m_BaseStat.isConnected)return; //S7Command* pcommand = new S7Command(S7_COMMAND_WRITE, 1); //TS7DataItem* items = pcommand->getDataItems(); //items[0].Area = S7AreaDB; //items[0].DBNumber = 1; //items[0].Start = 113 * 8 + 7; //items[0].WordLen = S7WLBit; //items[0].Amount = 1; //bool* tempv = new bool[1]; //tempv[0] = enable; //items[0].pdata = tempv; //pcommand->m_Ref = this; //pcommand->m_Fun = &HBDPurifierClient::ProcWriteValue; //EnterCriticalSection(&m_RtcCS); //m_RTCommands.push(pcommand); //LeaveCriticalSection(&m_RtcCS); } void HBDPurifierClient::SetDedusting(bool enable) { DataHandle::Instance()->SetPushMsg(PURIFIERPARAMW, "SetDedusting", to_string(enable), iBOOL); //if (g_isDebug) { // m_Stat.isDedusting = enable; // m_Stat.cycleEnter = enable ? HBDPurifierStat::OpenPosition : HBDPurifierStat::ClosePosition; // m_Stat.cycleExit = enable ? HBDPurifierStat::OpenPosition : HBDPurifierStat::ClosePosition; //} //if (!m_BaseStat.isConnected)return; //S7Command* pcommand = new S7Command(S7_COMMAND_WRITE, 1); //TS7DataItem* items = pcommand->getDataItems(); //items[0].Area = S7AreaDB; //items[0].DBNumber = 1; //items[0].Start = 115 * 8 + 7; //items[0].WordLen = S7WLBit; //items[0].Amount = 1; //bool* tempv = new bool[1]; //tempv[0] = enable; //items[0].pdata = tempv; //pcommand->m_Ref = this; //pcommand->m_Fun = &HBDPurifierClient::ProcWriteValue; //EnterCriticalSection(&m_RtcCS); //m_RTCommands.push(pcommand); //LeaveCriticalSection(&m_RtcCS); } void HBDPurifierClient::ResetSpinFilterUseTime(bool enable) { DataHandle::Instance()->SetPushMsg(PURIFIERPARAMW, "ResetSpinFilterUseTime", to_string(enable), iBOOL); //if (!m_BaseStat.isConnected)return; //S7Command* pcommand = new S7Command(S7_COMMAND_WRITE, 1); //TS7DataItem* items = pcommand->getDataItems(); //items[0].Area = S7AreaDB; //items[0].DBNumber = 1; //items[0].Start = 114 * 8 + 7; //items[0].WordLen = S7WLBit; //items[0].Amount = 1; //bool* tempv = new bool[1]; //tempv[0] = enable; //items[0].pdata = tempv; //pcommand->m_Ref = this; //pcommand->m_Fun = &HBDPurifierClient::ProcWriteValue; //EnterCriticalSection(&m_RtcCS); //m_RTCommands.push(pcommand); //LeaveCriticalSection(&m_RtcCS); } void HBDPurifierClient::GetStat(HBDPurifierStat& stat) { EnterCriticalSection(&m_ValueCS); memcpy_s(&stat, sizeof(HBDPurifierStat), &m_Stat, sizeof(HBDPurifierStat)); memcpy_s(&stat.baseStat, sizeof(BaseStat), &m_BaseStat, sizeof(BaseStat)); LeaveCriticalSection(&m_ValueCS); }