优化消息代码
This commit is contained in:
@@ -3,7 +3,24 @@
|
||||
#include "driver.h"
|
||||
#include "fsm/PowerManagerFsm.hpp"
|
||||
|
||||
UpperCommManager::UpperCommManager(PowerManger* pm) : m_pm(pm) {};
|
||||
UpperCommManager::UpperCommManager(PowerManger* pm) : m_pm(pm) {
|
||||
// 初始化消息结构体
|
||||
// uPower_equInsStateMsg m_equInsStateMsg;
|
||||
// uDevice_secdistStateMsg m_secdistStateMsg;
|
||||
// uPower_equStateMsg m_equStateMsg;
|
||||
// uPower_disSysStateMsg m_disSysStateMsg;
|
||||
// uPower_currentStateMsg m_currentStateMsg;
|
||||
// uPower_pmStateMsg m_pmStateMsg;
|
||||
// uPower_fcsStateMsg m_fcsStateMsg;
|
||||
// uPower_liBatStateMsg m_liBatStateMsg;
|
||||
|
||||
// //上位机订阅消息
|
||||
// uDevice_depthMsg m_depthMsg;
|
||||
// uExternComm_setOpConditionMsg m_setOpConditionMsg;
|
||||
m_secdistStateMsg = uDevice_secdistStateMsg();
|
||||
m_setOpConditionMsg = uExternComm_setOpConditionMsg();
|
||||
|
||||
};
|
||||
|
||||
bool UpperCommManager::processUpperMsg(const string& key, const string& strJson) {
|
||||
if(key == DB_TO_PM_MSCMD) {
|
||||
@@ -39,8 +56,13 @@ bool UpperCommManager::processUpperMsg(const string& key, const string& strJson)
|
||||
//m_pm->m_subDisSysState = m_pm->m_deviceState;
|
||||
return true;
|
||||
}
|
||||
else if(key == DB_TO_PM_DEEPTH) {
|
||||
m_pm->m_depth = getDeepth(key, strJson);
|
||||
// else if(key == DB_TO_PM_DEEPTH) {
|
||||
// m_pm->m_depth = getDeepth(key, strJson);
|
||||
// return true;
|
||||
// }
|
||||
else if(key == m_depthMsg.key)
|
||||
{
|
||||
m_pm->m_depth = m_depthMsg.getDepth(key, strJson);
|
||||
return true;
|
||||
}
|
||||
else if(key == DB_TO_PM_MISSION) {
|
||||
@@ -56,11 +78,15 @@ bool UpperCommManager::processUpperMsg(const string& key, const string& strJson)
|
||||
MasterCommandEvent event;
|
||||
PowerManagerFsm::dispatch(event);
|
||||
return true;
|
||||
} else if(key == DB_TO_PM_SETOPMODE) {
|
||||
m_pm->m_msCmd.modCMD = getSetOpMode(key, strJson);
|
||||
// } else if(key == DB_TO_PM_SETOPMODE) {
|
||||
// m_pm->m_msCmd.modCMD = getSetOpMode(key, strJson);
|
||||
// MasterCommandEvent event;
|
||||
// PowerManagerFsm::dispatch(event);
|
||||
// return true;
|
||||
} else if(key == m_setOpConditionMsg.key) {
|
||||
m_pm->m_msCmd.workCMD = m_setOpConditionMsg.getSetOpCondition(key, strJson);
|
||||
MasterCommandEvent event;
|
||||
PowerManagerFsm::dispatch(event);
|
||||
return true;
|
||||
} else if(key == DB_TO_PM_SETPMSYS) {
|
||||
m_pm->m_msCmd.powerCMD = getSetPMSys(key, strJson);
|
||||
MasterCommandEvent event;
|
||||
@@ -130,37 +156,37 @@ const DriverTable UpperCommManager::getSubDisState(const std::string& key, const
|
||||
}
|
||||
}
|
||||
|
||||
const int UpperCommManager::getDeepth(const std::string& key, const std::string& msg){
|
||||
int deepth;
|
||||
Json::Value root;
|
||||
Json::CharReaderBuilder builder;
|
||||
JSONCPP_STRING errs;
|
||||
// const int UpperCommManager::getDeepth(const std::string& key, const std::string& msg){
|
||||
// int deepth;
|
||||
// Json::Value root;
|
||||
// Json::CharReaderBuilder builder;
|
||||
// JSONCPP_STRING errs;
|
||||
|
||||
// 解析JSON字符串
|
||||
std::istringstream stream(msg);
|
||||
if (!Json::parseFromStream(builder, stream, &root, &errs)) {
|
||||
std::cerr << "JSON解析失败: " << errs << std::endl;
|
||||
LOG_F(WARNING, "JSON解析失败: %s", errs.c_str());
|
||||
return -1;
|
||||
}
|
||||
// // 解析JSON字符串
|
||||
// std::istringstream stream(msg);
|
||||
// if (!Json::parseFromStream(builder, stream, &root, &errs)) {
|
||||
// std::cerr << "JSON解析失败: " << errs << std::endl;
|
||||
// LOG_F(WARNING, "JSON解析失败: %s", errs.c_str());
|
||||
// return -1;
|
||||
// }
|
||||
|
||||
// 检查并读取深度数组
|
||||
if (root.isMember("value_array_int32") && root["value_array_int32"].isArray()) {
|
||||
const Json::Value& array = root["value_array_int32"];
|
||||
if (array.size() >= 3) {
|
||||
// 计算三个深度值的平均值
|
||||
deepth = (array[0].asInt() + array[1].asInt() + array[2].asInt()) / 3;
|
||||
} else {
|
||||
LOG_F(WARNING, "深度数组元素不足3个");
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
LOG_F(WARNING, "缺少或类型不匹配: value_array_int32");
|
||||
return -1;
|
||||
}
|
||||
// // 检查并读取深度数组
|
||||
// if (root.isMember("value_array_int32") && root["value_array_int32"].isArray()) {
|
||||
// const Json::Value& array = root["value_array_int32"];
|
||||
// if (array.size() >= 3) {
|
||||
// // 计算三个深度值的平均值
|
||||
// deepth = (array[0].asInt() + array[1].asInt() + array[2].asInt()) / 3;
|
||||
// } else {
|
||||
// LOG_F(WARNING, "深度数组元素不足3个");
|
||||
// return -1;
|
||||
// }
|
||||
// } else {
|
||||
// LOG_F(WARNING, "缺少或类型不匹配: value_array_int32");
|
||||
// return -1;
|
||||
// }
|
||||
|
||||
return deepth;
|
||||
}
|
||||
// return deepth;
|
||||
// }
|
||||
|
||||
MissionState UpperCommManager::getMission(const std::string& key, const std::string& msg) {
|
||||
MissionState mission;
|
||||
|
||||
Reference in New Issue
Block a user