#ifndef U_POWER_PMSTATE_FB_H #define U_POWER_PMSTATE_FB_H #include "../driver.h" #include "string" #include "json/json.h" #include #include "../systemData.h" class uPower_pmStateMsg { private: /* data */ public: uPower_pmStateMsg() { state.workCondition = 0; state.currentMod = 0; state.powerState = 0; state.faultLevel = 0; state.faultCode.clear(); state.soc = 0; state.sustainableTime = 0; state.m_faultNum = 0; state.m_leakage = 0; }; ~uPower_pmStateMsg() {}; std::string key = "uPower_pmState_fb"; struct uPower_pmState { unsigned char workCondition; unsigned char currentMod; unsigned char powerState; unsigned char faultLevel; vector faultCode; unsigned int soc; unsigned int sustainableTime; unsigned int m_faultNum; unsigned char m_leakage; } state; std::string buildMsg(const SystemData& data) { // 状态赋值 Json::Value pms; pms["workCondition_uint8"] = state.workCondition; pms["currentMod_uint8"] = state.currentMod; pms["powerState_uint8"] = state.powerState; // pms["faultLevel_uint8"] = state.faultLevel; pms["faultLevel_uint8"] = data.getFaultCodeLevel(); Json::Value faultCode_array = Json::Value(Json::arrayValue); //TODO:屏蔽所有故障 for(auto faultCode : data.getFaultCode()) { faultCode_array.append(faultCode); } pms["faultCode_array"] = faultCode_array; pms["soc_uint16"] = state.soc; pms["sustainableTime_int64"] = state.sustainableTime; pms["leakage_uint8"] = state.m_leakage; // 转化为json格式 Json::StreamWriterBuilder writerBuilder; writerBuilder.settings_["indentation"] = ""; return Json::writeString(writerBuilder, pms); } }; #endif