#include "MotorConfig.h" #include #include using namespace std; MotorConfig::MotorConfig() { } MotorConfig::~MotorConfig() { } json MotorConfig::SetParams(MotorSpeedParamEx& param, json js) { auto params = GetMotorSpeedParams(js.dump()); for (int i = 0; i < params.size(); i++) { if (params[i].dpi == param.dpi && params[i].colormode == param.colormode && params[i].speed == param.speed) { params[i] = param; break; } } json j = json::array(); for (int i = 0; i < params.size(); i++) { json t_j; to_json(params[i], t_j); j.push_back(t_j); } return j; } MotorSpeedParamEx MotorConfig::GetMotorSpeedParam(int dpi, int iscolor, int speedmod, std::string js) { auto params = GetMotorSpeedParams(js); for (int i = 0; i < params.size(); i++) { if (params[i].dpi == dpi && params[i].colormode == iscolor && params[i].speed == speedmod) { return params[i]; } } return { 0 }; } std::vector MotorConfig::GetMotorSpeedParams(const std::string& json_str) { std::vector ret; if (json_str.length()) { json j = json::parse(json_str); for (json::iterator it = j.begin(); it != j.end(); ++it) { auto tmv = it.value(); MotorSpeedParamEx param; from_json(tmv, param); ret.push_back(param); } } return ret; } void MotorConfig::to_json(MotorSpeedParamEx& param, json& j) { j = json{ {"A", param.mt_param.a}, {"FINALDELAY", param.mt_param.finalDelay}, {"FINALPERIOD", param.mt_param.finalPeriod}, {"FMIN", param.mt_param.Fmin}, {"OFFSET", param.mt_param.offset}, {"STEPNUM", param.mt_param.stepnum}, {"DPI", param.dpi}, {"COLORMODE", param.colormode}, {"ACCELERATIONTIME",param.mt_param.acceleration_time}, {"SPEED", param.speed}, {"SP",param.sp}}; } void MotorConfig::from_json(json& j, MotorSpeedParamEx& param) { j.at("A").get_to(param.mt_param.a); j.at("FINALDELAY").get_to(param.mt_param.finalDelay); j.at("FINALPERIOD").get_to(param.mt_param.finalPeriod); j.at("FMIN").get_to(param.mt_param.Fmin); j.at("OFFSET").get_to(param.mt_param.offset); j.at("STEPNUM").get_to(param.mt_param.stepnum); j.at("DPI").get_to(param.dpi); j.at("COLORMODE").get_to(param.colormode); j.at("ACCELERATIONTIME").get_to(param.mt_param.acceleration_time); j.at("SPEED").get_to(param.speed); j.at("SP").get_to(param.sp); }