tan2函数除零判断

This commit is contained in:
hm
2021-10-11 09:42:42 +08:00
parent 9c2e6ef7e2
commit df9e4ac9a6
14 changed files with 439 additions and 369 deletions
+4
View File
@@ -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);
}
}
+2
View File
@@ -104,6 +104,8 @@ signals:
void searchallUav(void);
*/
void say(QString str);
private slots:
void updateUI(void);
+35 -1
View File
@@ -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);
}
}
}
}
+12 -4
View File
@@ -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;
}
+3 -3
View File
@@ -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);
-161
View File
@@ -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;
}
}
}
-3
View File
@@ -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
View File
@@ -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)
{
+5
View File
@@ -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
View File
@@ -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();//所有结束
}
+6
View File
@@ -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);
+1 -1
View File
@@ -17,7 +17,7 @@ ThreadTemplet::~ThreadTemplet()
if(thread)
{
delete thread;
thread->deleteLater();
}
}
+15 -2
View File
@@ -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();
}
+2 -1
View File
@@ -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);