屏蔽了squit3,实现了外部通讯交互
This commit is contained in:
@@ -27,9 +27,39 @@ bool UpperCommManager::processUpperMsg(const string& key, const string& strJson)
|
||||
}
|
||||
else if(key == DB_TO_PM_MISSION) {
|
||||
m_pm->m_missionState = getMission(key, strJson);
|
||||
//TODO:转移到对应工况下
|
||||
return true;
|
||||
} else if(key == DB_TO_PM_SETOPCONDITION) {
|
||||
m_pm->m_msCmd.workCMD = getSetOpCondition(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 == DB_TO_PM_SETPMSYS) {
|
||||
m_pm->m_msCmd.powerCMD = getSetPMSys(key, strJson);
|
||||
MasterCommandEvent event;
|
||||
PowerManagerFsm::dispatch(event);
|
||||
return true;
|
||||
} else if(key == DB_TO_PM_SETDEVSWITCH) {
|
||||
DeviceSwitchCmd cmd;
|
||||
cmd = getSetDevSwitch(key, strJson);
|
||||
if (cmd.id < 0) {
|
||||
LOG_F(WARNING, "parse device switch error:%s", strJson.c_str());
|
||||
}
|
||||
else {
|
||||
DevCmdExt devCmdExt;
|
||||
devCmdExt.id = cmd.id;
|
||||
devCmdExt.cmd = cmd.cmd;
|
||||
PowerManagerFsm::dispatch(devCmdExt);
|
||||
}
|
||||
LOG_F(INFO, "set dev switch success");
|
||||
return true;
|
||||
}
|
||||
std::cout << "Unknown key: " << key << std::endl;
|
||||
LOG_F(WARNING, "Unknown key: %s", key.c_str());
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -133,6 +163,101 @@ MissionState UpperCommManager::getMission(const std::string& key, const std::str
|
||||
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["opCondition"].asUInt();
|
||||
LOG_F(INFO, "上位机指令:opCondition: %d", root["opCondition"].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;
|
||||
}
|
||||
|
||||
const std::string UpperCommManager::getCurrentEquState(DriverTable& driver)
|
||||
{
|
||||
return m_pm->m_driver.saveDriverTableToJson(&driver);
|
||||
|
||||
Reference in New Issue
Block a user