#include "DataHandle.h" void DataHandle::DataCallBackProc(void* pthis, const ReadData& msg) { DataHandle* p = (DataHandle*)pthis; p->DataCallBackHandle(msg); } 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(); SetPushMsg(VERSIONREQ); //获取版本信息 } void DataHandle::DataCallBackHandle(const ReadData& msg) { std::istringstream issKey(msg.nameKey), issVal(msg.strValue); string key, value; switch (msg.dataType) { case 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 iINT: param.sysParamI->SetValue(atoi(val.c_str())); break; case iFLOAT: param.sysParamB->SetValue(atof(val.c_str())); break; default: break; } } SysParam::UnLck(); break; case VERSIONRSP: m_version = msg.strValue; break; default:break; } }