tan2函数除零判断
This commit is contained in:
@@ -135,6 +135,7 @@ void CommandUI::mousePressEvent(QMouseEvent *event)
|
||||
{
|
||||
QFileDialog *dlg = new QFileDialog();
|
||||
|
||||
//dlg->show();
|
||||
|
||||
QString fileName = dlg->getOpenFileName(this, tr("Selete Command File..."),
|
||||
"./commands/",
|
||||
@@ -694,6 +695,7 @@ void CommandUI::commandAccepted(bool flag,uint16_t command,uint8_t result)
|
||||
if(string.size() > 0)
|
||||
{
|
||||
|
||||
/*
|
||||
QVariant flag;
|
||||
Config *cfg = new Config();
|
||||
|
||||
@@ -706,7 +708,9 @@ void CommandUI::commandAccepted(bool flag,uint16_t command,uint8_t result)
|
||||
tts->deleteLater();
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
say(string);
|
||||
emit showMessage(string);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -104,6 +104,8 @@ signals:
|
||||
void searchallUav(void);
|
||||
*/
|
||||
|
||||
void say(QString str);
|
||||
|
||||
private slots:
|
||||
void updateUI(void);
|
||||
|
||||
|
||||
@@ -245,12 +245,16 @@ void StateWidget::setValue(QString s)
|
||||
}
|
||||
|
||||
|
||||
|
||||
//设置颜色会造成死机
|
||||
bool flag = false;
|
||||
double num = s.toDouble(&flag);
|
||||
|
||||
double value = (qIsNaN(num))?(0):(num);
|
||||
|
||||
|
||||
//qDebug() << "num" << num << "value" << value;
|
||||
|
||||
/*
|
||||
if(bar)
|
||||
{
|
||||
|
||||
@@ -269,6 +273,7 @@ void StateWidget::setValue(QString s)
|
||||
|
||||
bar->setValue(value);
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
if(flag)//number
|
||||
@@ -308,6 +313,34 @@ void StateWidget::setValue(QString s)
|
||||
}
|
||||
}
|
||||
else //not a number
|
||||
{
|
||||
if(s.contains('|'))
|
||||
{
|
||||
QStringList list = s.split('|');
|
||||
//qDebug() << list;
|
||||
qreal last = 0;
|
||||
bool isDiff = false;
|
||||
foreach (QString ss, list) {
|
||||
bool nflag = false;
|
||||
qreal nn = ss.toDouble(&nflag);
|
||||
|
||||
if(nflag)
|
||||
{
|
||||
isDiff = (qAbs(nn - last) > 1.0)?(true):(false);
|
||||
}
|
||||
last = nn;
|
||||
}
|
||||
|
||||
if(isDiff)
|
||||
{
|
||||
setColor(state::red);
|
||||
}
|
||||
else
|
||||
{
|
||||
setColor(state::green);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(stateMap.keys().contains(s))
|
||||
{
|
||||
@@ -318,6 +351,7 @@ void StateWidget::setValue(QString s)
|
||||
setColor(state::gray);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -91,7 +91,9 @@ StatusUI::StatusUI(QWidget *parent) :
|
||||
{"解除|工作",StateWidget::state::red},
|
||||
{"解除|上锁",StateWidget::state::orange}});
|
||||
install(state,0,"加速度采集",0);
|
||||
//install(state,0,"开伞状态",0);
|
||||
install(state,0,"点火状态",0,
|
||||
QMap<QVariant, StateWidget::state>{{"未点火",StateWidget::state::gray},
|
||||
{"点火成功",StateWidget::state::green}});
|
||||
|
||||
install(battery,0,"飞控电压[V]",0,
|
||||
QMap<QVariant, StateWidget::state>{{23,StateWidget::state::red},
|
||||
@@ -247,24 +249,28 @@ bool StatusUI::addGroup(int index)
|
||||
return flag;
|
||||
}
|
||||
|
||||
void StatusUI::install(StateGroup *group,int flag, QString name, QVariant value,QMap<QVariant,StateWidget::state> stats)
|
||||
StateWidget * StatusUI::install(StateGroup *group,int flag, QString name, QVariant value,QMap<QVariant,StateWidget::state> stats)
|
||||
{
|
||||
StateWidget *w = new StateWidget(flag,name,value,StateWidget::state::gray,group->count());
|
||||
|
||||
w->setStats(stats);
|
||||
|
||||
group->addItem(w);
|
||||
|
||||
return w;
|
||||
}
|
||||
|
||||
void StatusUI::install(StateGroup *group,int flag, QString name, QVariant value)
|
||||
StateWidget *StatusUI::install(StateGroup *group,int flag, QString name, QVariant value)
|
||||
{
|
||||
StateWidget *w = new StateWidget(flag,name,value,StateWidget::state::gray,group->count());
|
||||
|
||||
group->addItem(w);
|
||||
|
||||
return w;
|
||||
}
|
||||
|
||||
|
||||
void StatusUI::install(int index,int flag, QString name, QVariant value)
|
||||
StateWidget * StatusUI::install(int index,int flag, QString name, QVariant value)
|
||||
{
|
||||
StateGroup *group = GroupList.value(index);
|
||||
|
||||
@@ -282,6 +288,8 @@ void StatusUI::install(int index,int flag, QString name, QVariant value)
|
||||
StateWidget *w = new StateWidget(flag,name,value,StateWidget::state::gray,group->count());
|
||||
|
||||
group->addItem(w);
|
||||
|
||||
return w;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -47,9 +47,9 @@ private slots:
|
||||
|
||||
bool addGroup(int index);
|
||||
|
||||
void install(StateGroup *group, int flag, QString name, QVariant value, QMap<QVariant, StateWidget::state> stats);
|
||||
void install(StateGroup *group,int flag, QString name, QVariant value);
|
||||
void install(int index,int flag, QString name, QVariant value);
|
||||
StateWidget *install(StateGroup *group, int flag, QString name, QVariant value, QMap<QVariant, StateWidget::state> stats);
|
||||
StateWidget *install(StateGroup *group,int flag, QString name, QVariant value);
|
||||
StateWidget *install(int index,int flag, QString name, QVariant value);
|
||||
|
||||
protected:
|
||||
void resizeEvent(QResizeEvent *event);
|
||||
|
||||
@@ -250,164 +250,3 @@ void Senser::setDAS(int source,int pos,QVariant value)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void Senser::setINSState(int source,int pos,state value)
|
||||
{
|
||||
if(source == 1)
|
||||
{
|
||||
switch (pos) {
|
||||
case 1:
|
||||
setColor(ui->label_1_svn,value);
|
||||
break;
|
||||
case 2:
|
||||
setColor(ui->label_1_BIT,value);
|
||||
break;
|
||||
case 3:
|
||||
setColor(ui->label_1_AttitudeStatus,value);
|
||||
break;
|
||||
case 4:
|
||||
setColor(ui->label_1_HeadingStatus,value);
|
||||
break;
|
||||
case 5:
|
||||
setColor(ui->label_1_SpeedStatus,value);
|
||||
break;
|
||||
case 6:
|
||||
setColor(ui->label_1_PositionStatus,value);
|
||||
break;
|
||||
case 7:
|
||||
setColor(ui->label_1_System,value);
|
||||
break;
|
||||
case 8:
|
||||
setColor(ui->label_1_COM,value);
|
||||
break;
|
||||
case 9:
|
||||
setColor(ui->label_1_GPS,value);
|
||||
break;
|
||||
case 10:
|
||||
setColor(ui->label_1_lng,value);
|
||||
break;
|
||||
case 11:
|
||||
setColor(ui->label_1_lat,value);
|
||||
break;
|
||||
case 12:
|
||||
setColor(ui->label_1_alt,value);
|
||||
break;
|
||||
case 13:
|
||||
setColor(ui->label_1_gs,value);
|
||||
break;
|
||||
case 14:
|
||||
setColor(ui->label_1_rol,value);
|
||||
break;
|
||||
case 15:
|
||||
setColor(ui->label_1_pit,value);
|
||||
break;
|
||||
case 16:
|
||||
setColor(ui->label_1_yaw,value);
|
||||
break;
|
||||
case 17:
|
||||
setColor(ui->label_1_heading,value);
|
||||
break;
|
||||
case 18:
|
||||
setColor(ui->label_1_p,value);
|
||||
break;
|
||||
case 19:
|
||||
setColor(ui->label_1_q,value);
|
||||
break;
|
||||
case 20:
|
||||
setColor(ui->label_1_r,value);
|
||||
break;
|
||||
case 21:
|
||||
setColor(ui->label_1_ax,value);
|
||||
break;
|
||||
case 22:
|
||||
setColor(ui->label_1_ay,value);
|
||||
break;
|
||||
case 23:
|
||||
setColor(ui->label_1_az,value);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(source == 2)
|
||||
{
|
||||
switch (pos) {
|
||||
case 1:
|
||||
setColor(ui->label_2_svn,value);
|
||||
break;
|
||||
case 2:
|
||||
setColor(ui->label_2_BIT,value);
|
||||
break;
|
||||
case 3:
|
||||
setColor(ui->label_2_AttitudeStatus,value);
|
||||
break;
|
||||
case 4:
|
||||
setColor(ui->label_2_HeadingStatus,value);
|
||||
break;
|
||||
case 5:
|
||||
setColor(ui->label_2_SpeedStatus,value);
|
||||
break;
|
||||
case 6:
|
||||
setColor(ui->label_2_PositionStatus,value);
|
||||
break;
|
||||
case 7:
|
||||
setColor(ui->label_2_System,value);
|
||||
break;
|
||||
case 8:
|
||||
setColor(ui->label_2_COM,value);
|
||||
break;
|
||||
case 9:
|
||||
setColor(ui->label_2_GPS,value);
|
||||
break;
|
||||
case 10:
|
||||
setColor(ui->label_2_lng,value);
|
||||
break;
|
||||
case 11:
|
||||
setColor(ui->label_2_lat,value);
|
||||
break;
|
||||
case 12:
|
||||
setColor(ui->label_2_alt,value);
|
||||
break;
|
||||
case 13:
|
||||
setColor(ui->label_2_gs,value);
|
||||
break;
|
||||
case 14:
|
||||
setColor(ui->label_2_rol,value);
|
||||
break;
|
||||
case 15:
|
||||
setColor(ui->label_2_pit,value);
|
||||
break;
|
||||
case 16:
|
||||
setColor(ui->label_2_yaw,value);
|
||||
break;
|
||||
case 17:
|
||||
setColor(ui->label_2_heading,value);
|
||||
break;
|
||||
case 18:
|
||||
setColor(ui->label_2_p,value);
|
||||
break;
|
||||
case 19:
|
||||
setColor(ui->label_2_q,value);
|
||||
break;
|
||||
case 20:
|
||||
setColor(ui->label_2_r,value);
|
||||
break;
|
||||
case 21:
|
||||
setColor(ui->label_2_ax,value);
|
||||
break;
|
||||
case 22:
|
||||
setColor(ui->label_2_ay,value);
|
||||
break;
|
||||
case 23:
|
||||
setColor(ui->label_2_az,value);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -19,9 +19,6 @@ public:
|
||||
void setINS(int source,int pos,QVariant value);
|
||||
void setDAS(int source,int pos,QVariant value);
|
||||
|
||||
|
||||
void setINSState(int source,int pos,state value);
|
||||
|
||||
private slots:
|
||||
|
||||
protected:
|
||||
|
||||
+272
-150
@@ -14,8 +14,18 @@ bool getBit(uint32_t d,int32_t pos)
|
||||
return bit;
|
||||
}
|
||||
|
||||
float to360deg(float raw)
|
||||
float to360deg(float data)
|
||||
{
|
||||
|
||||
|
||||
float raw = qIsNaN(data)?(0):(data);
|
||||
|
||||
if((data > 720)||(data < -720))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
float angle = 0;
|
||||
|
||||
if(raw > 360)
|
||||
@@ -229,7 +239,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
|
||||
|
||||
connect(dlink->mavlinknode,SIGNAL(addVehicles(int,int)),
|
||||
toolsui->command,SLOT(addVehicles(int,int)),Qt::DirectConnection);
|
||||
toolsui->command,SLOT(addVehicles(int,int)));
|
||||
|
||||
connect(toolsui->command,SIGNAL(WriteCmd(uint8_t,uint8_t,const char*,uint8_t,float)),
|
||||
dlink->mavlinknode->Parameter,SLOT(WriteCmd(uint8_t,uint8_t,const char*,uint8_t,float)),Qt::DirectConnection);
|
||||
@@ -240,7 +250,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
//command ----- map
|
||||
|
||||
connect(dlink->mavlinknode,SIGNAL(addVehicles(int,int)),
|
||||
commandUI,SLOT(addVehicles(int,int)),Qt::DirectConnection);
|
||||
commandUI,SLOT(addVehicles(int,int)));
|
||||
|
||||
connect(map,SIGNAL(PointNumber(QList<int>)),
|
||||
commandUI,SLOT(setPointCount(QList<int>)));
|
||||
@@ -270,8 +280,13 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
connect(dlink->mavlinknode,SIGNAL(signal_servo_output_raw(mavlink_servo_output_raw_t )),
|
||||
this,SLOT(update_servo_output_raw(mavlink_servo_output_raw_t )));
|
||||
|
||||
qRegisterMetaType<mavlink_ins1_t>("mavlink_ins1_t");
|
||||
connect(dlink->mavlinknode,SIGNAL(signal_ins1(mavlink_ins1_t)),
|
||||
this,SLOT(ins1_Update(mavlink_ins1_t)));
|
||||
|
||||
|
||||
qRegisterMetaType<mavlink_ins2_t>("mavlink_ins2_t");
|
||||
connect(dlink->mavlinknode,SIGNAL(signal_ins2(mavlink_ins2_t)),
|
||||
this,SLOT(ins2_Update(mavlink_ins2_t)));
|
||||
|
||||
|
||||
//this ----- map
|
||||
@@ -280,7 +295,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
|
||||
//tools ----- map
|
||||
connect(dlink->mavlinknode,SIGNAL(recievemsg(mavlink_message_t)),
|
||||
toolsui->index0->mavlinkinspector,SLOT(receiveMessage(mavlink_message_t)),Qt::DirectConnection);
|
||||
toolsui->index0->mavlinkinspector,SLOT(receiveMessage(mavlink_message_t)));
|
||||
|
||||
//dlink ----- tools
|
||||
connect(toolsui->index2,SIGNAL(setPlay(bool)),
|
||||
@@ -299,10 +314,10 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
|
||||
|
||||
connect(dlink->mavlinknode->replay,SIGNAL(currentPercentage(float)),
|
||||
toolsui->index2,SLOT(setCurrentPercentage(float)),Qt::DirectConnection);
|
||||
toolsui->index2,SLOT(setCurrentPercentage(float)));
|
||||
|
||||
connect(dlink->mavlinknode->replay,SIGNAL(replayComplete()),
|
||||
toolsui->index2,SLOT(ReplayComplete()),Qt::DirectConnection);
|
||||
toolsui->index2,SLOT(ReplayComplete()));
|
||||
|
||||
|
||||
|
||||
@@ -318,7 +333,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
|
||||
//dlink --- toolui-index3
|
||||
connect(dlink->mavlinknode->Terminal,SIGNAL(Recieve(QString)),
|
||||
toolsui->index3,SLOT(Recieve(QString)),Qt::DirectConnection);
|
||||
toolsui->index3,SLOT(Recieve(QString)));
|
||||
|
||||
connect(toolsui->index3,SIGNAL(Terminal_Transmit(QString)),
|
||||
dlink->mavlinknode->Terminal,SLOT(Transmit(QString)),Qt::DirectConnection);
|
||||
@@ -394,7 +409,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
setting->index1->paramInspect,SLOT(appendParameter(mavlink_message_t)));
|
||||
|
||||
connect(dlink->mavlinknode,SIGNAL(addVehicles(int,int)),
|
||||
setting->index1->paramInspect,SLOT(addVehicles(int,int)),Qt::DirectConnection);
|
||||
setting->index1->paramInspect,SLOT(addVehicles(int,int)));
|
||||
|
||||
connect(setting->index1->paramInspect,SIGNAL(ReadCmd(uint8_t,uint8_t,uint8_t)),
|
||||
dlink->mavlinknode->Parameter,SLOT(ReadCmd(uint8_t,uint8_t,uint8_t)),Qt::DirectConnection);
|
||||
@@ -465,7 +480,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
dlink->mavlinknode,SLOT(setCurrentSelected(int,int)),Qt::DirectConnection);
|
||||
|
||||
connect(dlink->mavlinknode->Mission,SIGNAL(sendItemOK(uint16_t,bool)),
|
||||
map,SLOT(WPSendItemOK(uint16_t,bool)),Qt::DirectConnection);
|
||||
map,SLOT(WPSendItemOK(uint16_t,bool)));
|
||||
|
||||
//航点确认窗口
|
||||
connect(map,SIGNAL(setCurrent(int)),
|
||||
@@ -479,11 +494,11 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
|
||||
|
||||
connect(dlink->mavlinknode->Mission,SIGNAL(currentPoint(int)),
|
||||
map,SLOT(WPSetCurrent(int)),Qt::DirectConnection);
|
||||
map,SLOT(WPSetCurrent(int)));
|
||||
|
||||
|
||||
connect(dlink->mavlinknode->Mission,SIGNAL(currentPoint(int)),
|
||||
menuBarUI,SLOT(setTargetPoint(int)),Qt::DirectConnection);
|
||||
menuBarUI,SLOT(setTargetPoint(int)));
|
||||
/*
|
||||
connect(dlink->mavlinknode->Mission,SIGNAL(currentPoint(int)),
|
||||
toolsui->diagram,SLOT(setTargetPoint(int)),Qt::DirectConnection);
|
||||
@@ -498,7 +513,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
|
||||
connect(setting->index0->globalsetting,SIGNAL(showMessage(QString,int)),this,SLOT(showMessage(QString,int)));
|
||||
|
||||
|
||||
connect(commandUI,&CommandUI::say,this,&MainWindow::TTSsay);
|
||||
|
||||
//connect(menuBarUI,SIGNAL(NewMessage(QString)),toolsui->index1,SLOT(setLog(QString)),Qt::DirectConnection);
|
||||
|
||||
@@ -596,6 +611,23 @@ void MainWindow::setTTS(QVariant state)
|
||||
|
||||
}
|
||||
|
||||
void MainWindow::TTSsay(QString str)
|
||||
{
|
||||
//把要说的话加入队列
|
||||
if(isEnableTTS)
|
||||
{
|
||||
if(tts)
|
||||
{
|
||||
if(tts->state() == QTextToSpeech::Ready)
|
||||
{
|
||||
tts->say(str);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::closeEvent(QCloseEvent *event)
|
||||
{
|
||||
event->accept();
|
||||
@@ -690,6 +722,8 @@ void MainWindow::mousePressEvent(QMouseEvent* event)
|
||||
resizeEvent(nullptr);
|
||||
|
||||
}
|
||||
qreal pitch = 0;
|
||||
qreal roll = 0;
|
||||
|
||||
void MainWindow::keyPressEvent(QKeyEvent *event) //键盘按下事件
|
||||
{
|
||||
@@ -699,15 +733,19 @@ void MainWindow::keyPressEvent(QKeyEvent *event) //键盘按下事件
|
||||
{
|
||||
case Qt::Key_Up:
|
||||
qDebug() << "Key_Up";
|
||||
pitch += 0.1;
|
||||
break;
|
||||
case Qt::Key_Down:
|
||||
qDebug() << "Key_Down";
|
||||
pitch -= 0.1;
|
||||
break;
|
||||
case Qt::Key_Left:
|
||||
qDebug() << "Key_Left";
|
||||
roll += 0.1;
|
||||
break;
|
||||
case Qt::Key_Right:
|
||||
qDebug() << "Key_Right";
|
||||
roll -= 0.1;
|
||||
break;
|
||||
case Qt::Key_D:
|
||||
if(event->modifiers() == Qt::AltModifier)
|
||||
@@ -797,6 +835,8 @@ void MainWindow::keyPressEvent(QKeyEvent *event) //键盘按下事件
|
||||
break;
|
||||
}
|
||||
|
||||
//updateUI();
|
||||
|
||||
QWidget::keyPressEvent(event);
|
||||
}
|
||||
|
||||
@@ -896,6 +936,8 @@ void MainWindow::onTabIndexChanged(const int &index)//界面选择管理
|
||||
else toolsui->hide();
|
||||
|
||||
|
||||
|
||||
|
||||
resizeEvent(nullptr);
|
||||
}
|
||||
|
||||
@@ -932,17 +974,8 @@ void MainWindow::setCommunicationLostState(bool flag)
|
||||
if(last != flag)
|
||||
{
|
||||
showMessage(tr("Communication Lost"),3000);
|
||||
TTSsay(tr("Communication Lost"));
|
||||
|
||||
if(isEnableTTS)
|
||||
{
|
||||
if(tts)
|
||||
{
|
||||
if(tts->state() == QTextToSpeech::Ready)
|
||||
{
|
||||
tts->say(tr("Communication Lost"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
healthui->setFailure();
|
||||
@@ -954,16 +987,8 @@ void MainWindow::setCommunicationLostState(bool flag)
|
||||
if(last != flag)
|
||||
{
|
||||
showMessage(tr("Communication Regain"),3000);
|
||||
if(isEnableTTS)
|
||||
{
|
||||
if(tts)
|
||||
{
|
||||
if(tts->state() == QTextToSpeech::Ready)
|
||||
{
|
||||
tts->say(tr("Communication Regain"));
|
||||
}
|
||||
}
|
||||
}
|
||||
TTSsay(tr("Communication Regain"));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1107,6 +1132,7 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
{
|
||||
int currentUAV = map->getUAVCurrent();
|
||||
|
||||
/*
|
||||
if(currentUAV < 1)//滤掉错值
|
||||
{
|
||||
return;
|
||||
@@ -1116,7 +1142,9 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
{
|
||||
return;
|
||||
}
|
||||
*/
|
||||
|
||||
//qDebug()<<"updeta";
|
||||
|
||||
//设置舵机显示
|
||||
//update_servo_output_raw(dlink->mavlinknode->vehicleList.value(currentUAV).servo_output_raw);
|
||||
@@ -1134,10 +1162,17 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
|
||||
frq_time = QDateTime::currentMSecsSinceEpoch();
|
||||
|
||||
|
||||
copk->setAttitude(dlink->mavlinknode->vehicleList.value(currentUAV).attitude.pitch * 57.3,
|
||||
dlink->mavlinknode->vehicleList.value(currentUAV).attitude.roll * 57.3,
|
||||
dlink->mavlinknode->vehicleList.value(currentUAV).attitude.yaw * 57.3);
|
||||
|
||||
/*
|
||||
copk->setAttitude(pitch,
|
||||
roll,
|
||||
0);
|
||||
*/
|
||||
|
||||
|
||||
copk->setAltitude(dlink->mavlinknode->vehicleList.value(currentUAV).global_position_int.alt * 10e-4);
|
||||
copk->setAltitudeTarget(dlink->mavlinknode->vehicleList.value(currentUAV).global_position_int.alt * 10e-4
|
||||
@@ -1182,7 +1217,7 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
}
|
||||
|
||||
copk->setAOA(dlink->mavlinknode->vehicleList.value(currentUAV).emb_atom_com.alpha);
|
||||
copk->setOL(dlink->mavlinknode->vehicleList.value(currentUAV).ins1.az/(-9.8));
|
||||
//copk->setOL(dlink->mavlinknode->vehicleList.value(currentUAV).ins1.az/(-9.8));
|
||||
|
||||
|
||||
copk->setVerticalSpeed(-dlink->mavlinknode->vehicleList.value(currentUAV).global_position_int.vz * 10e-3);//速度朝下为正
|
||||
@@ -1209,22 +1244,23 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
gps_str.append(tr("%1D[%2]").arg(dlink->mavlinknode->vehicleList.value(currentUAV).gps_raw_int.fix_type).arg(dlink->mavlinknode->vehicleList.value(currentUAV).gps_raw_int.satellites_visible));
|
||||
gps_str.append(tr("%1D").arg(dlink->mavlinknode->vehicleList.value(currentUAV).gps_raw_int.fix_type));
|
||||
break;
|
||||
case 4:
|
||||
gps_str.append(tr("DGPS[%1]").arg(dlink->mavlinknode->vehicleList.value(currentUAV).gps_raw_int.satellites_visible));
|
||||
gps_str.append(tr("DGPS"));
|
||||
break;
|
||||
case 5:
|
||||
gps_str.append(tr("FLOAT[%1]").arg(dlink->mavlinknode->vehicleList.value(currentUAV).gps_raw_int.satellites_visible));
|
||||
gps_str.append(tr("FLOAT"));
|
||||
break;
|
||||
case 6:
|
||||
gps_str.append(tr("INT[%1]").arg(dlink->mavlinknode->vehicleList.value(currentUAV).gps_raw_int.satellites_visible));
|
||||
gps_str.append(tr("INT"));
|
||||
break;
|
||||
default:
|
||||
gps_str.append(tr("%1").arg(dlink->mavlinknode->vehicleList.value(currentUAV).gps_raw_int.fix_type));
|
||||
gps_str.append(tr("GPS %1").arg(dlink->mavlinknode->vehicleList.value(currentUAV).gps_raw_int.fix_type));
|
||||
break;
|
||||
}
|
||||
copk->setGPS(gps_str);
|
||||
copk->setSVN(dlink->mavlinknode->vehicleList.value(currentUAV).gps_raw_int.satellites_visible);
|
||||
|
||||
|
||||
QString arm_str;
|
||||
@@ -1275,7 +1311,7 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
default:
|
||||
break;
|
||||
}
|
||||
copk->setState(arm_str);
|
||||
copk->setARM(arm_str);
|
||||
|
||||
uint32_t custommode = dlink->mavlinknode->vehicleList.value(currentUAV).heartbeat.custom_mode;
|
||||
|
||||
@@ -1353,30 +1389,39 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
copk->setMode(mode_str);
|
||||
|
||||
|
||||
QString state_str;
|
||||
switch (dlink->mavlinknode->vehicleList.value(currentUAV).extended_sys_state.landed_state) {
|
||||
default:
|
||||
case MAV_LANDED_STATE_UNDEFINED:
|
||||
state_str = tr("undef");
|
||||
break;
|
||||
case MAV_LANDED_STATE_ON_GROUND:
|
||||
state_str = tr("onGround");
|
||||
break;
|
||||
case MAV_LANDED_STATE_IN_AIR:
|
||||
state_str = tr("inAir");
|
||||
break;
|
||||
case MAV_LANDED_STATE_TAKEOFF:
|
||||
state_str = tr("TakeOff");
|
||||
break;
|
||||
case MAV_LANDED_STATE_LANDING:
|
||||
state_str = tr("Landing");
|
||||
break;
|
||||
}
|
||||
|
||||
copk->setState(state_str);
|
||||
|
||||
|
||||
//这里会一直生成一个,导致无法释放
|
||||
if(isStateChanged == true)
|
||||
{
|
||||
if(isEnableTTS)
|
||||
{
|
||||
if(tts)
|
||||
{
|
||||
if(tts->state() == QTextToSpeech::Ready)
|
||||
tts->say(arm_str);
|
||||
}
|
||||
}
|
||||
TTSsay(arm_str);
|
||||
}
|
||||
|
||||
if(isCustomChanged == true)
|
||||
{
|
||||
mode_str.append(tr("flight mode"));
|
||||
if(isEnableTTS)
|
||||
{
|
||||
if(tts)
|
||||
{
|
||||
if(tts->state() == QTextToSpeech::Ready)
|
||||
tts->say(mode_str);
|
||||
}
|
||||
}
|
||||
TTSsay(mode_str);
|
||||
}
|
||||
|
||||
//经纬度大于正常值,将舍弃
|
||||
@@ -1447,8 +1492,8 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
healthui->setColor(8,getBit(enabled,1)?(getBit(enabled,0)?(HealthUI::state::success):(HealthUI::state::warning)):(HealthUI::state::failure));//record
|
||||
healthui->setColor(9,getBit(enabled,2)?(HealthUI::state::success):(HealthUI::state::inital));//正在记录,未记录
|
||||
healthui->setValue(9,getBit(enabled,2)?(tr("正在写入")):(tr("停止写入")));//sel
|
||||
healthui->setColor(10,getBit(health,9)?(HealthUI::state::success):(HealthUI::state::warning));//内置大气:外置大气
|
||||
healthui->setValue(10,getBit(enabled,9)?(tr("内置大气")):(tr("外置大气")));//sel
|
||||
healthui->setColor(10,getBit(health,13)?(HealthUI::state::success):(HealthUI::state::warning));//内置大气:外置大气
|
||||
healthui->setValue(10,getBit(health,13)?(tr("内置大气")):(tr("外置大气")));//sel
|
||||
|
||||
healthui->setColor(11,getBit(health,15)?(HealthUI::state::failure):(HealthUI::state::inital));//气囊盖
|
||||
healthui->setColor(12,getBit(health,16)?(HealthUI::state::failure):(HealthUI::state::inital));//充气
|
||||
@@ -1464,22 +1509,40 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
healthui->setColor(20,getBit(health,27)?(HealthUI::state::success):(HealthUI::state::failure));//侧滑角
|
||||
|
||||
|
||||
|
||||
|
||||
statusui->setValue(4,2,getBit(health,19)?(tr("已采集")):(tr("未采集")));
|
||||
statusui->setValue(4,3,getBit(health,14)?(tr("点火成功")):(tr("未点火")));
|
||||
|
||||
//===================status ui =============================================
|
||||
|
||||
//========================0
|
||||
statusui->setValue(0,0,mode_str);
|
||||
//========================1
|
||||
statusui->setValue(1,0,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).emb_atom_com.alpha,'f',1));
|
||||
statusui->setValue(1,1,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).emb_atom_com.beta,'f',1));
|
||||
|
||||
|
||||
statusui->setValue(1,2,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).attitude.roll * 57.3,'f',1));
|
||||
statusui->setValue(1,3,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).attitude.pitch * 57.3,'f',1));
|
||||
statusui->setValue(1,4,QString::number(to360deg(dlink->mavlinknode->vehicleList.value(currentUAV).gps_raw_int.cog * 0.01),'f',1));
|
||||
statusui->setValue(1,4,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).gps_raw_int.cog * 0.01,'f',1));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
statusui->setValue(1,5,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).gps_raw_int.alt * 10e-4,'f',1));
|
||||
statusui->setValue(1,6,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).vfr_hud.airspeed,'f',1));
|
||||
statusui->setValue(1,7,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).emb_atom_com.Airspeed,'f',1));
|
||||
statusui->setValue(1,8,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).gps_raw_int.vel * 10e-3,'f',1));
|
||||
statusui->setValue(1,9,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).emb_atom_com.mach,'f',2));
|
||||
statusui->setValue(1,10,QString::number(-dlink->mavlinknode->vehicleList.value(currentUAV).global_position_int.vz * 10e-3,'f',1));
|
||||
|
||||
|
||||
|
||||
|
||||
//========================3
|
||||
/*
|
||||
statusui->setValue(3,0,(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.sys_status & 0x80)?(tr("有效")):(tr("无效")));
|
||||
//statusui->setValue(3,1,(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.sys_status & 0x40)?(tr("有效")):(tr("无效")));
|
||||
//statusui->setValue(3,2,(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.sys_status & 0x20)?(tr("有效")):(tr("无效")));
|
||||
@@ -1542,7 +1605,7 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
//statusui->setValue(3,11,(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.gps_status & 0x80)?(tr("正常")):(tr("故障")));
|
||||
//statusui->setValue(3,12,(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.gps_status & 0x40)?(tr("正常")):(tr("故障")));
|
||||
//statusui->setValue(3,13,(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.gps_status & 0x20)?(tr("差分")):(tr("非差分")));
|
||||
|
||||
*/
|
||||
//========================4
|
||||
|
||||
QString throwkey;
|
||||
@@ -1555,40 +1618,38 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
throwkey.append((dlink->mavlinknode->vehicleList.value(currentUAV).rpm.rpm5 == 0)?(tr("工作")):(tr("上锁")));
|
||||
statusui->setValue(4,1,throwkey);
|
||||
|
||||
//statusui->setValue(4,2,(dlink->mavlinknode->vehicleList.value(currentUAV).rpm.rpm5 == 1)?(tr("已触发")):(tr("未触发")));
|
||||
//========================5
|
||||
|
||||
//========================5 battery
|
||||
statusui->setValue(5,0,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).sys_status.voltage_battery * 0.001,'f',1));
|
||||
statusui->setValue(5,1,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).battery_status.voltages[2] * 0.001,'f',1));
|
||||
//========================6
|
||||
//========================6 dlink
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
QString Fix;
|
||||
switch (dlink->mavlinknode->vehicleList.value(currentUAV).gps_raw_int.fix_type) {
|
||||
case 0:
|
||||
case 1:
|
||||
Fix.append(tr("GPS Unlocated"));
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
Fix.append(tr("%1D").arg(dlink->mavlinknode->vehicleList.value(currentUAV).gps_raw_int.fix_type));
|
||||
break;
|
||||
case 4:
|
||||
Fix.append(tr("fixed"));
|
||||
break;
|
||||
case 5:
|
||||
Fix.append(tr("float"));
|
||||
break;
|
||||
default:
|
||||
Fix.append(tr("%1").arg(dlink->mavlinknode->vehicleList.value(currentUAV).gps_raw_int.fix_type));
|
||||
break;
|
||||
toolsui->senser->setDAS(1,3,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).vfr_hud.alt,'f',1));
|
||||
toolsui->senser->setDAS(1,4,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).vfr_hud.airspeed,'f',1));
|
||||
toolsui->senser->setDAS(1,5,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).emb_atom_com.Airspeed,'f',1));
|
||||
toolsui->senser->setDAS(1,6,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).emb_atom_com.mach,'f',3));
|
||||
toolsui->senser->setDAS(1,7,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).emb_atom_com.qbar * 0.01,'f',3));
|
||||
toolsui->senser->setDAS(1,8,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).emb_atom_com.ps * 0.01,'f',3));
|
||||
|
||||
toolsui->senser->setDAS(2,1,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).emb_atom_com.alpha,'f',1));
|
||||
toolsui->senser->setDAS(2,2,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).emb_atom_com.beta,'f',1));
|
||||
//toolsui->senser->setDAS(2,3,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).emb_atom_com.));
|
||||
toolsui->senser->setDAS(2,4,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).vfr_hud.airspeed,'f',1));
|
||||
toolsui->senser->setDAS(2,7,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).scaled_pressure.press_diff,'f',3));
|
||||
toolsui->senser->setDAS(2,8,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).scaled_pressure.press_abs,'f',3));
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
void MainWindow::ins1_Update(mavlink_ins1_t ins)
|
||||
{
|
||||
|
||||
QString bit1;
|
||||
switch (dlink->mavlinknode->vehicleList.value(currentUAV).ins1.BIT & 0x0F) {
|
||||
switch (ins.BIT & 0x0F) {
|
||||
default:
|
||||
case 0:
|
||||
{
|
||||
@@ -1613,7 +1674,7 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
}
|
||||
|
||||
QString att1;
|
||||
if(dlink->mavlinknode->vehicleList.value(currentUAV).ins1.BIT & 0x10)
|
||||
if(ins.BIT & 0x10)
|
||||
{
|
||||
att1.append(tr("正常"));
|
||||
}
|
||||
@@ -1622,7 +1683,7 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
}
|
||||
|
||||
QString heading1;
|
||||
if(dlink->mavlinknode->vehicleList.value(currentUAV).ins1.BIT & 0x20)
|
||||
if(ins.BIT & 0x20)
|
||||
{
|
||||
heading1.append(tr("正常"));
|
||||
}
|
||||
@@ -1631,7 +1692,7 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
}
|
||||
|
||||
QString spd1;
|
||||
if(dlink->mavlinknode->vehicleList.value(currentUAV).ins1.BIT & 0x40)
|
||||
if(ins.BIT & 0x40)
|
||||
{
|
||||
spd1.append(tr("正常"));
|
||||
}
|
||||
@@ -1640,7 +1701,7 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
}
|
||||
|
||||
QString pos1;
|
||||
if(dlink->mavlinknode->vehicleList.value(currentUAV).ins1.BIT & 0x80)
|
||||
if(ins.BIT & 0x80)
|
||||
{
|
||||
pos1.append(tr("正常"));
|
||||
}
|
||||
@@ -1651,7 +1712,7 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
|
||||
|
||||
QString sys1;
|
||||
switch (dlink->mavlinknode->vehicleList.value(currentUAV).ins1.sys_status & 0x0F) {
|
||||
switch (ins.sys_status & 0x0F) {
|
||||
default:
|
||||
case 0:
|
||||
{
|
||||
@@ -1673,7 +1734,7 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
|
||||
|
||||
QString com1;
|
||||
switch (dlink->mavlinknode->vehicleList.value(currentUAV).ins1.com_status & 0x0F) {
|
||||
switch (ins.com_status & 0x0F) {
|
||||
default:
|
||||
case 0:
|
||||
{
|
||||
@@ -1695,7 +1756,7 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
|
||||
|
||||
QString gps1;
|
||||
switch (dlink->mavlinknode->vehicleList.value(currentUAV).ins1.gps_status) {
|
||||
switch (ins.gps_status) {
|
||||
case 0:
|
||||
gps1.append(tr("未定位"));
|
||||
case 1:
|
||||
@@ -1735,7 +1796,7 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
|
||||
|
||||
|
||||
toolsui->senser->setINS(1,1,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins1.satellites_visible));
|
||||
toolsui->senser->setINS(1,1,QString::number(ins.satellites_visible));
|
||||
toolsui->senser->setINS(1,2,bit1);//bit
|
||||
toolsui->senser->setINS(1,3,att1);//bit1
|
||||
toolsui->senser->setINS(1,4,heading1);//bit2
|
||||
@@ -1744,29 +1805,94 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
toolsui->senser->setINS(1,7,sys1);//sys
|
||||
toolsui->senser->setINS(1,8,com1);//com
|
||||
toolsui->senser->setINS(1,9,gps1);//gps
|
||||
toolsui->senser->setINS(1,10,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins1.lon,'f',8));
|
||||
toolsui->senser->setINS(1,11,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins1.lat,'f',8));
|
||||
toolsui->senser->setINS(1,12,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins1.alt,'f',1));
|
||||
toolsui->senser->setINS(1,13,QString::number(sqrt(pow(dlink->mavlinknode->vehicleList.value(currentUAV).ins1.v_north,2) +
|
||||
pow(dlink->mavlinknode->vehicleList.value(currentUAV).ins1.v_east,2) +
|
||||
pow(dlink->mavlinknode->vehicleList.value(currentUAV).ins1.v_up,2)),'f',1));
|
||||
toolsui->senser->setINS(1,14,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins1.roll * 57.3,'f',1));
|
||||
toolsui->senser->setINS(1,15,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins1.pitch * 57.3,'f',1));
|
||||
toolsui->senser->setINS(1,16,QString::number(to360deg(dlink->mavlinknode->vehicleList.value(currentUAV).ins1.yaw * 57.3),'f',1));
|
||||
toolsui->senser->setINS(1,17,QString::number(to360deg(atan2(dlink->mavlinknode->vehicleList.value(currentUAV).ins1.v_east,
|
||||
dlink->mavlinknode->vehicleList.value(currentUAV).ins1.v_north) * 57.3),'f',1));
|
||||
toolsui->senser->setINS(1,18,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins1.gx,'f',1));
|
||||
toolsui->senser->setINS(1,19,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins1.gy,'f',1));
|
||||
toolsui->senser->setINS(1,20,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins1.gz,'f',1));
|
||||
toolsui->senser->setINS(1,21,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins1.ax,'f',1));
|
||||
toolsui->senser->setINS(1,22,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins1.ay,'f',1));
|
||||
toolsui->senser->setINS(1,23,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins1.az,'f',1));
|
||||
toolsui->senser->setINS(1,10,QString::number(ins.lon,'f',8));
|
||||
toolsui->senser->setINS(1,11,QString::number(ins.lat,'f',8));
|
||||
toolsui->senser->setINS(1,12,QString::number(ins.alt,'f',1));
|
||||
toolsui->senser->setINS(1,13,QString::number(sqrt(pow(ins.v_north,2) +
|
||||
pow(ins.v_east,2) +
|
||||
pow(ins.v_up,2)),'f',1));
|
||||
toolsui->senser->setINS(1,14,QString::number(ins.roll * 57.3,'f',1));
|
||||
toolsui->senser->setINS(1,15,QString::number(ins.pitch * 57.3,'f',1));
|
||||
toolsui->senser->setINS(1,16,QString::number(to360deg(ins.yaw * 57.3),'f',1));
|
||||
/*
|
||||
toolsui->senser->setINS(1,17,QString::number(to360deg(atan2(ins.v_east,
|
||||
ins.v_north) * 57.3),'f',1));
|
||||
*/
|
||||
|
||||
if((ins.v_east != 0)||
|
||||
(ins.v_north != 0))
|
||||
{
|
||||
toolsui->senser->setINS(1,17,QString::number(to360deg(atan2(ins.v_east,
|
||||
ins.v_north) * 57.3),'f',1));
|
||||
}
|
||||
|
||||
toolsui->senser->setINS(1,18,QString::number(ins.gx,'f',1));
|
||||
toolsui->senser->setINS(1,19,QString::number(ins.gy,'f',1));
|
||||
toolsui->senser->setINS(1,20,QString::number(ins.gz,'f',1));
|
||||
toolsui->senser->setINS(1,21,QString::number(ins.ax,'f',1));
|
||||
toolsui->senser->setINS(1,22,QString::number(ins.ay,'f',1));
|
||||
toolsui->senser->setINS(1,23,QString::number(ins.az,'f',1));
|
||||
|
||||
|
||||
}
|
||||
|
||||
void MainWindow::ins2_Update(mavlink_ins2_t ins)
|
||||
{
|
||||
|
||||
//========================3
|
||||
statusui->setValue(3,0,(ins.sys_status & 0x80)?(tr("有效")):(tr("无效")));
|
||||
statusui->setValue(3,1,(ins.sys_status & 0x10)?(tr("有效")):(tr("无效")));
|
||||
|
||||
uint8_t com = (ins.com_status & 0x30) >> 4;
|
||||
QString com_str;
|
||||
com_str.clear();
|
||||
switch (com) {
|
||||
case 0:
|
||||
com_str = tr("准备");
|
||||
break;
|
||||
case 1:
|
||||
com_str = tr("对准中");
|
||||
break;
|
||||
case 2:
|
||||
com_str = tr("导航");
|
||||
break;
|
||||
case 3:
|
||||
com_str = tr("对准失败");
|
||||
break;
|
||||
default:
|
||||
com_str = tr("未知参数");
|
||||
break;
|
||||
}
|
||||
|
||||
statusui->setValue(3,2,com_str);
|
||||
|
||||
com = (ins.com_status & 0x0E) >> 1;
|
||||
com_str.clear();
|
||||
switch (com) {
|
||||
case 0:
|
||||
com_str = tr("未初始化");
|
||||
break;
|
||||
case 1:
|
||||
com_str = tr("INS/大气");
|
||||
break;
|
||||
case 2:
|
||||
com_str = tr("INS/DGPS");
|
||||
break;
|
||||
case 3:
|
||||
com_str = tr("INS/GNSS");
|
||||
break;
|
||||
case 5:
|
||||
com_str = tr("GNSS");
|
||||
break;
|
||||
default:
|
||||
com_str = tr("未知参数");
|
||||
break;
|
||||
}
|
||||
|
||||
statusui->setValue(3,3,com_str);
|
||||
|
||||
|
||||
|
||||
uint8_t com2 = (dlink->mavlinknode->vehicleList.value(currentUAV).ins2.com_status & 0x30) >> 4;
|
||||
uint8_t com2 = (ins.com_status & 0x30) >> 4;
|
||||
QString com2_str;
|
||||
com2_str.clear();
|
||||
switch (com2) {
|
||||
@@ -1788,7 +1914,7 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
}
|
||||
|
||||
|
||||
uint8_t gps2 = (dlink->mavlinknode->vehicleList.value(currentUAV).ins2.com_status & 0x0E) >> 1;
|
||||
uint8_t gps2 = (ins.com_status & 0x0E) >> 1;
|
||||
QString gps2_str;
|
||||
switch (gps2) {
|
||||
case 0:
|
||||
@@ -1813,52 +1939,48 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
|
||||
|
||||
|
||||
toolsui->senser->setINS(2,1,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.satellites_visible));
|
||||
toolsui->senser->setINS(2,2,(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.sys_status & 0x80)?(tr("有效")):(tr("无效")));
|
||||
toolsui->senser->setINS(2,3,(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.sys_status & 0x10)?(tr("有效")):(tr("无效")));//bit1
|
||||
toolsui->senser->setINS(2,4,(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.sys_status & 0x02)?(tr("有效")):(tr("无效")));//bit2
|
||||
toolsui->senser->setINS(2,5,(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.sys_status & 0x40)?(tr("有效")):(tr("无效")));//bit3
|
||||
toolsui->senser->setINS(2,6,(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.sys_status & 0x80)?(tr("有效")):(tr("无效")));//bit4
|
||||
toolsui->senser->setINS(2,1,QString::number(ins.satellites_visible));
|
||||
toolsui->senser->setINS(2,2,(ins.sys_status & 0x80)?(tr("有效")):(tr("无效")));
|
||||
toolsui->senser->setINS(2,3,(ins.sys_status & 0x10)?(tr("有效")):(tr("无效")));//bit1
|
||||
toolsui->senser->setINS(2,4,(ins.sys_status & 0x02)?(tr("有效")):(tr("无效")));//bit2
|
||||
toolsui->senser->setINS(2,5,(ins.sys_status & 0x40)?(tr("有效")):(tr("无效")));//bit3
|
||||
toolsui->senser->setINS(2,6,(ins.sys_status & 0x80)?(tr("有效")):(tr("无效")));//bit4
|
||||
//toolsui->senser->setINS(2,7,sys2);
|
||||
toolsui->senser->setINS(2,8,com2_str);
|
||||
toolsui->senser->setINS(2,9,gps2_str);
|
||||
toolsui->senser->setINS(2,10,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.lon,'f',8));
|
||||
toolsui->senser->setINS(2,11,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.lat,'f',8));
|
||||
toolsui->senser->setINS(2,12,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.alt,'f',1));
|
||||
toolsui->senser->setINS(2,13,QString::number(sqrt(pow(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.v_north,2) +
|
||||
pow(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.v_east,2) +
|
||||
pow(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.v_up,2)),'f',1));
|
||||
toolsui->senser->setINS(2,14,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.roll * 57.3,'f',1));
|
||||
toolsui->senser->setINS(2,15,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.pitch * 57.3,'f',1));
|
||||
toolsui->senser->setINS(2,16,QString::number(to360deg(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.yaw * 57.3),'f',1));
|
||||
toolsui->senser->setINS(2,17,QString::number(to360deg(atan2(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.v_east,
|
||||
dlink->mavlinknode->vehicleList.value(currentUAV).ins2.v_north) * 57.3),'f',1));
|
||||
toolsui->senser->setINS(2,18,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.gx,'f',1));
|
||||
toolsui->senser->setINS(2,19,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.gy,'f',1));
|
||||
toolsui->senser->setINS(2,20,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.gz,'f',1));
|
||||
toolsui->senser->setINS(2,21,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.ax,'f',1));
|
||||
toolsui->senser->setINS(2,22,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.ay,'f',1));
|
||||
toolsui->senser->setINS(2,23,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).ins2.az,'f',1));
|
||||
toolsui->senser->setINS(2,10,QString::number(ins.lon,'f',8));
|
||||
toolsui->senser->setINS(2,11,QString::number(ins.lat,'f',8));
|
||||
toolsui->senser->setINS(2,12,QString::number(ins.alt,'f',1));
|
||||
toolsui->senser->setINS(2,13,QString::number(sqrt(pow(ins.v_north,2) +
|
||||
pow(ins.v_east,2) +
|
||||
pow(ins.v_up,2)),'f',1));
|
||||
toolsui->senser->setINS(2,14,QString::number(ins.roll * 57.3,'f',1));
|
||||
toolsui->senser->setINS(2,15,QString::number(ins.pitch * 57.3,'f',1));
|
||||
toolsui->senser->setINS(2,16,QString::number(to360deg(ins.yaw * 57.3),'f',1));
|
||||
/*
|
||||
toolsui->senser->setINS(2,17,QString::number(to360deg(atan2(ins.v_east,
|
||||
ins.v_north) * 57.3),'f',1));
|
||||
*/
|
||||
|
||||
if((ins.v_east != 0)||
|
||||
(ins.v_north != 0))
|
||||
{
|
||||
toolsui->senser->setINS(2,17,QString::number(to360deg(atan2(ins.v_east,
|
||||
ins.v_north) * 57.3),'f',1));
|
||||
}
|
||||
|
||||
|
||||
|
||||
toolsui->senser->setDAS(1,3,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).vfr_hud.alt,'f',1));
|
||||
toolsui->senser->setDAS(1,4,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).vfr_hud.airspeed,'f',1));
|
||||
toolsui->senser->setDAS(1,5,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).emb_atom_com.Airspeed,'f',1));
|
||||
toolsui->senser->setDAS(1,6,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).emb_atom_com.mach,'f',3));
|
||||
toolsui->senser->setDAS(1,7,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).emb_atom_com.qbar * 0.01,'f',3));
|
||||
toolsui->senser->setDAS(1,8,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).emb_atom_com.ps * 0.01,'f',3));
|
||||
|
||||
toolsui->senser->setDAS(2,1,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).emb_atom_com.alpha,'f',1));
|
||||
toolsui->senser->setDAS(2,2,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).emb_atom_com.beta,'f',1));
|
||||
//toolsui->senser->setDAS(2,3,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).emb_atom_com.));
|
||||
toolsui->senser->setDAS(2,4,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).vfr_hud.airspeed,'f',1));
|
||||
toolsui->senser->setDAS(2,7,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).scaled_pressure.press_diff,'f',3));
|
||||
toolsui->senser->setDAS(2,8,QString::number(dlink->mavlinknode->vehicleList.value(currentUAV).scaled_pressure.press_abs,'f',3));
|
||||
toolsui->senser->setINS(2,18,QString::number(ins.gx,'f',1));
|
||||
toolsui->senser->setINS(2,19,QString::number(ins.gy,'f',1));
|
||||
toolsui->senser->setINS(2,20,QString::number(ins.gz,'f',1));
|
||||
toolsui->senser->setINS(2,21,QString::number(ins.ax,'f',1));
|
||||
toolsui->senser->setINS(2,22,QString::number(ins.ay,'f',1));
|
||||
toolsui->senser->setINS(2,23,QString::number(ins.az,'f',1));
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::Timer_1s_out(void)
|
||||
{
|
||||
|
||||
|
||||
@@ -122,6 +122,11 @@ private slots:
|
||||
void update_servo_output_raw(mavlink_servo_output_raw_t servo);
|
||||
|
||||
|
||||
void ins1_Update(mavlink_ins1_t ins);
|
||||
void ins2_Update(mavlink_ins2_t ins);
|
||||
|
||||
void TTSsay(QString str);
|
||||
|
||||
protected slots:
|
||||
|
||||
|
||||
|
||||
+77
-38
@@ -62,9 +62,10 @@ Cockpit::Cockpit(QWidget *parent): QWidget(parent)
|
||||
m_Target.airspeed_maximun = 40;
|
||||
m_Target.airspeed_minimun = 20;
|
||||
|
||||
m_State.GPS = "GPS";
|
||||
m_State.MODE = "MODE";
|
||||
m_State.STATE = "ARM";
|
||||
m_State.GPS = tr("GPS");
|
||||
m_State.MODE = tr("MODE");
|
||||
m_State.ARM = tr("ARM");
|
||||
m_State.STATE = tr("FW");//TR FW MR
|
||||
|
||||
//m_State.verticalspeed
|
||||
|
||||
@@ -547,6 +548,20 @@ void Cockpit::setState(QString str)
|
||||
m_Target.isUpdate = true;
|
||||
}
|
||||
|
||||
void Cockpit::setARM(QString str)
|
||||
{
|
||||
m_State.ARM = str;
|
||||
m_Target.isUpdate = true;
|
||||
}
|
||||
|
||||
void Cockpit::setSVN(qreal value)
|
||||
{
|
||||
value = (qIsNaN(value))?(0):(value);
|
||||
|
||||
m_State.svn = value;
|
||||
m_Target.isUpdate = true;
|
||||
}
|
||||
|
||||
void Cockpit::setAOA(qreal Value)
|
||||
{
|
||||
Value = (qIsNaN(Value))?(0):(Value);
|
||||
@@ -874,7 +889,7 @@ void Cockpit::drawLeftScale(QPainter *painter)
|
||||
//画旁边的速度刻度,并显示
|
||||
painter->save();
|
||||
|
||||
painter->translate(0,1200.0/40.0 * m_State.airspeed);
|
||||
painter->translate(0,(1200.0/40.0) * m_State.airspeed);
|
||||
|
||||
float h = 1200.0f/40.0f;//单位高度
|
||||
|
||||
@@ -912,11 +927,7 @@ void Cockpit::drawLeftScale(QPainter *painter)
|
||||
painter->restore();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
painter->restore();
|
||||
painter->restore();//刻结束
|
||||
|
||||
|
||||
//画旁边的速度彩条
|
||||
@@ -930,20 +941,9 @@ void Cockpit::drawLeftScale(QPainter *painter)
|
||||
|
||||
painter->drawRect(275,-600,25,1200);
|
||||
|
||||
/*
|
||||
if((y_green + l_green) > 600)
|
||||
{
|
||||
l_green = 600 - y_green;
|
||||
}
|
||||
|
||||
if(y_green < 600)
|
||||
painter->drawRect(275,(y_green < -600)?(-600):(y_green),25,l_green);
|
||||
*/
|
||||
|
||||
|
||||
painter->setBrush(QColor("#FF8C00"));//画橙色
|
||||
//painter->drawRect(275,-600,25,1200);
|
||||
qreal l_or = 600 - 1200.0/40.0 * (m_Target.airspeed_maximun- m_State.airspeed);
|
||||
qreal l_or = 600 - (1200.0/40.0) * (m_Target.airspeed_maximun- m_State.airspeed);
|
||||
|
||||
|
||||
if(l_or > 1200)
|
||||
@@ -961,8 +961,8 @@ void Cockpit::drawLeftScale(QPainter *painter)
|
||||
|
||||
|
||||
painter->setBrush(QColor("#FF0000"));//画红色
|
||||
qreal y_red = -1200.0/40.0 * (m_Target.airspeed_minimun- m_State.airspeed);
|
||||
qreal l_red = 600 + 1200.0/40.0 * (m_Target.airspeed_minimun- m_State.airspeed);
|
||||
qreal y_red = -(1200.0/40.0) * (m_Target.airspeed_minimun- m_State.airspeed);
|
||||
qreal l_red = 600 + (1200.0/40.0) * (m_Target.airspeed_minimun- m_State.airspeed);
|
||||
if(y_red < 600)
|
||||
{
|
||||
if(y_red < -600)
|
||||
@@ -973,11 +973,7 @@ void Cockpit::drawLeftScale(QPainter *painter)
|
||||
painter->drawRect(275,y_red,25,l_red);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
painter->restore();
|
||||
painter->restore();//彩条结束
|
||||
|
||||
//画 中间黑色的显示块
|
||||
painter->save();
|
||||
@@ -1130,7 +1126,7 @@ void Cockpit::drawLeftScale(QPainter *painter)
|
||||
ePen.setWidth(8);
|
||||
painter->setPen(ePen);
|
||||
|
||||
qreal t_y = -1200.0/40.0 * (m_Target.airspeed- m_State.airspeed);
|
||||
qreal t_y = -(1200.0/40.0) * (m_Target.airspeed- m_State.airspeed);
|
||||
|
||||
t_y = (t_y < -600)?(-600):((t_y>600)?(600):(t_y));//限幅
|
||||
|
||||
@@ -1271,7 +1267,7 @@ void Cockpit::drawRightScale(QPainter *painter)
|
||||
//画旁边的高度刻度,并显示
|
||||
painter->save();
|
||||
|
||||
painter->translate(0,1200.0/400.0 * m_State.altitude);
|
||||
painter->translate(0,(1200.0/400.0) * m_State.altitude);
|
||||
|
||||
qreal h = 1200.0/400.0;//单位高度
|
||||
for(int i = -210 - m_State.altitude;i<=(210 - m_State.altitude);i+=1)
|
||||
@@ -1321,7 +1317,7 @@ void Cockpit::drawRightScale(QPainter *painter)
|
||||
};
|
||||
|
||||
|
||||
qreal h_y = -1200.0/400.0 * (m_Target.altitude- m_State.altitude);
|
||||
qreal h_y = -(1200.0/400.0) * (m_Target.altitude- m_State.altitude);
|
||||
|
||||
h_y = (h_y < -600)?(-600):((h_y>600)?(600):(h_y));//限幅
|
||||
|
||||
@@ -1970,7 +1966,7 @@ void Cockpit::drawYawScale(QPainter *painter)
|
||||
|
||||
painter->restore();//画小圆结束
|
||||
painter->restore();//画小飞机结束
|
||||
|
||||
//=====================================================
|
||||
|
||||
//画一个顶部黑色显示框
|
||||
painter->save();
|
||||
@@ -2011,7 +2007,7 @@ void Cockpit::drawYawScale(QPainter *painter)
|
||||
|
||||
for(int i=0;i<72;i++)
|
||||
{
|
||||
painter->save();
|
||||
painter->save();//画罗盘刻度
|
||||
|
||||
painter->setOpacity(1.0);
|
||||
|
||||
@@ -2027,7 +2023,7 @@ void Cockpit::drawYawScale(QPainter *painter)
|
||||
QString Flag = "";
|
||||
if((i == 0)||(i == 18)||(i == 36)||(i == 54))
|
||||
{
|
||||
painter->save();
|
||||
painter->save();//画罗盘开始
|
||||
|
||||
switch (i) {
|
||||
case 0:
|
||||
@@ -2056,7 +2052,7 @@ void Cockpit::drawYawScale(QPainter *painter)
|
||||
painter->setFont(font);
|
||||
|
||||
painter->drawText(QRect(-75,-470,150,150),Qt::AlignVCenter|Qt::AlignHCenter,Flag);
|
||||
painter->restore();
|
||||
painter->restore();//画罗盘结束
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2072,7 +2068,7 @@ void Cockpit::drawYawScale(QPainter *painter)
|
||||
}
|
||||
}
|
||||
|
||||
painter->restore();
|
||||
painter->restore();//画罗盘刻度结束
|
||||
}
|
||||
painter->restore();//画YAW结束
|
||||
}
|
||||
@@ -2115,11 +2111,54 @@ void Cockpit::drawTopStatuts(QPainter *painter)
|
||||
painter->setPen(ePen);
|
||||
painter->setFont(font);
|
||||
|
||||
painter->drawText(QRect(-550,0,365,150),Qt::AlignCenter,m_State.GPS);
|
||||
painter->drawText(QRect(-550,0,365,150),Qt::AlignCenter,m_State.STATE);
|
||||
painter->drawText(QRect(-185,0,365,150),Qt::AlignCenter,m_State.MODE);
|
||||
painter->drawText(QRect( 185,0,365,150),Qt::AlignCenter,m_State.STATE);
|
||||
painter->drawText(QRect( 185,0,365,150),Qt::AlignCenter,m_State.ARM);
|
||||
|
||||
|
||||
|
||||
painter->restore();//画状态结束
|
||||
|
||||
|
||||
//画GPS
|
||||
painter->save();
|
||||
|
||||
//画大字
|
||||
|
||||
if(m_State.svn < 7)
|
||||
{
|
||||
ePen.setColor(m_Color.WarningColor);
|
||||
}
|
||||
else if(m_State.svn < 10)
|
||||
{
|
||||
ePen.setColor(m_Color.NoticeColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
ePen.setColor(m_Color.NormalColor);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
ePen.setWidth(12);
|
||||
font.setPixelSize(90);
|
||||
font.setWeight(QFont::Bold);
|
||||
font.setFamily("Arial");//非衬线
|
||||
|
||||
painter->setPen(ePen);
|
||||
painter->setFont(font);
|
||||
|
||||
painter->drawRect( 600,0,600,150);
|
||||
|
||||
QString str;
|
||||
|
||||
str.append(tr("%1 %2").arg(m_State.GPS).arg(m_State.svn));
|
||||
|
||||
painter->drawText(QRect(610,0,580,150),Qt::AlignCenter,str);
|
||||
|
||||
|
||||
painter->restore();//画GPS结束
|
||||
|
||||
painter->restore();//所有结束
|
||||
}
|
||||
|
||||
@@ -51,7 +51,9 @@ typedef struct {
|
||||
QString GPS;
|
||||
QString MODE;
|
||||
QString STATE;
|
||||
QString ARM;
|
||||
|
||||
quint8 svn = 0;
|
||||
|
||||
qreal ax = 0;
|
||||
qreal ay = 0;
|
||||
@@ -190,6 +192,10 @@ public Q_SLOTS:
|
||||
void setGPS(QString str);
|
||||
void setMode(QString str);
|
||||
void setState(QString str);
|
||||
void setARM(QString str);
|
||||
|
||||
void setSVN(qreal value);
|
||||
|
||||
void setAOA(qreal Value);
|
||||
void setOL(qreal Value);
|
||||
void setXTrack(double value);
|
||||
|
||||
@@ -17,7 +17,7 @@ ThreadTemplet::~ThreadTemplet()
|
||||
|
||||
if(thread)
|
||||
{
|
||||
delete thread;
|
||||
thread->deleteLater();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -772,9 +772,13 @@ void MavLinkNode::MAVLinkRcv_Handler(mavlink_message_t msg)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
QMutex mutex;
|
||||
|
||||
void MavLinkNode::StatusParse(mavlink_message_t msg)
|
||||
{
|
||||
|
||||
mutex.lock();
|
||||
|
||||
_vehicle vehicle = vehicleList.value(msg.sysid);
|
||||
|
||||
@@ -841,6 +845,7 @@ void MavLinkNode::StatusParse(mavlink_message_t msg)
|
||||
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(',');
|
||||
@@ -867,6 +872,8 @@ void MavLinkNode::StatusParse(mavlink_message_t msg)
|
||||
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);
|
||||
@@ -897,6 +904,9 @@ void MavLinkNode::StatusParse(mavlink_message_t msg)
|
||||
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);
|
||||
@@ -1125,9 +1135,12 @@ void MavLinkNode::StatusParse(mavlink_message_t msg)
|
||||
|
||||
|
||||
|
||||
vehicleList.insert(msg.sysid,vehicle);//直接覆盖
|
||||
emit state_updated();
|
||||
|
||||
vehicleList.insert(msg.sysid,vehicle);//直接覆盖
|
||||
|
||||
mutex.unlock();
|
||||
|
||||
emit state_updated();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -171,7 +171,8 @@ signals:
|
||||
|
||||
void signal_servo_output_raw(mavlink_servo_output_raw_t servo);
|
||||
|
||||
|
||||
void signal_ins1(mavlink_ins1_t ins);
|
||||
void signal_ins2(mavlink_ins2_t ins);
|
||||
|
||||
|
||||
void updateDlink(float rssi,uint64_t in,uint64_t out);
|
||||
|
||||
Reference in New Issue
Block a user