455 lines
12 KiB
C++
455 lines
12 KiB
C++
#include "Config.h"
|
|
|
|
|
|
Config::Config(QObject *parent) :
|
|
QObject(parent)
|
|
{
|
|
qInfo() << "Config Operation";
|
|
|
|
QDir *Dir = new QDir;
|
|
if(!Dir->exists("./Config"))
|
|
if(Dir->mkdir("./Config"))//如果文件夹不存在就新建
|
|
{
|
|
qInfo() << "create config dir";
|
|
}
|
|
delete Dir;
|
|
Dir = nullptr;
|
|
|
|
loadJson(ConfigFile);
|
|
|
|
}
|
|
|
|
|
|
Config::~Config()
|
|
{
|
|
|
|
}
|
|
|
|
void Config::loadJson(const QString& jsonFilename)
|
|
{
|
|
if (jsonFilename.isEmpty()) {
|
|
return;
|
|
}
|
|
|
|
qDebug() << "Loading " << jsonFilename;
|
|
|
|
QFile jsonFile(jsonFilename);
|
|
if (!jsonFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
|
qWarning() << "Unable to open file" << jsonFilename << jsonFile.errorString();
|
|
return;
|
|
}
|
|
|
|
QByteArray bytes = jsonFile.readAll();
|
|
|
|
jsonFile.close();
|
|
QJsonParseError jsonParseError;
|
|
QJsonDocument doc = QJsonDocument::fromJson(bytes, &jsonParseError);
|
|
if (jsonParseError.error != QJsonParseError::NoError) {
|
|
qWarning() << jsonFilename << "Unable to open json document" << jsonParseError.errorString();
|
|
return;
|
|
}
|
|
|
|
ConfigJson = doc.object();
|
|
}
|
|
|
|
|
|
QJsonObject Config::getJsonObject(QString key)
|
|
{
|
|
QJsonObject obj;
|
|
|
|
QJsonValue Value = ConfigJson.value(key);
|
|
|
|
if(Value.isObject())
|
|
{
|
|
obj = Value.toObject();
|
|
}
|
|
return obj;
|
|
}
|
|
|
|
void Config::setJsonObject(QString key,QJsonValue value)
|
|
{
|
|
|
|
ConfigJson[key] = value;
|
|
|
|
|
|
|
|
QFile file(ConfigFile);
|
|
if(!file.open(QIODevice::ReadWrite|QFile::Truncate)) {
|
|
qDebug() << "File open error";
|
|
}
|
|
|
|
|
|
QJsonDocument doc(QJsonDocument::fromJson(file.readAll()));
|
|
doc.setObject(ConfigJson);
|
|
|
|
|
|
file.write(doc.toJson());
|
|
file.close();
|
|
|
|
}
|
|
|
|
|
|
|
|
QString Config::getCommandFile()
|
|
{
|
|
QJsonObject obj = getJsonObject("commandfile");
|
|
|
|
QString file = obj.value("path").toString();
|
|
|
|
return file;
|
|
}
|
|
|
|
void Config::setCommandFile(QString file)
|
|
{
|
|
QJsonObject obj;
|
|
obj["path"] = file;
|
|
|
|
setJsonObject("commandfile",obj);
|
|
}
|
|
|
|
void Config::getConnet(QString key,QVariant *type,
|
|
QVariant *iauto,
|
|
QVariant *par1,QVariant *par2,
|
|
QVariant *par3,QVariant *par4,
|
|
QVariant *par5)
|
|
{
|
|
QJsonObject obj = getJsonObject(key);
|
|
|
|
*type = obj.value("type").toString();
|
|
*iauto = obj.value("auto").toBool();
|
|
*par1 = obj.value("param1").toString();
|
|
*par2 = obj.value("param2").toString();
|
|
*par3 = obj.value("param3").toString();
|
|
*par4 = obj.value("param4").toString();
|
|
*par5 = obj.value("param5").toString();
|
|
}
|
|
|
|
void Config::setConnet(QString key, QVariant type,
|
|
QVariant iauto,
|
|
QVariant par1, QVariant par2,
|
|
QVariant par3, QVariant par4,
|
|
QVariant par5)
|
|
{
|
|
|
|
QJsonObject obj;
|
|
|
|
obj["type"] = type.toString();
|
|
obj["auto"] = iauto.toBool();
|
|
obj["param1"] = par1.toString();
|
|
obj["param2"] = par2.toString();
|
|
obj["param3"] = par3.toString();
|
|
obj["param4"] = par4.toString();
|
|
obj["param5"] = par5.toString();
|
|
|
|
setJsonObject(key,obj);
|
|
}
|
|
|
|
|
|
|
|
void Config::get_GCS_ID(QVariant *id)
|
|
{
|
|
QJsonObject obj = getJsonObject("GlobalSetting");
|
|
|
|
*id = obj.value("GCS").toInt();
|
|
}
|
|
|
|
void Config::set_GCS_ID(QVariant id)
|
|
{
|
|
QJsonObject obj;
|
|
|
|
obj["GCS"] = id.toInt();
|
|
|
|
setJsonObject("GlobalSetting",obj);
|
|
}
|
|
|
|
void Config::get_ExportInfo(QVariant *value,QVariant *id)
|
|
{
|
|
QJsonObject obj = getJsonObject("ExportInfo");
|
|
|
|
*value = obj.value("Export").toBool();
|
|
*id = obj.value("ID").toInt();
|
|
}
|
|
|
|
void Config::set_ExportInfo(QVariant value,QVariant id)
|
|
{
|
|
QJsonObject obj;
|
|
|
|
obj["Export"] = value.toBool();
|
|
obj["ID"] = id.toInt();
|
|
|
|
setJsonObject("ExportInfo",obj);
|
|
}
|
|
|
|
|
|
void Config::getServoOffset(QVariant *ch1_d0,QVariant *ch1_kd,QVariant *ch1_len,
|
|
QVariant *ch2_d0,QVariant *ch2_kd,QVariant *ch2_len,
|
|
QVariant *ch3_d0,QVariant *ch3_kd,QVariant *ch3_len,
|
|
QVariant *ch4_d0,QVariant *ch4_kd,QVariant *ch4_len,
|
|
QVariant *ch5_d0,QVariant *ch5_kd,QVariant *ch5_len,
|
|
QVariant *ch6_d0,QVariant *ch6_kd,QVariant *ch6_len,
|
|
QVariant *ch7_d0,QVariant *ch7_kd,QVariant *ch7_len,
|
|
QVariant *ch8_d0,QVariant *ch8_kd,QVariant *ch8_len)
|
|
{
|
|
QJsonObject obj = getJsonObject("ServoOffset");
|
|
|
|
*ch1_d0 = obj.value("ch1_d0").toString();
|
|
*ch1_kd = obj.value("ch1_kd").toString();
|
|
*ch1_len = obj.value("ch1_len").toString();
|
|
|
|
*ch2_d0 = obj.value("ch2_d0").toString();
|
|
*ch2_kd = obj.value("ch2_kd").toString();
|
|
*ch2_len = obj.value("ch2_len").toString();
|
|
|
|
*ch3_d0 = obj.value("ch3_d0").toString();
|
|
*ch3_kd = obj.value("ch3_kd").toString();
|
|
*ch3_len = obj.value("ch3_len").toString();
|
|
|
|
*ch4_d0 = obj.value("ch4_d0").toString();
|
|
*ch4_kd = obj.value("ch4_kd").toString();
|
|
*ch4_len = obj.value("ch4_len").toString();
|
|
|
|
*ch5_d0 = obj.value("ch5_d0").toString();
|
|
*ch5_kd = obj.value("ch5_kd").toString();
|
|
*ch5_len = obj.value("ch5_len").toString();
|
|
|
|
*ch6_d0 = obj.value("ch6_d0").toString();
|
|
*ch6_kd = obj.value("ch6_kd").toString();
|
|
*ch6_len = obj.value("ch6_len").toString();
|
|
|
|
*ch7_d0 = obj.value("ch7_d0").toString();
|
|
*ch7_kd = obj.value("ch7_kd").toString();
|
|
*ch7_len = obj.value("ch7_len").toString();
|
|
|
|
*ch8_d0 = obj.value("ch8_d0").toString();
|
|
*ch8_kd = obj.value("ch8_kd").toString();
|
|
*ch8_len = obj.value("ch8_len").toString();
|
|
|
|
}
|
|
|
|
void Config::setServoOffset(QVariant ch1_d0,QVariant ch1_kd,QVariant ch1_len,
|
|
QVariant ch2_d0,QVariant ch2_kd,QVariant ch2_len,
|
|
QVariant ch3_d0,QVariant ch3_kd,QVariant ch3_len,
|
|
QVariant ch4_d0,QVariant ch4_kd,QVariant ch4_len,
|
|
QVariant ch5_d0,QVariant ch5_kd,QVariant ch5_len,
|
|
QVariant ch6_d0,QVariant ch6_kd,QVariant ch6_len,
|
|
QVariant ch7_d0,QVariant ch7_kd,QVariant ch7_len,
|
|
QVariant ch8_d0,QVariant ch8_kd,QVariant ch8_len)
|
|
{
|
|
QJsonObject obj;
|
|
|
|
obj["ch1_d0"] = ch1_d0.toString();obj["ch1_kd"] = ch1_kd.toString();obj["ch1_len"] = ch1_len.toString();
|
|
obj["ch2_d0"] = ch2_d0.toString();obj["ch2_kd"] = ch2_kd.toString();obj["ch2_len"] = ch2_len.toString();
|
|
obj["ch3_d0"] = ch3_d0.toString();obj["ch3_kd"] = ch3_kd.toString();obj["ch3_len"] = ch3_len.toString();
|
|
obj["ch4_d0"] = ch4_d0.toString();obj["ch4_kd"] = ch4_kd.toString();obj["ch4_len"] = ch4_len.toString();
|
|
obj["ch5_d0"] = ch5_d0.toString();obj["ch5_kd"] = ch5_kd.toString();obj["ch5_len"] = ch5_len.toString();
|
|
obj["ch6_d0"] = ch6_d0.toString();obj["ch6_kd"] = ch6_kd.toString();obj["ch6_len"] = ch6_len.toString();
|
|
obj["ch7_d0"] = ch7_d0.toString();obj["ch7_kd"] = ch7_kd.toString();obj["ch7_len"] = ch7_len.toString();
|
|
obj["ch8_d0"] = ch8_d0.toString();obj["ch8_kd"] = ch8_kd.toString();obj["ch8_len"] = ch8_len.toString();
|
|
|
|
|
|
setJsonObject("ServoOffset",obj);
|
|
|
|
}
|
|
|
|
void Config::getHeartBeat(QVariant *state,QVariant *frq)
|
|
{
|
|
QJsonObject obj = getJsonObject("HeartBeat");
|
|
|
|
*state = obj.value("state").toBool();
|
|
*frq = obj.value("frq").toDouble();
|
|
}
|
|
|
|
|
|
void Config::setHeartBeat(QVariant state,QVariant frq)
|
|
{
|
|
QJsonObject obj;
|
|
|
|
obj["state"] = state.toBool();
|
|
obj["frq"] = frq.toDouble();
|
|
|
|
setJsonObject("HeartBeat",obj);
|
|
}
|
|
|
|
|
|
void Config::getMapType(QVariant *type)
|
|
{
|
|
QJsonObject obj = getJsonObject("Map");
|
|
|
|
*type = obj.value("MapType").toString();
|
|
}
|
|
|
|
void Config::setMapType(QVariant type)
|
|
{
|
|
QJsonObject obj;
|
|
|
|
obj["MapType"] = type.toString();
|
|
|
|
setJsonObject("Map",obj);
|
|
}
|
|
|
|
void Config::getBeep(QVariant *value)
|
|
{
|
|
QJsonObject obj = getJsonObject("Warnning");
|
|
|
|
*value = obj.value("Beep").toBool();
|
|
}
|
|
|
|
void Config::setBeep(QVariant value)
|
|
{
|
|
QJsonObject obj;
|
|
|
|
obj["Beep"] = value.toBool();
|
|
|
|
setJsonObject("Warnning",obj);
|
|
}
|
|
|
|
void Config::getTTS(QVariant *value)
|
|
{
|
|
QJsonObject obj = getJsonObject("Sound");
|
|
|
|
*value = obj.value("tts").toBool();
|
|
}
|
|
|
|
void Config::setTTS(QVariant value)
|
|
{
|
|
QJsonObject obj;
|
|
|
|
obj["tts"] = value.toBool();
|
|
|
|
setJsonObject("Sound",obj);
|
|
}
|
|
|
|
QMap<int, Config::_latlng> Config::getVirtualMargin(int type)
|
|
{
|
|
QJsonObject obj = getJsonObject("VirtualMargin");
|
|
|
|
QMap<int, Config::_latlng> map;
|
|
|
|
QJsonArray array_obj;
|
|
|
|
switch (type) {
|
|
case 0:
|
|
array_obj = obj.value("red").toArray();
|
|
break;
|
|
case 1:
|
|
array_obj = obj.value("orange").toArray();
|
|
break;
|
|
case 2:
|
|
array_obj = obj.value("drop1").toArray();
|
|
break;
|
|
case 3:
|
|
array_obj = obj.value("drop2").toArray();
|
|
break;
|
|
}
|
|
|
|
foreach (QJsonValue v, array_obj) {
|
|
Config::_latlng latlng;
|
|
|
|
latlng.index = v.toObject().value("index").toInt();
|
|
latlng.latitude = v.toObject().value("latitude").toDouble();
|
|
latlng.longitude = v.toObject().value("longitude").toDouble();
|
|
|
|
map.insert(latlng.index,latlng);
|
|
}
|
|
|
|
return map;
|
|
}
|
|
|
|
void Config::setVirtualMargin(QMap<int, Config::_latlng> mvs,int type)
|
|
{
|
|
QJsonObject obj = getJsonObject("VirtualMargin");//总
|
|
|
|
QJsonArray notice_obj;
|
|
QJsonArray warning_obj;
|
|
QJsonArray drop1_obj;
|
|
QJsonArray drop2_obj;
|
|
|
|
|
|
if(type == 0)//红
|
|
{
|
|
notice_obj = obj.value("orange").toArray();
|
|
drop1_obj = obj.value("drop1").toArray();
|
|
drop2_obj = obj.value("drop2").toArray();
|
|
|
|
foreach (Config::_latlng latlng, mvs) {
|
|
|
|
QJsonObject v;
|
|
|
|
v["index"] = latlng.index;
|
|
v["latitude"] = latlng.latitude;
|
|
v["longitude"] = latlng.longitude;
|
|
|
|
warning_obj.append(v);
|
|
}
|
|
}
|
|
else if(type == 1)//黄
|
|
{
|
|
warning_obj = obj.value("red").toArray();
|
|
drop1_obj = obj.value("drop1").toArray();
|
|
drop2_obj = obj.value("drop2").toArray();
|
|
|
|
foreach (Config::_latlng latlng, mvs) {
|
|
|
|
QJsonObject v;
|
|
|
|
v["index"] = latlng.index;
|
|
v["latitude"] = latlng.latitude;
|
|
v["longitude"] = latlng.longitude;
|
|
|
|
notice_obj.append(v);
|
|
}
|
|
}
|
|
else if(type == 2)//drop1
|
|
{
|
|
warning_obj = obj.value("red").toArray();
|
|
notice_obj = obj.value("orange").toArray();
|
|
drop2_obj = obj.value("drop2").toArray();
|
|
|
|
foreach (Config::_latlng latlng, mvs) {
|
|
|
|
QJsonObject v;
|
|
|
|
v["index"] = latlng.index;
|
|
v["latitude"] = latlng.latitude;
|
|
v["longitude"] = latlng.longitude;
|
|
|
|
drop1_obj.append(v);
|
|
}
|
|
}
|
|
else if(type == 3)//drop2
|
|
{
|
|
warning_obj = obj.value("red").toArray();
|
|
notice_obj = obj.value("orange").toArray();
|
|
drop1_obj = obj.value("drop1").toArray();
|
|
|
|
foreach (Config::_latlng latlng, mvs) {
|
|
|
|
QJsonObject v;
|
|
|
|
v["index"] = latlng.index;
|
|
v["latitude"] = latlng.latitude;
|
|
v["longitude"] = latlng.longitude;
|
|
|
|
drop2_obj.append(v);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
obj["orange"] = notice_obj;
|
|
obj["red"] = warning_obj;
|
|
obj["drop1"] = drop1_obj;
|
|
obj["drop2"] = drop2_obj;
|
|
|
|
setJsonObject("VirtualMargin",obj);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|