增加了数据库功能,采用直接编译源码的方式,不使用动态库链接

This commit is contained in:
zjk
2025-05-14 23:27:35 +08:00
parent b7a624334e
commit 47079f79df
14 changed files with 310515 additions and 328 deletions
-288
View File
@@ -15,14 +15,6 @@ UpperCommManager::UpperCommManager(PowerManger* pm) : m_pm(pm) {
};
bool UpperCommManager::processUpperMsg(const string& key, const string& strJson) {
// if(key == DB_TO_PM_MSCMD)
// {
// m_pm->m_msCmd = getMasterControlCmd(key, strJson);
// cout << "m_msCmd: " << endl;
// MasterCommandEvent event;
// PowerManagerFsm::dispatch(event);
// return true;
// }
if (key == m_sysStateMsg.key)
{
m_pm->m_msCmd = m_sysStateMsg.getMasterControlCmd(key, strJson);
@@ -45,21 +37,6 @@ bool UpperCommManager::processUpperMsg(const string& key, const string& strJson)
}
}
}
// else if(key == DB_TO_PM_EQUIPMENTCMD)
// {
// m_pm->m_MSDriverCmd = getEquipmentCmd(key, strJson);
// vector<DriverCommand> devCmdExt = m_pm->m_driver.loadDriverIdFromJson(strJson);
// if (devCmdExt.empty()) {
// LOG_F(WARNING, "控制指令");
// }
// else {
// for (auto& cmd : devCmdExt) {
// DevCmdExt event(cmd.id, cmd.cmd);
// PowerManagerFsm::dispatch(event);
// }
// }
// return true;
// }
// 次级配电状态处理
else if(key == m_secdistStateMsg.key_fb)
{
@@ -137,228 +114,6 @@ bool UpperCommManager::processUpperMsg(const string& key, const string& strJson)
return false;
}
// const MSControlCmd UpperCommManager::getMasterControlCmd(const std::string& key, const std::string& msg)
// {
// MSControlCmd cmd;
// if (parseControlCmdFromJson(cmd, msg)) {
// return cmd;
// }
// else
// {
// cout << MOOS::ConsoleColours::Red << "parse control cmd error:" << msg
// << MOOS::ConsoleColours::reset << endl;
// }
// }
// const DriverTable UpperCommManager::getEquipmentCmd(const std::string& key, const std::string& msg)
// {
// DriverTable cmd;
// if (m_pm->m_driver.loadDriverTableFromJson(msg, cmd) < 0) {
// cout << MOOS::ConsoleColours::Red << "get equipment cmd error:" << msg
// << MOOS::ConsoleColours::reset << endl;
// LOG_F(WARNING, "get equipment cmd error:%s", msg.c_str());
// }
// return cmd;
// }
// const DriverTable UpperCommManager::getSubDisState(const std::string& key, const std::string& msg)
// {
// DriverTable state;
// if (m_pm->m_driver.loadDriverTableFromJson(msg, state) < 0) {
// cout << MOOS::ConsoleColours::Red << "get sub dis state error:" << msg
// << MOOS::ConsoleColours::reset << endl;
// LOG_F(WARNING, "get sub dis state error:%s", msg.c_str());
// }
// }
// 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;
// }
// // 检查并读取深度数组
// 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;
// }
// MissionState UpperCommManager::getMission(const std::string& key, const std::string& msg) {
// MissionState mission;
// 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 mission;
// }
// // 提取taskType_str
// if (root.isMember("taskType_str") && root["taskType_str"].isString()) {
// mission.type = TaskType::fromString(root["taskType_str"].asString());
// LOG_F(INFO, "taskType: %d", mission.type, root["taskType_str"].asString());
// }
// // 提取balanceEnabled_bool
// if (root.isMember("balanceEnabled_bool") && root["balanceEnabled_bool"].isBool()) {
// mission.enableBuoyancyAdjustment = root["balanceEnabled_bool"].asBool();
// LOG_F(INFO, "balanceEnabled_bool: %d", mission.enableBuoyancyAdjustment);
// }
// // 提取bowRudderUnfold_bool
// if (root.isMember("bowRudderUnfold_bool") && root["bowRudderUnfold_bool"].isBool()) {
// mission.enableBowRudder = root["bowRudderUnfold_bool"].asBool();
// LOG_F(INFO, "bowRudderUnfold_bool: %d", mission.enableBowRudder);
// }
// return mission;
// }
// int UpperCommManager::getSetOpCondition(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 -1;
// }
// // 检查并读取操作条件
// if (root.isMember("state_uint8") && root["state_uint8"].isUInt()) {
// return root["state_uint8"].asUInt();
// LOG_F(INFO, "上位机指令:opCondition: %d", root["state_uint8"].asUInt());
// } else {
// LOG_F(WARNING, "缺少或类型不匹配: opCondition");
// return -1;
// }
// }
// int UpperCommManager::getSetOpMode(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 -1;
// }
// // 检查并读取操作模式
// if (root.isMember("state_uint8") && root["state_uint8"].isUInt()) {
// return root["state_uint8"].asUInt();
// } else {
// LOG_F(WARNING, "缺少或类型不匹配: opMode");
// return -1;
// }
// }
// int UpperCommManager::getSetPMSys(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)) {
// std::cerr << "JSON解析失败: " << errs << std::endl;
// return -1;
// }
// // 检查并读取电源系统设置
// if (root.isMember("powerCmd_uint8") && root["powerCmd_uint8"].isUInt()) {
// return root["powerCmd_uint8"].asUInt();
// } else {
// LOG_F(WARNING, "缺少或类型不匹配: powerCmd_uint8");
// return -1;
// }
// }
// DeviceSwitchCmd UpperCommManager::getSetDevSwitch(const std::string& key, const std::string& msg)
// {
// Json::Value root;
// Json::CharReaderBuilder builder;
// JSONCPP_STRING errs;
// DeviceSwitchCmd cmd;
// // 解析JSON字符串
// std::istringstream stream(msg);
// if (!Json::parseFromStream(builder, stream, &root, &errs)) {
// LOG_F(WARNING, "JSON解析失败: %s", errs.c_str());
// cmd.id = -1;
// }
// // 检查并读取设备开关状态
// if (root.isMember("id_uint8") && root["id_uint8"].isUInt()) {
// cmd.id = root["id_uint8"].asUInt();
// } else {
// cmd.id = -1;
// LOG_F(WARNING, "缺少或类型不匹配: id_uint8");
// }
// if (root.isMember("cmd_uint8") && root["cmd_uint8"].isUInt()) {
// cmd.cmd = root["cmd_uint8"].asUInt();
// } else {
// LOG_F(WARNING, "缺少或类型不匹配: state_bool");
// }
// return cmd;
// }
// 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::getSubDisCmd(DriverTable& driver)
// {
// return m_pm->m_driver.saveDriverTableToJson(&driver);
// }
void UpperCommManager::processPeriodicTasks() {
buildSystemReport();
std::string strJson;
@@ -374,50 +129,7 @@ void UpperCommManager::processPeriodicTasks() {
//发送仪表电状态
m_pm->sendNotification(m_equInsStateMsg.key,m_equInsStateMsg.buildMsg(m_pm->m_subDisSysState));
}
// bool UpperCommManager::parseControlCmdFromJson(MSControlCmd &cmd, const std::string &strJson)
// {
// Json::CharReaderBuilder builder;
// Json::Value root;
// std::string errs;
// // 解析JSON字符串
// std::istringstream s(strJson);
// if (!Json::parseFromStream(builder, s, &root, &errs))
// {
// std::cerr << "JSON解析失败: " << errs << std::endl;
// return false; // 解析失败
// }
// if (root.isMember("powerCMD") && root["powerCMD"].isUInt())
// {
// cmd.powerCMD = root["powerCMD"].asUInt();
// }
// else
// {
// std::cerr << "缺少或类型不匹配: powerCMD" << std::endl;
// return false; // 缺少或类型不匹配
// }
// if (root.isMember("modCMD") && root["modCMD"].isUInt())
// {
// cmd.modCMD = root["modCMD"].asUInt();
// }
// else
// {
// std::cerr << "缺少或类型不匹配: modCMD" << std::endl;
// return false; // 缺少或类型不匹配
// }
// if (root.isMember("workCMD") && root["workCMD"].isUInt())
// {
// cmd.workCMD = root["workCMD"].asUInt();
// }
// else
// {
// std::cerr << "缺少或类型不匹配: workCMD" << std::endl;
// return false; // 缺少或类型不匹配
// }
// return true; // 成功
// }
void UpperCommManager::buildSystemReport() {
m_pmStateMsg.state.workCondition = m_pm->workCondition;
m_pmStateMsg.state.currentMod = m_pm->currentMod;