进行了水面端测试

This commit is contained in:
zjk
2025-04-28 19:41:37 +08:00
parent a45ba75c37
commit 97a86acae4
24 changed files with 2734 additions and 714 deletions
+43 -10
View File
@@ -27,7 +27,11 @@ bool UpperCommManager::processUpperMsg(const string& key, const string& strJson)
}
else if(key == DB_TO_PM_MISSION) {
m_pm->m_missionState = getMission(key, strJson);
//TODO:转移到对应工况下
TaskStartEvent event;
event.type = m_pm->m_missionState.type;
event.enableBowRudder = m_pm->m_missionState.enableBowRudder;
event.enableBuoyancyAdjustment = m_pm->m_missionState.enableBuoyancyAdjustment;
PowerManagerFsm::dispatch(event);
return true;
} else if(key == DB_TO_PM_SETOPCONDITION) {
m_pm->m_msCmd.workCMD = getSetOpCondition(key, strJson);
@@ -58,6 +62,16 @@ bool UpperCommManager::processUpperMsg(const string& key, const string& strJson)
}
LOG_F(INFO, "set dev switch success");
return true;
} else if(key == DB_TO_PM_TASKSTOP) {
bool stop = getTaskStop(key, strJson);
if (stop) {
LOG_F(INFO, "task stop success");
return true;
}
else {
LOG_F(WARNING, "task stop error:%s", strJson.c_str());
return false;
}
}
LOG_F(WARNING, "Unknown key: %s", key.c_str());
return false;
@@ -178,8 +192,8 @@ int UpperCommManager::getSetOpCondition(const std::string& key, const std::strin
// 检查并读取操作条件
if (root.isMember("state_uint8") && root["state_uint8"].isUInt()) {
return root["opCondition"].asUInt();
LOG_F(INFO, "上位机指令:opCondition: %d", root["opCondition"].asUInt());
return root["state_uint8"].asUInt();
LOG_F(INFO, "上位机指令:opCondition: %d", root["state_uint8"].asUInt());
} else {
LOG_F(WARNING, "缺少或类型不匹配: opCondition");
return -1;
@@ -256,9 +270,28 @@ DeviceSwitchCmd UpperCommManager::getSetDevSwitch(const std::string& key, const
LOG_F(WARNING, "缺少或类型不匹配: state_bool");
}
return cmd;
}
const std::string UpperCommManager::getCurrentEquState(DriverTable& driver)
}
bool UpperCommManager::getTaskStop(const std::string& key, const std::string& msg) {
Json::Value root;
Json::CharReaderBuilder builder;
JSONCPP_STRING errs;
// 解析JSON字符串
std::istringstream stream(msg);
if (!Json::parseFromStream(builder, stream, &root, &errs)) {
LOG_F(WARNING, "JSON解析失败: %s", errs.c_str());
return false;
}
// 检查op_int32字段
if (root.isMember("op_int32") && root["op_int32"].isInt()) {
return root["op_int32"].asInt() == 1;
}
return false;
}
const std::string UpperCommManager::getCurrentEquState(DriverTable& driver)
{
return m_pm->m_driver.saveDriverTableToJson(&driver);
}
@@ -337,8 +370,8 @@ void UpperCommManager::buildSystemReport() {
suffix = getTypeName(typeid(m_pm->powerState).name());
pms[VAR_TO_STR(powerState)+suffix] = m_pm->powerState;
suffix = getTypeName(typeid(m_pm->falutLevel).name());
pms[VAR_TO_STR(falutLevel)+suffix] = m_pm->falutLevel;
suffix = getTypeName(typeid(m_pm->faultLevel).name());
pms[VAR_TO_STR(faultLevel)+suffix] = m_pm->faultLevel;
Json::Value faultCode_array;
for(auto val : m_pm->faultCode)
@@ -348,10 +381,10 @@ void UpperCommManager::buildSystemReport() {
pms[VAR_TO_STR(faultCode_array)] = faultCode_array;
suffix = getTypeName(typeid(m_pm->soc).name());
pms[VAR_TO_STR(soc)+suffix] = m_pm->soc;
pms["soc_uint16"] = m_pm->soc;
suffix = getTypeName(typeid(m_pm->sustainableTime).name());
pms[VAR_TO_STR(sustainableTime)+suffix] = m_pm->sustainableTime;
pms["sustainableTime_int64"] = m_pm->sustainableTime;
//2.构建燃料电池状态报告
suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.fcuState).name());