47 lines
1.2 KiB
C++
47 lines
1.2 KiB
C++
#ifndef UEXTERCOMM_SETOPMODE_CMD_H
|
|
#define UEXTERCOMM_SETOPMODE_CMD_H
|
|
#include <string>
|
|
#include "../logc/loguru.hpp"
|
|
|
|
//外部通信消息
|
|
#define DB_TO_PM_SETOPMODE "uExternComm_setOpMode_cmd"
|
|
|
|
class uExternComm_setOpModeMsg
|
|
{
|
|
private:
|
|
/* data */
|
|
public:
|
|
std::string key = "uExternComm_setOpMode_cmd";
|
|
uExternComm_setOpModeMsg(/* args */){};
|
|
~uExternComm_setOpModeMsg(){};
|
|
|
|
int getSetOpMode(const std::string& msgkey, const std::string& msg){
|
|
if (msgkey!= key)
|
|
{
|
|
LOG_F(WARNING, "消息类型错误 %s", msgkey.c_str());
|
|
return 0;
|
|
}
|
|
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;
|
|
}
|
|
};
|
|
};
|
|
|
|
|
|
#endif
|