#include "TempCtrlClient.h" #include "Aibus.h" #include #include "../SystemInfo.h" TempCtrlClient::TempCtrlClient(void* pconfig):TcpClient(pconfig) { size_t ptrSize = sizeof(nullptr); //指针大小 void* startPtr = &m_Stat.m_startFlag + 1; size_t count = ((size_t)&m_Stat.m_endFlag - (size_t)startPtr) / ptrSize; InsertMp(startPtr, count); startPtr = &m_Stat.alarm.m_startFlag + 1; count = ((size_t)&m_Stat.alarm.m_endFlag - (size_t)startPtr) / ptrSize; InsertMp(startPtr, count); } TempCtrlClient::~TempCtrlClient() { Shutdown(); } //void TempCtrlClient::InitCommand() //{ // Command* pCommand = new Aibus(READ_FLOAT_POINT, /*m_Config->m_Addr*/-1, 0x0c, 0, true); //wxxtest // pCommand->m_Fun = &TempCtrlClient::ProcTempInfo; // pCommand->m_Ref = this; // pCommand->isNeedDel = false; // m_CycleCommands.push_back(pCommand); //} //void TempCtrlClient::SetTargeValue(float value) //{ // EnterCriticalSection(&m_RtcCS); // float targevalue = value*m_Stat.scale->GetValue(); // Command* pCommand = new Aibus(SET_TARGE_VALUE, 0x1, 0x0, (short)targevalue, false); // pCommand->m_Fun = &TempCtrlClient::ProcSetTemp; // pCommand->m_Ref = this; // m_RTCommands.push(pCommand); // LeaveCriticalSection(&m_RtcCS); //} //void TempCtrlClient::ProcTempInfo(void* pobject, Command* pcommand) //{ // if (pobject == NULL)return; // TempCtrlClient* pTc = (TempCtrlClient*)pobject; // unsigned char* rseq = pcommand->m_RespSeq; // short floatPoint = (short)(rseq[7] << 8) + rseq[6]; // if (floatPoint >= 128)floatPoint %= 128; // int scale = 1; // for (short i = 0; i < floatPoint; ++i) { // scale *= 10; // } // EnterCriticalSection(&pTc->m_ValueCS); // pTc->m_Stat.scale->SetValue( scale); // pTc->m_Stat.measuredValue->SetValue((float)((short)(rseq[1] << 8) + rseq[0]) / scale); // pTc->m_Stat.settingValue->SetValue((float)((short)(rseq[3] << 8) + rseq[2]) / scale); // pTc->m_Stat.outputValue->SetValue(rseq[4]); // bitset<8> bitStatus(rseq[5]); // pTc->m_Stat.alarm.isOverLimit->SetValue(bitStatus[0]); // pTc->m_Stat.alarm.isLowerLimit->SetValue(bitStatus[1]); // pTc->m_Stat.alarm.isActiveAlarm->SetValue(bitStatus[2]); // pTc->m_Stat.alarm.isInactiveAlarm->SetValue(bitStatus[3]); // pTc->m_Stat.alarm.isInputLimit->SetValue(bitStatus[4]); // pTc->m_Stat.alarm.al1->SetValue(bitStatus[5]); // pTc->m_Stat.alarm.al2->SetValue(bitStatus[6]); // EnterCriticalSection(&g_SystemInfo->m_InfoCs); // g_SystemInfo->m_PlatformTemp = pTc->m_Stat.measuredValue->GetValue(); // g_SystemInfo->m_PlatformTempSettingValue = pTc->m_Stat.settingValue->GetValue(); // LeaveCriticalSection(&g_SystemInfo->m_InfoCs); // LeaveCriticalSection(&pTc->m_ValueCS); // // //} //void TempCtrlClient::ProcSetTemp(void* pobject, Command* pcommand) //{ // if (pobject == NULL)return; // TempCtrlClient* pTc = (TempCtrlClient*)pobject; // unsigned char* rseq = pcommand->m_RespSeq; // float fvalue = 0; // EnterCriticalSection(&pTc->m_ValueCS); // int scale = (pTc->m_Stat.scale->GetValue() == 0 ? 1 : pTc->m_Stat.scale->GetValue()); // fvalue = (float)((short)(rseq[7] << 8) + rseq[6]) / scale; // // pTc->m_Stat.measuredValue->SetValue((float)((short)(rseq[1] << 8) + rseq[0]) / scale); // pTc->m_Stat.settingValue->SetValue((float)((short)(rseq[3] << 8) + rseq[2]) / scale); // pTc->m_Stat.outputValue->SetValue(rseq[4]); // bitset<8> bitStatus(rseq[5]); // pTc->m_Stat.alarm.isOverLimit->SetValue(bitStatus[0]); // pTc->m_Stat.alarm.isLowerLimit->SetValue(bitStatus[1]); // pTc->m_Stat.alarm.isActiveAlarm->SetValue(bitStatus[2]); // pTc->m_Stat.alarm.isInactiveAlarm->SetValue(bitStatus[3]); // pTc->m_Stat.alarm.isInputLimit->SetValue(bitStatus[4]); // pTc->m_Stat.alarm.al1->SetValue(bitStatus[5]); // pTc->m_Stat.alarm.al2->SetValue(bitStatus[6]); // // LeaveCriticalSection(&pTc->m_ValueCS); //} void TempCtrlClient::GetStat(TempStat& stat) { EnterCriticalSection(&m_ValueCS); stat.baseStat = m_BaseStat; stat.measuredValue = m_Stat.measuredValue->GetValue(); stat.outputValue = m_Stat.outputValue->GetValue(); stat.scale = m_Stat.scale->GetValue(); stat.settingValue = m_Stat.settingValue->GetValue(); stat.alarm.isOverLimit = m_Stat.alarm.isOverLimit->GetValue(); stat.alarm.isLowerLimit = m_Stat.alarm.isLowerLimit->GetValue(); stat.alarm.isActiveAlarm = m_Stat.alarm.isActiveAlarm->GetValue(); stat.alarm.isInactiveAlarm = m_Stat.alarm.isInactiveAlarm->GetValue(); stat.alarm.isInputLimit = m_Stat.alarm.isInputLimit->GetValue(); stat.alarm.al1 = m_Stat.alarm.al1->GetValue(); stat.alarm.al2 = m_Stat.alarm.al2->GetValue(); LeaveCriticalSection(&m_ValueCS); }