#include "DataHandle.h" DataHandle::DataHandle() : m_dataCallBack(nullptr) , m_streamClient(nullptr){ } DataHandle::~DataHandle() { DELP(m_streamClient); } void DataHandle::Init() { m_streamClient = new StreamClient(); m_streamClient->SetCallBackFunc(this,&DataHandle::DataCallBackProc); m_streamClient->Init(); } void DataHandle::DataCallBackProc(void* pthis, const ReadData& msg) { DataHandle* p = (DataHandle*)pthis; std::istringstream issKey(msg.nameKey),issVal(msg.strValue); string key, value; if (msg.dataType == TIMEDATA) { SysParam::Lck(); while (issKey >> key && issVal >> value) { size_t pos = value.find("_"); if (pos == string::npos || SysParam::m_sysParamMp.find(key) == SysParam::m_sysParamMp.end()) continue; DATATYPE valType = (DATATYPE)atoi(value.substr(pos + 1).c_str()); //值类型 string val = value.substr(0, pos); //值 DValue& param = SysParam::m_sysParamMp.at(key); switch (valType) { case iBOOL: param.sysParamB->SetValue((bool)atoi(val.c_str())); break; case iSHORT: param.sysParamW->SetValue((short)atoi(val.c_str())); break; //case iUSHORT: // param.sysParamB->SetValue((bool)atoi(val.c_str())); // break; case iINT: param.sysParamI->SetValue(atoi(val.c_str())); break; //case iUINT: // param.sysParamB->SetValue((bool)atoi(val.c_str())); // break; case iFLOAT: param.sysParamB->SetValue(atof(val.c_str())); break; default: break; } } SysParam::UnLck(); } }