完善待机工况及相关逻辑

This commit is contained in:
zjk
2025-04-09 23:28:05 +08:00
parent 785a47ff99
commit b653f17b03
14 changed files with 241 additions and 196 deletions
+36
View File
@@ -17,6 +17,10 @@ bool UpperCommManager::processUpperMsg(const string& key, const string& strJson)
m_pm->m_subDisSysState = getSubDisState(key, strJson);
return true;
}
else if(key == DB_TO_PM_DEEPTH) {
m_pm->m_depth = getDeepth(key, strJson);
return true;
}
std::cout << "Unknown key: " << key << std::endl;
return false;
}
@@ -25,6 +29,7 @@ const MSControlCmd UpperCommManager::getMasterControlCmd(const std::string& key,
{
MSControlCmd cmd;
if (parseControlCmdFromJson(cmd, msg)) {
return cmd;
}
else
@@ -53,6 +58,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;
// 解析JSON字符串
std::istringstream stream(msg);
if (!Json::parseFromStream(builder, stream, &root, &errs)) {
std::cerr << "JSON解析失败: " << errs << std::endl;
return -1;
}
// 检查并读取深度数组
if (root.isMember("value_array_uint16") && root["value_array_uint16"].isArray()) {
const Json::Value& array = root["value_array_uint16"];
if (array.size() >= 3) {
// 计算三个深度值的平均值
deepth = (array[0].asInt() + array[1].asInt() + array[2].asInt()) / 3;
} else {
std::cerr << "深度数组元素不足3个" << std::endl;
return -1;
}
} else {
std::cerr << "JSON格式错误" << std::endl;
return -1;
}
return deepth;
}
const std::string UpperCommManager::getCurrentEquState(DriverTable& driver)
{
return m_pm->m_driver.saveDriverTableToJson(&driver);