#include "Config.h" Config::Config(QObject *parent) : QObject(parent) { qDebug() << "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 json = doc.object(); QJsonValue jsonValue = json.value("config"); if(jsonValue.isObject()) { ConfigJson = jsonValue.toObject(); } */ } 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::getServoOffset(QVariant *dirla,QVariant *dirra,QVariant *dirle,QVariant *dirre,QVariant *dirru, QVariant *maxla,QVariant *maxra,QVariant *maxle,QVariant *maxre,QVariant *maxru, QVariant *scalela,QVariant *scalera,QVariant *scalele,QVariant *scalere,QVariant *scaleru, QVariant *la,QVariant *ra,QVariant *le,QVariant *re,QVariant *ru) { QJsonObject obj = getJsonObject("ServoOffset"); *dirla = obj.value("dirla").toDouble(); *dirra = obj.value("dirra").toDouble(); *dirle = obj.value("dirle").toDouble(); *dirre = obj.value("dirre").toDouble(); *dirru = obj.value("dirru").toDouble(); *maxla = obj.value("maxla").toDouble(); *maxra = obj.value("maxra").toDouble(); *maxle = obj.value("maxle").toDouble(); *maxre = obj.value("maxre").toDouble(); *maxru = obj.value("maxru").toDouble(); *scalela = obj.value("scalela").toDouble(); *scalera = obj.value("scalera").toDouble(); *scalele = obj.value("scalele").toDouble(); *scalere = obj.value("scalere").toDouble(); *scaleru = obj.value("scaleru").toDouble(); *la = obj.value("la").toDouble(); *ra = obj.value("ra").toDouble(); *le = obj.value("le").toDouble(); *re = obj.value("re").toDouble(); *ru = obj.value("ru").toDouble(); } void Config::setServoOffset(QVariant dirla,QVariant dirra,QVariant dirle,QVariant dirre,QVariant dirru, QVariant maxla,QVariant maxra,QVariant maxle,QVariant maxre,QVariant maxru, QVariant scalela,QVariant scalera,QVariant scalele,QVariant scalere,QVariant scaleru, QVariant la,QVariant ra,QVariant le,QVariant re,QVariant ru) { QJsonObject obj; obj["dirla"] = dirla.toDouble(); obj["dirra"] = dirra.toDouble(); obj["dirle"] = dirle.toDouble(); obj["dirre"] = dirre.toDouble(); obj["dirru"] = dirru.toDouble(); obj["maxla"] = maxla.toDouble(); obj["maxra"] = maxra.toDouble(); obj["maxle"] = maxle.toDouble(); obj["maxre"] = maxre.toDouble(); obj["maxru"] = maxru.toDouble(); obj["scalela"] = scalela.toDouble(); obj["scalera"] = scalera.toDouble(); obj["scalele"] = scalele.toDouble(); obj["scalere"] = scalere.toDouble(); obj["scaleru"] = scaleru.toDouble(); obj["la"] = la.toDouble(); obj["ra"] = ra.toDouble(); obj["le"] = le.toDouble(); obj["re"] = re.toDouble(); obj["ru"] = ru.toDouble(); 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::setReferencePoint(double lon, double lat, double hight) { QJsonObject obj; obj["lon"] = lon; obj["lat"] = lat; obj["hight"] = hight; setJsonObject("ReferencePoint",obj); } void Config::getReferencePoint(double &lon, double &lat, double &hight) { QJsonObject obj = getJsonObject("ReferencePoint"); if(obj.empty() ) { return; } lon = obj["lon"].toDouble(); lat = obj["lat"].toDouble(); hight = obj["hight"].toDouble(); } 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); } void Config::get_ExportInfo(QVariant *state, QVariant *flag, QHostAddress *addr, QVariant *port, QString &id) { QJsonObject obj = getJsonObject("ExportInfo"); *state = obj.value("state").toBool(); *flag = obj.value("flag").toInt(); *addr = obj.value("addr").toString(); *port = obj.value("port").toInt(); id = obj.value("id").toString(); } void Config::set_ExportInfo(QVariant state, QVariant flag, QHostAddress addr, QVariant port, QString id) { QJsonObject obj; obj["state"] = state.toBool(); obj["flag"] = flag.toInt(); obj["addr"] = addr.toString(); obj["port"] = port.toInt(); obj["id"] = id; qDebug() << "id: " << obj["id"].toString(); setJsonObject("ExportInfo",obj); } void Config::get_Payload_RA_Info(QHostAddress *addr, QVariant *out_port, QVariant *in_port) { QJsonObject obj = getJsonObject("PayloadRAInfo"); *addr = obj.value("addr").toString(); *out_port = obj.value("out_port").toInt(); *in_port = obj.value("in_port").toInt(); } void Config::set_Payload_RA_Info( QHostAddress addr, QVariant out_port, QVariant in_port) { QJsonObject obj; obj["addr"] = addr.toString(); obj["out_port"] = out_port.toInt(); obj["in_port"] = in_port.toInt(); setJsonObject("PayloadRAInfo",obj); } void Config::get_Payload_UV_Info(QHostAddress *addr, QVariant *out_port, QVariant *in_port) { QJsonObject obj = getJsonObject("PayloadUVInfo"); *addr = obj.value("addr").toString(); *out_port = obj.value("out_port").toInt(); *in_port = obj.value("in_port").toInt(); } void Config::set_Payload_UV_Info( QHostAddress addr, QVariant out_port, QVariant in_port) { QJsonObject obj; obj["addr"] = addr.toString(); obj["out_port"] = out_port.toInt(); obj["in_port"] = in_port.toInt(); setJsonObject("PayloadUVInfo",obj); }