完善待机工况及相关逻辑
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user