完成航点传输

This commit is contained in:
2020-05-21 14:02:04 +08:00
parent 48cac640d5
commit 16696ded1c
7 changed files with 66 additions and 28 deletions
@@ -68,17 +68,17 @@ void MultiSelector::setCurrent(QString value)
//设置列表
void MultiSelector::setList(QMap<QString,QString> list)
void MultiSelector::setList(QMap<int, QVector< QString> > list)
{
stringmap.clear();
stringmap = list;
reBuildList();
setCurrent(stringmap.begin().value());
setCurrent(stringmap.begin().value().at(0));
}
void MultiSelector::setList(QMap<QString, QString> list, QString current)
void MultiSelector::setList(QMap<int, QVector<QString> > list, QString current)
{
stringmap.clear();
@@ -92,10 +92,14 @@ void MultiSelector::setList(QMap<QString, QString> list, QString current)
void MultiSelector::reBuildList(void)
{
ui->listWidget->clear();
for (QMap<QString,QString>::iterator i = stringmap.begin();i != stringmap.end(); ++i)
for (QMap<int, QVector< QString> >::iterator i = stringmap.begin();i != stringmap.end(); ++i)
{
QString Seq = i.key();
QString Type = i.value();
int index = i.key();
QVector< QString> w = i.value();
QString Seq = w.at(0);
QString Type = w.at(1);
QWidget *widget = new QWidget(ui->listWidget);
@@ -30,8 +30,8 @@ public slots:
void setCategory(QStringList list);
void setCurrent(QString value);
void setList(QMap<QString,QString> list);
void setList(QMap<QString,QString> list,QString current);
void setList(QMap<int, QVector<QString> > list);
void setList(QMap<int, QVector<QString> > list, QString current);
@@ -65,7 +65,7 @@ private:
private:
Ui::MultiSelector *ui;
QMap<QString,QString> stringmap;
QMap<int, QVector< QString> > stringmap;
};
+16 -1
View File
@@ -981,6 +981,7 @@ void propertyui::setallPoint(QMap<int,int> list)
for (QMap<int,int>::iterator i = list.begin();i != list.end(); ++i)
{
int index = i.key();
QString Seq = QString::number(i.key());
QString Type;
@@ -994,7 +995,21 @@ void propertyui::setallPoint(QMap<int,int> list)
Type = (QString)info.toObject().find(_friendlyNameJsonKey).value().toString();
}
}
allPoint.insert(Seq,Type);
//string存在排序问题
QVector< QString> value;
value << Seq
<< Type;
allPoint.insert(index,value);
}
for (QMap<int, QVector< QString> >::iterator i = allPoint.begin();i != allPoint.end(); ++i)
{
qDebug() << i.key() << i.value();
}
+1 -1
View File
@@ -388,7 +388,7 @@ private:
QString param7_type = "QLineEdit";
QMap<QString,QString> allPoint;//所有航点
QMap<int,QVector<QString>> allPoint;//所有航点
};
+4 -3
View File
@@ -172,12 +172,13 @@ MainWindow::MainWindow(QWidget *parent)
qRegisterMetaType<int32_t>("int32_t");
//生成航线必须在map线程完成,因此不能直接连接
connect(dlink->mavlinknode->Mission,SIGNAL(receivedPoint(float,float,float,float,int32_t,int32_t,float,uint16_t,uint16_t,uint16_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t)),
map,SLOT(receivedPoint(float,float,float,float,int32_t,int32_t,float,uint16_t,uint16_t,uint16_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t)),Qt::DirectConnection);
map,SLOT(receivedPoint(float,float,float,float,int32_t,int32_t,float,uint16_t,uint16_t,uint16_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t)));
//connect(map,SIGNAL(WPProperty(float,float,float,float,int32_t,int32_t,float,uint16_t,uint16_t,uint16_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t)),
// dlink->mavlinknode->Mission,SLOT(transmitPoint(float,float,float,float,int32_t,int32_t,float,uint16_t,uint16_t,uint16_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t)),Qt::DirectConnection);
connect(map,SIGNAL(WPProperty(float,float,float,float,int32_t,int32_t,float,uint16_t,uint16_t,uint16_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t)),
dlink->mavlinknode->Mission,SLOT(transmitPoint(float,float,float,float,int32_t,int32_t,float,uint16_t,uint16_t,uint16_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t)),Qt::DirectConnection);
+13 -4
View File
@@ -214,6 +214,7 @@ void MissionProcess::Parse(mavlink_message_t msg)
}break;
case MAVLINK_MSG_ID_MISSION_ACK: {
mavlink_msg_mission_ack_decode(&msg,&mission_ack);
mission_status.transmit.isWaiteforACK = false;
}break;
case MAVLINK_MSG_ID_MISSION_CURRENT: {
mavlink_msg_mission_current_decode(&msg,&mission_current);
@@ -441,19 +442,27 @@ void MissionProcess::WriteStateMachine(void)
i = *items.find(mission_item_int.seq);
/*
item_int(i.param1,i.param2,i.param3,i.param4,
i.x,i.y,i.z,
i.seq,i.command,i.frame,
i.current,i.autocontinue,i.mission_type);//发送航点
*/
/*
item(i.param1,i.param2,i.param3,i.param4,
i.x * 10e-7,i.y * 10e-7,i.z * 10e-4,
i.seq,i.command,i.frame,
i.current,i.autocontinue,i.mission_type);//发送航点
*/
mission_status.transmit.isWaiteforRequest = true;
if(mission_item_int.seq < (mission_status.transmit.count - 1))
{
mission_status.transmit.isWaiteforRequest = true;
}
else
{
step++;
mission_status.transmit.isWaiteforACK = true;
}
time = QTime::currentTime().msecsSinceStartOfDay();
}
@@ -479,7 +488,7 @@ void MissionProcess::WriteStateMachine(void)
mission_status.transmit.isWaiteforACK = false;
timeout_count = 0;
}
qDebug() << "wait for ack time out";
}
else
{
+19 -10
View File
@@ -312,6 +312,8 @@ void OPMapWidget::mouseDoubleClickEvent(QMouseEvent *event)
WPLineCreate(WPFind(Item->Number() - 1),Item,Qt::green,false,2);
qDebug() << "WPCreate Point"
<< QThread::currentThreadId();
}
}
emit MouseDoubleClickEvent(event);
@@ -853,17 +855,25 @@ void OPMapWidget::setWPLock(bool const & lock)
void OPMapWidget::WPsearchall(void)
{
//重新排序一下
//QList<mapcontrol::WayPointItem *> list;
QMap<int,int> list;
foreach(QGraphicsItem * i, map->childItems()) {
WayPointItem *w = qgraphicsitem_cast<WayPointItem *>(i);
if (w) {
list.insert(w->Number(),w->Command());
}
}
for (QMap<int,int>::iterator i = list.begin();i != list.end(); ++i)
{
qDebug() << i.key() << i.value();
}
if(list.size() != 0)
{
emit allPoint(list);
@@ -901,23 +911,19 @@ void OPMapWidget::WPUpload(void)
{
//发送第一个
QList<mapcontrol::WayPointItem *> list;
//QMap<int,QVector<QVariant>> list;
//先发送一个清空指令
foreach(QGraphicsItem * i, map->childItems()) {
WayPointItem *w = qgraphicsitem_cast<WayPointItem *>(i);
if (w) {
list.append(w);
//w->emitWPProperty();
w->emitWPProperty();
}
}
qDebug() << "WPUpload" << list.size();
//emit signal_WPUpload(1,0,list.size());//直接发送全部航点到
emit signal_WPUpload(1,0,list.size());//直接发送全部航点到
}
@@ -935,6 +941,9 @@ void OPMapWidget::receivedPoint(float param1,float param2,float param3,float par
uint8_t mission_type)
{
qDebug() << "receivers Point"
<< QThread::currentThreadId();
qDebug() << "receivers Point" << x * 10e-8 << y * 10e-8 << 10e-8;
internals::PointLatLng LatLng;
@@ -944,7 +953,7 @@ void OPMapWidget::receivedPoint(float param1,float param2,float param3,float par
WayPointItem *Item = WPCreate(LatLng,z);
/*
emit setWPProperty(param1,param2,param3,param4,
x,y,z,
seq,
@@ -956,7 +965,7 @@ void OPMapWidget::receivedPoint(float param1,float param2,float param3,float par
current,
autocontinue,
mission_type);
*/
WPLineCreate(WPFind(Item->Number() - 1),Item,Qt::green,false,2);