已完成上位机通信代码结构优化

This commit is contained in:
zjk
2025-05-14 21:01:57 +08:00
parent 18f00d70d4
commit b7a624334e
24 changed files with 647 additions and 309 deletions
+283 -265
View File
@@ -4,34 +4,36 @@
#include "fsm/PowerManagerFsm.hpp"
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();
m_depthMsg = uDevice_depthMsg();
m_taskStartMsg = uPlan_taskStartMsg();
m_equInsStateMsg = uPower_equInsStateMsg();
m_equStateMsg = uPower_equStateMsg();
m_setPMSysMsg = uExternComm_setPowerSystemMsg();
};
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;
// 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);
MasterCommandEvent event;
PowerManagerFsm::dispatch(event);
return true;
}
else if(key == DB_TO_PM_EQUIPMENTCMD) {
m_pm->m_MSDriverCmd = getEquipmentCmd(key, strJson);
// 设备状态处理
else if(key == m_equStateMsg.key_cmd)
{
m_pm->m_MSDriverCmd = m_equStateMsg.getEquipmentCmd(key, strJson);
vector<DriverCommand> devCmdExt = m_pm->m_driver.loadDriverIdFromJson(strJson);
if (devCmdExt.empty()) {
LOG_F(WARNING, "控制指令");
@@ -42,72 +44,86 @@ bool UpperCommManager::processUpperMsg(const string& key, const string& strJson)
PowerManagerFsm::dispatch(event);
}
}
return true;
}
// else if(key == DB_TO_PM_SUBDISSTATE) {
// m_pm->m_subDisSysState = getSubDisState(key, 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) {
else if(key == m_secdistStateMsg.key_fb)
{
m_secdistStateMsg.parseMsg(strJson, m_pm->m_subDisSysState);
//debug 接受到次级配电状态,自动更新到设备状态
//TODO:自动更新到设备状态
//m_pm->m_subDisSysState = m_pm->m_deviceState;
return true;
}
// 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) {
m_pm->m_missionState = getMission(key, strJson);
else if(key == m_taskStartMsg.key)
{
m_pm->m_missionState = m_taskStartMsg.getMission(key, strJson);
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);
}
else if(key == m_setOpModeMsg.key)
{
m_pm->m_msCmd.modCMD = m_setOpModeMsg.getSetOpMode(key, strJson);
MasterCommandEvent event;
PowerManagerFsm::dispatch(event);
return true;
// } 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) {
} else if(key == m_setOpConditionMsg.key)
{
m_pm->m_msCmd.workCMD = m_setOpConditionMsg.getSetOpCondition(key, strJson);
MasterCommandEvent event;
PowerManagerFsm::dispatch(event);
} else if(key == DB_TO_PM_SETPMSYS) {
m_pm->m_msCmd.powerCMD = getSetPMSys(key, strJson);
}
else if(key == m_setPMSysMsg.key)
{
m_pm->m_msCmd.powerCMD = m_setPMSysMsg.getSetPMSys(key, strJson);
MasterCommandEvent event;
PowerManagerFsm::dispatch(event);
return true;
} else if(key == DB_TO_PM_SETDEVSWITCH) {
}
else if(key == m_setDevSwitchMsg.key)
{
DeviceSwitchCmd cmd;
cmd = getSetDevSwitch(key, strJson);
cmd = m_setDevSwitchMsg.getSetDevSwitch(key, strJson);
if (cmd.id < 0) {
LOG_F(WARNING, "parse device switch error:%s", strJson.c_str());
}
else {
else
{
DevCmdExt devCmdExt;
devCmdExt.id = cmd.id;
devCmdExt.cmd = cmd.cmd;
PowerManagerFsm::dispatch(devCmdExt);
LOG_F(INFO, "set dev switch success");
return true;
}
LOG_F(INFO, "set dev switch success");
return true;
} else if(key == DB_TO_PM_TASKSTOP) {
bool stop = getTaskStop(key, strJson);
}
else if(key == m_taskStopMsg.key)
{
bool stop = m_taskStopMsg.getTaskStop(key, strJson);
if (stop) {
LOG_F(INFO, "task stop success");
return true;
@@ -116,45 +132,45 @@ bool UpperCommManager::processUpperMsg(const string& key, const string& strJson)
LOG_F(WARNING, "task stop error:%s", strJson.c_str());
return false;
}
}
};
LOG_F(WARNING, "Unknown key: %s", key.c_str());
return false;
}
const MSControlCmd UpperCommManager::getMasterControlCmd(const std::string& key, const std::string& msg)
{
MSControlCmd cmd;
if (parseControlCmdFromJson(cmd, msg)) {
// 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;
}
}
// 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::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 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;
@@ -188,160 +204,160 @@ const DriverTable UpperCommManager::getSubDisState(const std::string& key, const
// return deepth;
// }
MissionState UpperCommManager::getMission(const std::string& key, const std::string& msg) {
MissionState mission;
Json::Value root;
Json::CharReaderBuilder builder;
JSONCPP_STRING errs;
// 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;
}
// // 解析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());
}
// // 提取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);
}
// // 提取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);
}
// // 提取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;
}
// return mission;
// }
int UpperCommManager::getSetOpCondition(const std::string& key, const std::string& msg)
{
Json::Value root;
Json::CharReaderBuilder builder;
JSONCPP_STRING errs;
// 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;
}
// // 解析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;
}
}
// // 检查并读取操作条件
// 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;
// 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;
}
// // 解析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;
}
}
// // 检查并读取操作模式
// 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;
// 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;
}
// // 解析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;
}
}
// // 检查并读取电源系统设置
// 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;
}
// 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;
}
// // 检查并读取设备开关状态
// 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;
// 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;
}
// // 解析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;
}
// // 检查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);
}
// const std::string UpperCommManager::getSubDisCmd(DriverTable& driver)
// {
// return m_pm->m_driver.saveDriverTableToJson(&driver);
// }
void UpperCommManager::processPeriodicTasks() {
buildSystemReport();
@@ -352,54 +368,56 @@ void UpperCommManager::processPeriodicTasks() {
//发送次级配电指令 修改后的代码
// strJson = getSubDisCmd(m_pm->m_subDisSysCmd);
strJson = m_secdistStateMsg.buildMsg(m_pm->m_subDisSysCmd);
cout << (int)m_pm->m_subDisSysCmd.depth1 << endl;
m_pm->sendNotification(m_secdistStateMsg.key_cmd, strJson);
//发送仪表电状态
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;
// 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; // 缺少或类型不匹配
}
// // 解析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("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; // 成功
}
// 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;
@@ -417,16 +435,16 @@ void UpperCommManager::buildSystemReport() {
m_pm->sendNotification(m_disSysStateMsg.key, m_disSysStateMsg.buildMsg(m_pm->m_currentDisBreakerState));
m_pm->sendNotification(m_currentStateMsg.key, m_currentStateMsg.buildMsg(m_pm->m_pmCurrentState));
}
bool UpperCommManager::saveStringToJsonFile(const string &strJson, const string &filePath)
{
std::ofstream file(filePath, std::ios::trunc);
if (file.is_open()) {
file << strJson;
file.close();
// std::cout << "字符串已成功保存到文件中。" << std::endl;
return true;
} else {
std::cerr << "无法打开文件!" << std::endl;
return false;
}
}
// bool UpperCommManager::saveStringToJsonFile(const string &strJson, const string &filePath)
// {
// std::ofstream file(filePath, std::ios::trunc);
// if (file.is_open()) {
// file << strJson;
// file.close();
// // std::cout << "字符串已成功保存到文件中。" << std::endl;
// return true;
// } else {
// std::cerr << "无法打开文件!" << std::endl;
// return false;
// }
// }