speedcontroller/ui/MotorConfig.cpp

101 lines
2.6 KiB
C++

#include "MotorConfig.h"
#include <sys/stat.h>
#include <fstream>
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<MotorSpeedParamEx> MotorConfig::GetMotorSpeedParams(const std::string& json_str)
{
std::vector<MotorSpeedParamEx> 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);
}