保存程序
This commit is contained in:
@@ -1264,15 +1264,139 @@ void OPMapWidget::WPFollowPrevious(bool flag,WayPointItem *w)
|
||||
|
||||
}
|
||||
|
||||
|
||||
//先清除再读取
|
||||
void OPMapWidget::WPLoad(QString path)//带文件目录参数
|
||||
{
|
||||
qDebug() << "WPLoad" << path;
|
||||
//读取
|
||||
QFile jsonFile(path);
|
||||
if (!jsonFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||
qWarning() << "Unable to open file" << path << jsonFile.errorString();
|
||||
return;
|
||||
}
|
||||
|
||||
QByteArray bytes = jsonFile.readAll();
|
||||
|
||||
jsonFile.close();
|
||||
QJsonParseError jsonParseError;
|
||||
QJsonDocument doc = QJsonDocument::fromJson(bytes, &jsonParseError);
|
||||
if (jsonParseError.error != QJsonParseError::NoError) {
|
||||
qWarning() << path << "Unable to open json document" << jsonParseError.errorString();
|
||||
return;
|
||||
}
|
||||
|
||||
QJsonObject json = doc.object();
|
||||
|
||||
//解码
|
||||
QJsonValue jsonValue = json.value("mission");
|
||||
|
||||
qDebug() << jsonValue.toObject().keys();
|
||||
|
||||
}
|
||||
|
||||
void OPMapWidget::WPSave(QString path)//带文件目录参数
|
||||
{
|
||||
qDebug() << "WPSave" << path;
|
||||
//保存到文件 *.plan,使用qgc的协议 json读写
|
||||
QJsonDocument *doc = new QJsonDocument();
|
||||
QJsonObject root= doc->object();
|
||||
|
||||
QJsonObject geoFence;
|
||||
QJsonObject mission;
|
||||
QJsonObject rallyPoints;
|
||||
|
||||
|
||||
//geoFence节点写入
|
||||
{
|
||||
QJsonArray circles;
|
||||
QJsonArray polygons;
|
||||
|
||||
geoFence.insert("circles",circles);
|
||||
geoFence.insert("polygons",polygons);
|
||||
geoFence.insert("version",2);
|
||||
}
|
||||
|
||||
//mission节点写入
|
||||
{
|
||||
QJsonArray items;
|
||||
|
||||
foreach(QGraphicsItem * i, map->childItems()) {
|
||||
WayPointItem *w = qgraphicsitem_cast<WayPointItem *>(i);
|
||||
if (w) {//逐渐往下增加
|
||||
//存到items
|
||||
QJsonArray params;
|
||||
params.append(w->Param1());
|
||||
params.append(w->Param2());
|
||||
params.append(w->Param3());
|
||||
params.append(w->Param4());
|
||||
params.append(w->Coord().Lat());
|
||||
params.append(w->Coord().Lng());
|
||||
params.append(w->Alt());
|
||||
|
||||
//可能有点问题
|
||||
QJsonObject item;
|
||||
item.insert("AMSLAltAboveTerrain",0);
|
||||
item.insert("Altitude",w->Alt());
|
||||
item.insert("AltitudeMode",1);
|
||||
item.insert("autoContinue",w->AutoContinue());
|
||||
item.insert("command",w->Command());
|
||||
item.insert("doJumpId",w->Number());
|
||||
item.insert("frame",w->Frame());
|
||||
item.insert("params",params);
|
||||
item.insert("type","SimpleItem");
|
||||
|
||||
//这里有问题
|
||||
items.append(item);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
QJsonArray plannedHomePosition;
|
||||
plannedHomePosition.append(0);
|
||||
plannedHomePosition.append(1);
|
||||
plannedHomePosition.append(2);
|
||||
|
||||
|
||||
mission.insert("cruiseSpeed",2);
|
||||
mission.insert("firmwareType",2);
|
||||
mission.insert("hoverSpeed",2);
|
||||
mission.insert("items",items);
|
||||
mission.insert("plannedHomePosition",plannedHomePosition);
|
||||
mission.insert("vehicleType",20);
|
||||
mission.insert("version",2);
|
||||
}
|
||||
|
||||
//rallyPoints节点写入
|
||||
{
|
||||
QJsonArray points;
|
||||
rallyPoints.insert("points",points);
|
||||
rallyPoints.insert("version",2);
|
||||
}
|
||||
|
||||
//根节点写入
|
||||
root.insert("fileType","Plan");
|
||||
root.insert("geoFence",geoFence);
|
||||
root.insert("groundStation","GCS_nf");
|
||||
root.insert("mission", mission);
|
||||
root.insert("rallyPoints", rallyPoints);
|
||||
root.insert("version", 1);
|
||||
|
||||
//设置文档
|
||||
doc->setObject(root);
|
||||
|
||||
//如果没有后缀名,那就追加
|
||||
if(path.right(5) != ".plan")
|
||||
{
|
||||
path.append(".plan");
|
||||
}
|
||||
|
||||
QFile file(path);
|
||||
if(!file.open(QIODevice::ReadWrite|QFile::Truncate)) {
|
||||
qDebug() << "File open error";
|
||||
}
|
||||
|
||||
file.write(doc->toJson());
|
||||
file.close();
|
||||
}
|
||||
|
||||
void OPMapWidget::WPDownload(void)
|
||||
@@ -1283,8 +1407,6 @@ void OPMapWidget::WPDownload(void)
|
||||
WPDeleteAll();
|
||||
|
||||
emit signal_WPDownload(1,0);
|
||||
|
||||
|
||||
}
|
||||
|
||||
void OPMapWidget::WPUpload(void)
|
||||
@@ -1292,7 +1414,6 @@ void OPMapWidget::WPUpload(void)
|
||||
//发送第一个
|
||||
QList<mapcontrol::WayPointItem *> list;
|
||||
//先发送一个清空指令
|
||||
|
||||
foreach(QGraphicsItem * i, map->childItems()) {
|
||||
WayPointItem *w = qgraphicsitem_cast<WayPointItem *>(i);
|
||||
if (w) {
|
||||
|
||||
Reference in New Issue
Block a user