优化消息代码

This commit is contained in:
zjk
2025-05-14 15:12:26 +08:00
parent 476be20025
commit 18f00d70d4
27 changed files with 245 additions and 88 deletions
+60 -34
View File
@@ -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;