diff --git a/App/ComponentUI/Scope/Chart.cpp b/App/ComponentUI/Scope/Chart.cpp index 4d799ce..7d8415d 100644 --- a/App/ComponentUI/Scope/Chart.cpp +++ b/App/ComponentUI/Scope/Chart.cpp @@ -354,24 +354,27 @@ void Chart::chartUpdate(void) //qDebug() << s->name() << pv; - float max = pv.at(0).y(); - float min = pv.at(0).y(); + if(pv.size() > 0) + { + float max = pv.at(0).y(); + float min = pv.at(0).y(); - foreach (QPointF p, pv) { + foreach (QPointF p, pv) { - if(max < p.y()) - { - max = p.y(); + if(max < p.y()) + { + max = p.y(); + } + + if(min > p.y()) + { + min = p.y(); + } } - if(min > p.y()) - { - min = p.y(); - } + yMax.append(max); + yMin.append(min); } - - yMax.append(max); - yMin.append(min); } } @@ -565,6 +568,24 @@ bool Chart::addSeries(QString name = tr("new"),QColor color = QColor("#FFFFFF"), void Chart::setSerieData(QString name, QVariant data) { + +#ifdef unix + +#else + #ifdef __MINGW32__ + + #else + bool ok; + + data.toDouble(&ok); + + if(!ok) + { + return; + } + #endif +#endif + //timeseries++; //qDebug() << timeseries << timeseries; //出新了比以前更大或者更小的值,那么就设置一下量程 @@ -640,6 +661,26 @@ void Chart::setSerieData(QString name, QVariant data) void Chart::setSerieData(QString name,QVariant data,int colorindex = 3) { + +#ifdef unix + +#else + #ifdef __MINGW32__ + + #else + bool ok; + + data.toDouble(&ok); + + if(!ok) + { + return; + } + #endif +#endif + + + //timeseries++; //qDebug() << timeseries << timeseries; //出新了比以前更大或者更小的值,那么就设置一下量程 diff --git a/App/mainwindow.cpp b/App/mainwindow.cpp index b9d2633..dd643e9 100644 --- a/App/mainwindow.cpp +++ b/App/mainwindow.cpp @@ -239,6 +239,13 @@ MainWindow::MainWindow(QWidget *parent) connect(dlink->mavlinknode,SIGNAL(updateDlink(float,uint64_t,uint64_t)), this,SLOT(updateDlink(float,uint64_t,uint64_t))); + connect(dlink,SIGNAL(byteCount(int,int)), + this,SLOT(dlinkCount(int,int))); + + + + + //this ----- map connect(map,SIGNAL(TotalDistanceUpdate(double)), this,SLOT(TotalDistance(double))); @@ -846,15 +853,9 @@ void MainWindow::onTabIndexChanged(const int &index)//界面选择管理 healthui->show(); } - /* - //发生界面切换,检查一下航线 - qDebug() << "zubie" << map->currentGroup << group; - if(map->currentGroup != group) - { - emit currentGroup(group + 2); - } - */ + //得到航线组数,数据为1,2,3,4 + emit currentGroup(group + 2); } else { @@ -960,10 +961,17 @@ void MainWindow::setCommunicationLostState(bool flag) void MainWindow::updateDlink(float rssi,uint64_t in,uint64_t out) { statusui->setDlink(1,QString::number(rssi,'f',0), - tr("R:%1 / T:%2").arg(QString::number(in)).arg(QString::number(dlink->Byte_Out_per))); + tr("R:%1 / T:%2").arg(QString::number(in)).arg(QString::number(dlinkout))); } +void MainWindow::dlinkCount(int in,int out) +{ + dlinkout = out; +} + + + void MainWindow::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, @@ -1598,7 +1606,7 @@ void MainWindow::updateUI()//事件驱动式更新数据 //get 9-10 - /* + //得到航线组数,数据为1,2,3,4 group = (int)(getBit(enable,11) << 2) | (int)(getBit(enable,10) << 1) | (int)(getBit(enable,9)); @@ -1611,7 +1619,6 @@ void MainWindow::updateUI()//事件驱动式更新数据 } group_old = group; - */ } diff --git a/App/mainwindow.h b/App/mainwindow.h index 237d6bb..32a6b39 100644 --- a/App/mainwindow.h +++ b/App/mainwindow.h @@ -106,6 +106,10 @@ private slots: void updateDlink(float rssi, uint64_t in, uint64_t out); + + void dlinkCount(int in,int out); + + protected slots: @@ -123,6 +127,8 @@ protected: int MainIndex = 0; + int dlinkout = 0; + Config *config = nullptr; StatusUI *statusui = nullptr; diff --git a/MavLinkNode/mavlinknode.cpp b/MavLinkNode/mavlinknode.cpp index e4afe11..b032b7f 100644 --- a/MavLinkNode/mavlinknode.cpp +++ b/MavLinkNode/mavlinknode.cpp @@ -493,12 +493,12 @@ void MavLinkNode::process()//线程函数 { //qDebug() << "client parse"; Mavlinkparse(SourceType::c_sock,datagram); - QApplication::processEvents(); + //QApplication::processEvents(); } else { - //QThread::msleep(1000/running_frq); - QThread::yieldCurrentThread(); + QThread::msleep(1000/running_frq); + //QThread::yieldCurrentThread(); } //解码从串口来的 @@ -509,12 +509,12 @@ void MavLinkNode::process()//线程函数 { //qDebug() << "serial port parse"; Mavlinkparse(SourceType::s_port,datagram); - QApplication::processEvents(); + //QApplication::processEvents(); } else { - //QThread::msleep(1000/running_frq); - QThread::yieldCurrentThread();//打开这个CPU占用50% + QThread::msleep(1000/running_frq); + //QThread::yieldCurrentThread();//打开这个CPU占用50% } if(isInterruptionRequested())//退出 @@ -557,7 +557,6 @@ void MavLinkNode::TimerOut(void) } } - emit updateDlink(rssi,rate_in,0); } @@ -808,6 +807,7 @@ void MavLinkNode::StatusParse(mavlink_message_t msg) case MAVLINK_MSG_ID_SYS_STATUS: { mavlink_msg_sys_status_decode(&msg,&vehicle.sys_status); +/* sys_status_csv.append(QString::number(vehicle.sys_status.onboard_control_sensors_present)); sys_status_csv.append(','); sys_status_csv.append(QString::number(vehicle.sys_status.onboard_control_sensors_enabled)); sys_status_csv.append(','); sys_status_csv.append(QString::number(vehicle.sys_status.onboard_control_sensors_health)); sys_status_csv.append(','); @@ -821,7 +821,7 @@ void MavLinkNode::StatusParse(mavlink_message_t msg) sys_status_csv.append(QString::number(vehicle.sys_status.errors_count2)); sys_status_csv.append(','); sys_status_csv.append(QString::number(vehicle.sys_status.errors_count3)); sys_status_csv.append(','); sys_status_csv.append(QString::number(vehicle.sys_status.errors_count4)); sys_status_csv.append('\n'); - +*/ }break; case MAVLINK_MSG_ID_HEARTBEAT: { @@ -834,14 +834,14 @@ void MavLinkNode::StatusParse(mavlink_message_t msg) Status->m_heartbeat.system_status = vehicle.heartbeat.system_status; Status->m_heartbeat.type = vehicle.heartbeat.type; - +/* heartbeat_csv.append(QString::number(vehicle.heartbeat.type)); heartbeat_csv.append(','); heartbeat_csv.append(QString::number(vehicle.heartbeat.autopilot)); heartbeat_csv.append(','); heartbeat_csv.append(QString::number(vehicle.heartbeat.base_mode)); heartbeat_csv.append(','); heartbeat_csv.append(QString::number(vehicle.heartbeat.custom_mode)); heartbeat_csv.append(','); heartbeat_csv.append(QString::number(vehicle.heartbeat.system_status)); heartbeat_csv.append(','); heartbeat_csv.append(QString::number(vehicle.heartbeat.mavlink_version)); heartbeat_csv.append('\n'); - +*/ emit beep(msg.sysid); }break; @@ -850,7 +850,7 @@ void MavLinkNode::StatusParse(mavlink_message_t msg) }break; case MAVLINK_MSG_ID_ATTITUDE: { mavlink_msg_attitude_decode(&msg,&vehicle.attitude); - +/* attitude_csv.append(QString::number(vehicle.attitude.time_boot_ms)); attitude_csv.append(','); attitude_csv.append(QString::number(vehicle.attitude.roll)); attitude_csv.append(','); attitude_csv.append(QString::number(vehicle.attitude.pitch)); attitude_csv.append(','); @@ -858,12 +858,12 @@ void MavLinkNode::StatusParse(mavlink_message_t msg) attitude_csv.append(QString::number(vehicle.attitude.rollspeed)); attitude_csv.append(','); attitude_csv.append(QString::number(vehicle.attitude.pitchspeed)); attitude_csv.append(','); attitude_csv.append(QString::number(vehicle.attitude.yawspeed)); attitude_csv.append('\n'); - +*/ }break; case MAVLINK_MSG_ID_INS1: { mavlink_msg_ins1_decode(&msg,&vehicle.ins1); - +/* ins1_csv.append(QString::number(vehicle.ins1.time_boot_ms)); ins1_csv.append(','); ins1_csv.append(QString::number(vehicle.ins1.pitch)); ins1_csv.append(','); ins1_csv.append(QString::number(vehicle.ins1.roll)); ins1_csv.append(','); @@ -889,13 +889,13 @@ void MavLinkNode::StatusParse(mavlink_message_t msg) ins1_csv.append(QString::number(vehicle.ins1.eph)); ins1_csv.append(','); ins1_csv.append(QString::number(vehicle.ins1.epv)); ins1_csv.append(','); ins1_csv.append(QString::number(vehicle.ins1.satellites_visible)); ins1_csv.append('\n'); - +*/ emit signal_ins1(vehicle.ins1); }break; case MAVLINK_MSG_ID_INS2: { mavlink_msg_ins2_decode(&msg,&vehicle.ins2); - +/* ins2_csv.append(QString::number(vehicle.ins2.time_boot_ms)); ins2_csv.append(','); ins2_csv.append(QString::number(vehicle.ins2.pitch)); ins2_csv.append(','); ins2_csv.append(QString::number(vehicle.ins2.roll)); ins2_csv.append(','); @@ -921,13 +921,13 @@ void MavLinkNode::StatusParse(mavlink_message_t msg) ins2_csv.append(QString::number(vehicle.ins2.eph)); ins2_csv.append(','); ins2_csv.append(QString::number(vehicle.ins2.epv)); ins2_csv.append(','); ins2_csv.append(QString::number(vehicle.ins2.satellites_visible)); ins2_csv.append('\n'); - +*/ emit signal_ins2(vehicle.ins2); }break; case MAVLINK_MSG_ID_GPS_RAW_INT: { mavlink_msg_gps_raw_int_decode(&msg,&vehicle.gps_raw_int); - +/* gps_raw_int_csv.append(QString::number(vehicle.gps_raw_int.time_usec));gps_raw_int_csv.append(','); gps_raw_int_csv.append(QString::number(vehicle.gps_raw_int.lat));gps_raw_int_csv.append(','); gps_raw_int_csv.append(QString::number(vehicle.gps_raw_int.lon));gps_raw_int_csv.append(','); @@ -945,7 +945,7 @@ void MavLinkNode::StatusParse(mavlink_message_t msg) gps_raw_int_csv.append(QString::number(vehicle.gps_raw_int.vel_acc));gps_raw_int_csv.append(','); gps_raw_int_csv.append(QString::number(vehicle.gps_raw_int.hdg_acc));gps_raw_int_csv.append(','); gps_raw_int_csv.append(QString::number(vehicle.gps_raw_int.yaw));gps_raw_int_csv.append('\n'); - +*/ }break; case MAVLINK_MSG_ID_GLOBAL_POSITION_INT: { @@ -953,7 +953,7 @@ void MavLinkNode::StatusParse(mavlink_message_t msg) }break; case MAVLINK_MSG_ID_SERVO_OUTPUT_RAW: { mavlink_msg_servo_output_raw_decode(&msg,&vehicle.servo_output_raw); - +/* servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.time_usec)); servo_output_raw_csv[vehicle.servo_output_raw.port].append(','); servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.port)); servo_output_raw_csv[vehicle.servo_output_raw.port].append(','); servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.servo1_raw)); servo_output_raw_csv[vehicle.servo_output_raw.port].append(','); @@ -972,7 +972,7 @@ void MavLinkNode::StatusParse(mavlink_message_t msg) servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.servo14_raw)); servo_output_raw_csv[vehicle.servo_output_raw.port].append(','); servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.servo15_raw)); servo_output_raw_csv[vehicle.servo_output_raw.port].append(','); servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.servo16_raw)); servo_output_raw_csv[vehicle.servo_output_raw.port].append('\n'); - +*/ emit signal_servo_output_raw(vehicle.servo_output_raw); @@ -983,7 +983,7 @@ void MavLinkNode::StatusParse(mavlink_message_t msg) }break; case MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT: { mavlink_msg_nav_controller_output_decode(&msg,&vehicle.nav_controller_output); - +/* nav_controller_output_csv.append(QString::number(vehicle.nav_controller_output.nav_roll)); nav_controller_output_csv.append(','); nav_controller_output_csv.append(QString::number(vehicle.nav_controller_output.nav_pitch)); nav_controller_output_csv.append(','); nav_controller_output_csv.append(QString::number(vehicle.nav_controller_output.nav_bearing)); nav_controller_output_csv.append(','); @@ -992,7 +992,7 @@ void MavLinkNode::StatusParse(mavlink_message_t msg) nav_controller_output_csv.append(QString::number(vehicle.nav_controller_output.alt_error)); nav_controller_output_csv.append(','); nav_controller_output_csv.append(QString::number(vehicle.nav_controller_output.aspd_error)); nav_controller_output_csv.append(','); nav_controller_output_csv.append(QString::number(vehicle.nav_controller_output.xtrack_error)); nav_controller_output_csv.append('\n'); - +*/ }break; case MAVLINK_MSG_ID_AIRSPEED_AUTOCAL: { @@ -1003,13 +1003,13 @@ void MavLinkNode::StatusParse(mavlink_message_t msg) }break; case MAVLINK_MSG_ID_SCALED_PRESSURE: { mavlink_msg_scaled_pressure_decode(&msg,&vehicle.scaled_pressure); - +/* scaled_pressure_csv.append(QString::number(vehicle.scaled_pressure.time_boot_ms)); scaled_pressure_csv.append(','); scaled_pressure_csv.append(QString::number(vehicle.scaled_pressure.press_abs)); scaled_pressure_csv.append(','); scaled_pressure_csv.append(QString::number(vehicle.scaled_pressure.press_diff)); scaled_pressure_csv.append(','); scaled_pressure_csv.append(QString::number(vehicle.scaled_pressure.temperature)); scaled_pressure_csv.append(','); scaled_pressure_csv.append(QString::number(vehicle.scaled_pressure.temperature_press_diff)); scaled_pressure_csv.append('\n'); - +*/ }break; case MAVLINK_MSG_ID_EXTENDED_SYS_STATE: { @@ -1050,18 +1050,18 @@ void MavLinkNode::StatusParse(mavlink_message_t msg) }break; case MAVLINK_MSG_ID_VFR_HUD: { mavlink_msg_vfr_hud_decode(&msg,&vehicle.vfr_hud); - +/* vfr_hud_csv.append(QString::number(vehicle.vfr_hud.airspeed)); vfr_hud_csv.append(','); vfr_hud_csv.append(QString::number(vehicle.vfr_hud.groundspeed)); vfr_hud_csv.append(','); vfr_hud_csv.append(QString::number(vehicle.vfr_hud.alt)); vfr_hud_csv.append(','); vfr_hud_csv.append(QString::number(vehicle.vfr_hud.climb)); vfr_hud_csv.append(','); vfr_hud_csv.append(QString::number(vehicle.vfr_hud.heading)); vfr_hud_csv.append(','); vfr_hud_csv.append(QString::number(vehicle.vfr_hud.throttle)); vfr_hud_csv.append('\n'); - +*/ }break; case MAVLINK_MSG_ID_EMB_ATMO_COM: { mavlink_msg_emb_atmo_com_decode(&msg,&vehicle.emb_atom_com); - +/* emb_atom_com_csv.append(QString::number(vehicle.emb_atom_com.time_boot_ms)); emb_atom_com_csv.append(','); emb_atom_com_csv.append(QString::number(vehicle.emb_atom_com.Airspeed)); emb_atom_com_csv.append(','); emb_atom_com_csv.append(QString::number(vehicle.emb_atom_com.beta)); emb_atom_com_csv.append(','); @@ -1070,12 +1070,12 @@ void MavLinkNode::StatusParse(mavlink_message_t msg) emb_atom_com_csv.append(QString::number(vehicle.emb_atom_com.qbar)); emb_atom_com_csv.append(','); emb_atom_com_csv.append(QString::number(vehicle.emb_atom_com.seq)); emb_atom_com_csv.append(','); emb_atom_com_csv.append(QString::number(vehicle.emb_atom_com.mach)); emb_atom_com_csv.append('\n'); - +*/ }break; case MAVLINK_MSG_ID_TurbineState: { mavlink_msg_turbinestate_decode(&msg,&vehicle.turbinstate); - +/* turbinstate_csv.append(QString::number(vehicle.turbinstate.time_boot_ms)); turbinstate_csv.append(','); turbinstate_csv.append(QString::number(vehicle.turbinstate.RPM_mea)); turbinstate_csv.append(','); turbinstate_csv.append(QString::number(vehicle.turbinstate.T5)); turbinstate_csv.append(','); @@ -1103,11 +1103,11 @@ void MavLinkNode::StatusParse(mavlink_message_t msg) turbinstate_csv.append(QString::number(vehicle.turbinstate.rev)); turbinstate_csv.append(','); turbinstate_csv.append(QString::number(vehicle.turbinstate.CFuelMode)); turbinstate_csv.append(','); turbinstate_csv.append(QString::number(vehicle.turbinstate.Cmd)); turbinstate_csv.append('\n'); - +*/ }break; case MAVLINK_MSG_ID_BMUState: { mavlink_msg_bmustate_decode(&msg,&vehicle.bmustate); - +/* bmustate_csv.append(QString::number(vehicle.bmustate.time_boot_ms)); bmustate_csv.append(','); bmustate_csv.append(QString::number(vehicle.bmustate.BAT1_group_voltage_mv)); bmustate_csv.append(','); bmustate_csv.append(QString::number(vehicle.bmustate.BAT1_group_current_dA)); bmustate_csv.append(','); @@ -1129,11 +1129,11 @@ void MavLinkNode::StatusParse(mavlink_message_t msg) bmustate_csv.append(QString::number(vehicle.bmustate.BAT2_STA1)); bmustate_csv.append(','); bmustate_csv.append(QString::number(vehicle.bmustate.BAT2_STA2)); bmustate_csv.append(','); bmustate_csv.append(QString::number(vehicle.bmustate.p500w_enabled)); bmustate_csv.append('\n'); - +*/ }break; case MAVLINK_MSG_ID_CCMState: { mavlink_msg_ccmstate_decode(&msg,&vehicle.ccmstate); - +/* ccmstate_csv.append(QString::number(vehicle.ccmstate.time_boot_ms)); ccmstate_csv.append(','); ccmstate_csv.append(QString::number(vehicle.ccmstate.fuel_level)); ccmstate_csv.append(','); ccmstate_csv.append(QString::number(vehicle.ccmstate.temp[0])); ccmstate_csv.append(','); @@ -1145,7 +1145,7 @@ void MavLinkNode::StatusParse(mavlink_message_t msg) ccmstate_csv.append(QString::number(vehicle.ccmstate.volts[2])); ccmstate_csv.append(','); ccmstate_csv.append(QString::number(vehicle.ccmstate.volts[3])); ccmstate_csv.append(','); ccmstate_csv.append(QString::number(vehicle.ccmstate.echo_seq)); ccmstate_csv.append('\n'); - +*/ }break; } diff --git a/dlink/dlink.cpp b/dlink/dlink.cpp index 50ff754..b962ac8 100644 --- a/dlink/dlink.cpp +++ b/dlink/dlink.cpp @@ -57,6 +57,10 @@ void DLink::timeout() Byte_Out_per = Byte_Out_ALL; Byte_Out_ALL = 0; + + + emit byteCount(Byte_In_per,Byte_Out_per); + } int DLink::SendMessageTo(quint8 ch, quint8 *msg, quint16 len) diff --git a/dlink/dlink.h b/dlink/dlink.h index 16cd6a1..58fe964 100644 --- a/dlink/dlink.h +++ b/dlink/dlink.h @@ -59,6 +59,9 @@ public: quint32 Byte_In_ALL = 0; signals: + + void byteCount(int in,int out); + void showMessage(const QString &message,int TimeOut = 0); void recieveMessage(quint32 src,QByteArray data); diff --git a/opmap/mapwidget/opmapwidget.cpp b/opmap/mapwidget/opmapwidget.cpp index 3234e90..b3edef4 100644 --- a/opmap/mapwidget/opmapwidget.cpp +++ b/opmap/mapwidget/opmapwidget.cpp @@ -1190,7 +1190,6 @@ void OPMapWidget::WPSetVisibleAll(bool value) void OPMapWidget::WPDeleteAll() { //删除一个组 - foreach(QGraphicsItem * i, map->childItems()) { WayPointItem *w = qgraphicsitem_cast(i); @@ -1272,9 +1271,10 @@ void OPMapWidget::ConnectWP(WayPointItem *item) connect(item, 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)), this, SLOT(find_PointNumber()),Qt::DirectConnection); - +/* connect(item, SIGNAL(WPFollowPrevious(bool,WayPointItem*)), this, SLOT(WPFollowPrevious(bool,WayPointItem*)),Qt::DirectConnection); + */ connect(item, SIGNAL(localPositionChanged(QPointF, WayPointItem *)), this, SLOT(WPLocalChanged(QPointF, WayPointItem *)), Qt::DirectConnection); @@ -1518,7 +1518,6 @@ void OPMapWidget::WPSetCurrent(int seq) } } } - } @@ -1859,10 +1858,6 @@ void OPMapWidget::WPLoad(QString path)//带文件目录参数 Item->emitWPProperty(); } - - - - } void OPMapWidget::WPSave(QString path)//带文件目录参数 @@ -1877,7 +1872,7 @@ void OPMapWidget::WPSave(QString path)//带文件目录参数 QJsonObject rallyPoints; - //geoFence节点写入 + //geoFence节点写入 (mission type == 1,2) { QJsonArray circles; QJsonArray polygons; @@ -1887,7 +1882,7 @@ void OPMapWidget::WPSave(QString path)//带文件目录参数 geoFence.insert("version",2); } - //mission节点写入 + //mission节点写入 (mission type == 3...) { QJsonArray items; @@ -2068,34 +2063,70 @@ void OPMapWidget::WPUpload(void) //飞行界面收到的当前航点的消息 void OPMapWidget::groupchanged(int value) { + currentMissionType = value; //如果当前是在飞行界面,那么就下载,否则不动 - if(isWPCreate == true)//编辑界面 { } else//飞行界面 { - /* - WPDeleteAll(); - - int sysid = 0; - int compid = 0; - + qDebug() << "show current group" << currentMissionType; + //将不是当前的全部变成灰色,当前的显示 foreach(QGraphicsItem * i, map->childItems()) { - UAVItem *u = qgraphicsitem_cast(i); - if (u) { - if(u->Select() == true) + WayPointItem *w = qgraphicsitem_cast(i); + if (w) { + qDebug() << "missiontype" << w->MissionType(); + if(w->MissionType() == currentMissionType) { - sysid = u->SysID(); - compid = u->CompID(); - - emit signal_WPDownload(sysid,compid,value); + w->setisActive(true); + } + else + { + w->setisActive(false); } } } - */ + //将不是当前的先全部变成灰色,当前的显示 + foreach(QGraphicsItem * i, map->childItems()) { + WayPointLine *l = qgraphicsitem_cast(i); + if (l) { + + WayPointItem *from = qgraphicsitem_cast(l->WPLineFrom()); + WayPointItem *to = qgraphicsitem_cast(l->WPLineTo()); + + if((from)||(to)) + { + if(from) + { + if(from->MissionType() == currentMissionType) + { + l->setisActive(true); + } + else + { + l->setisActive(false); + } + } + else if(to) + { + if(from->MissionType() == currentMissionType) + { + l->setisActive(true); + } + else + { + l->setisActive(false); + } + } + else//不知道这句对不对 + { + l->setisActive(false); + } + } + } + } } @@ -2167,22 +2198,7 @@ void OPMapWidget::WPGroup(int value) } } - - //按照当前的组生成新的航点和航线 - /* - WPDeleteAll(); - - QMap group; - - group = waypointgroups.value(currentGroup); - */ - - - - - update(); - } @@ -2222,12 +2238,14 @@ void OPMapWidget::receivedPoint(float param1,float param2,float param3,float par //emit showMessage(tr("recieve way point %1").arg(seq + 1)); - emit showMessage(tr("收到航点 %1").arg(seq + 1)); + emit showMessage(tr("recieve way point group:%1 seq:%2").arg(mission_type).arg(seq + 1)); //qDebug() << "receivers Point" << x * 10e-8 << y * 10e-8 << 10e-8; bool isExist = false; + + foreach(QGraphicsItem * i, map->childItems()) { WayPointItem *w = qgraphicsitem_cast(i); if (w) { @@ -2269,26 +2287,24 @@ void OPMapWidget::receivedPoint(float param1,float param2,float param3,float par } } + if(!isExist) { - - - internals::PointLatLng LatLng; LatLng.SetLat(x * 10e-8); LatLng.SetLng(y * 10e-8); - //设置好当前的航线 - currentGroup = mission_type; + //获取当前组下面的seq最大值 + WayPointItem *Item = new WayPointItem(LatLng, z,seq+1,mission_type, map); + ConnectWP(Item); + Item->setParentItem(map); + Item->SetMissionType(mission_type); + int position = Item->Number(); + emit WPCreated(position, Item); + setOverlayOpacity(overlayOpacity); - //生成的时候默认设定不对,导致下载时切换过去 - WayPointItem *Item = WPCreate(LatLng,z); - - Item->SetNumber(seq+1); - - qDebug() << "waypoint not exist:" << Item->Number() << seq+1 <emitWPProperty(); + qDebug() << "waypoint not exist:" << Item->Number() << seq+1 <Number() - 1); - if(w_last) - { - WPLineCreate(w_last,Item,Qt::green,false,2); - } - WayPointItem *w_next = WPFind(group,Item->Number() + 1); - if(w_next) - { - WPLineCreate(item,w_next,Qt::green,false,2); - } - */ + WayPointItem *w_last = WPFind(Item->MissionType(),Item->Number() - 1); + if(w_last) + { + WPLineCreate(w_last,Item,Qt::green,false,2); + } } qDebug() << "Exist" << isExist; diff --git a/opmap/mapwidget/waypointitem.cpp b/opmap/mapwidget/waypointitem.cpp index 332cf9f..6fda543 100644 --- a/opmap/mapwidget/waypointitem.cpp +++ b/opmap/mapwidget/waypointitem.cpp @@ -687,7 +687,7 @@ void WayPointItem::setWPProperty(float param1,float param2,float param3,float pa uint8_t autocontinue, uint8_t mission_type) { - if(seq == property.seq) + if((seq == property.seq)&&(property.mission_type == mission_type)) { qDebug() << seq << "set property";