已完成上位机通信代码结构优化
This commit is contained in:
@@ -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;
|
||||
// }
|
||||
// }
|
||||
Reference in New Issue
Block a user