567 lines
15 KiB
C++
567 lines
15 KiB
C++
#include "Diagram.h"
|
|
#include "ui_Diagram.h"
|
|
|
|
Diagram::Diagram(QWidget *parent) :
|
|
QWidget(parent),
|
|
ui(new Ui::Diagram)
|
|
{
|
|
ui->setupUi(this);
|
|
m_parent = parent;
|
|
|
|
int w = 60;
|
|
int h = 25;
|
|
|
|
/*
|
|
ui->label->setFixedWidth(w);
|
|
ui->label_2->setFixedWidth(w);
|
|
ui->label_3->setFixedWidth(w);
|
|
ui->label_4->setFixedWidth(w);
|
|
ui->label_5->setFixedWidth(w);
|
|
ui->label_6->setFixedWidth(w);
|
|
ui->label_7->setFixedWidth(w);
|
|
ui->label_8->setFixedWidth(w);
|
|
ui->label_11->setFixedWidth(w);
|
|
ui->label_10->setFixedWidth(w);
|
|
|
|
ui->label_12->setFixedWidth(w);
|
|
ui->label_12->setFixedWidth(w);
|
|
ui->label_13->setFixedWidth(w);
|
|
|
|
|
|
ui->label_27->setFixedWidth(w);
|
|
ui->label_29->setFixedWidth(w);
|
|
|
|
|
|
ui->label_roll->setFixedWidth(w);
|
|
ui->label_pitch->setFixedWidth(w);
|
|
|
|
ui->label_gx->setFixedWidth(w);
|
|
ui->label_gy->setFixedWidth(w);
|
|
ui->label_gz->setFixedWidth(w);
|
|
|
|
ui->label_ax->setFixedWidth(w);
|
|
ui->label_ay->setFixedWidth(w);
|
|
ui->label_az->setFixedWidth(w);
|
|
|
|
ui->label_Ias->setFixedWidth(w);
|
|
ui->label_Tas->setFixedWidth(w);
|
|
|
|
ui->label_Vz->setFixedWidth(w);
|
|
|
|
ui->label_Alttitude->setFixedWidth(w);
|
|
|
|
ui->label_Alpha->setFixedWidth(w);
|
|
ui->label_Beta->setFixedWidth(w);
|
|
*/
|
|
|
|
|
|
/*
|
|
attChart = new Chart(ui->frame_Attitude);
|
|
gyroChart = new Chart(ui->frame_Gyro);
|
|
accChart = new Chart(ui->frame_Accelerate);
|
|
asChart = new Chart(ui->frame_AS);
|
|
vzChart = new Chart(ui->frame_Vz);
|
|
altChart = new Chart(ui->frame_Altitude);
|
|
*/
|
|
|
|
|
|
attChart = new Chart(ui->frame_Attitude);
|
|
gyroChart = new Chart(ui->frame_Gyro);
|
|
accChart = new Chart(ui->frame_Accelerate);
|
|
|
|
/*
|
|
attChart->chart()->axisX()->hide();
|
|
gyroChart->chart()->axisX()->hide();
|
|
accChart->chart()->axisX()->hide();
|
|
*/
|
|
attChart->chart()->legend()->setAlignment(Qt::AlignRight);
|
|
gyroChart->chart()->legend()->setAlignment(Qt::AlignRight);
|
|
accChart->chart()->legend()->setAlignment(Qt::AlignRight);
|
|
|
|
attChart->setOperation(false);
|
|
gyroChart->setOperation(false);
|
|
accChart->setOperation(false);
|
|
|
|
attChart->setRenderHint(QPainter::Antialiasing);
|
|
gyroChart->setRenderHint(QPainter::Antialiasing);
|
|
accChart->setRenderHint(QPainter::Antialiasing);
|
|
|
|
/*
|
|
attChart->addSeries(tr("INS roll"),Qt::darkRed,Qt::SolidLine);
|
|
attChart->addSeries(tr("INS pitch"),Qt::darkGreen,Qt::SolidLine);
|
|
|
|
attChart->addSeries(tr("SBG roll"),Qt::red,Qt::DashLine);
|
|
attChart->addSeries(tr("SBG pitch"),Qt::green,Qt::DashLine);
|
|
|
|
|
|
gyroChart->addSeries(tr("INS p"),Qt::darkRed,Qt::SolidLine);
|
|
gyroChart->addSeries(tr("INS q"),Qt::darkGreen,Qt::SolidLine);
|
|
gyroChart->addSeries(tr("INS r"),Qt::darkBlue,Qt::SolidLine);
|
|
|
|
gyroChart->addSeries(tr("SBG p"),Qt::red,Qt::DashLine);
|
|
gyroChart->addSeries(tr("SBG q"),Qt::green,Qt::DashLine);
|
|
gyroChart->addSeries(tr("SBG r"),Qt::blue,Qt::DashLine);
|
|
|
|
|
|
accChart->addSeries(tr("INS ax"),Qt::darkRed,Qt::SolidLine);
|
|
accChart->addSeries(tr("INS ay"),Qt::darkGreen,Qt::SolidLine);
|
|
accChart->addSeries(tr("INS az"),Qt::darkBlue,Qt::SolidLine);
|
|
|
|
accChart->addSeries(tr("SBG ax"),Qt::red,Qt::DashLine);
|
|
accChart->addSeries(tr("SBG ay"),Qt::green,Qt::DashLine);
|
|
accChart->addSeries(tr("SBG az"),Qt::blue,Qt::DashLine);
|
|
*/
|
|
|
|
}
|
|
|
|
Diagram::~Diagram()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
|
|
|
|
void Diagram::resizeEvent(QResizeEvent *event)
|
|
{
|
|
|
|
attChart->setGeometry(0,0,ui->frame_Attitude->width(),ui->frame_Attitude->height());
|
|
gyroChart->setGeometry(0,0,ui->frame_Gyro->width(),ui->frame_Gyro->height());
|
|
accChart->setGeometry(0,0,ui->frame_Accelerate->width(),ui->frame_Accelerate->height());
|
|
|
|
}
|
|
|
|
void Diagram::closeEvent(QCloseEvent *event)
|
|
{
|
|
setFloat();
|
|
event->ignore();
|
|
}
|
|
|
|
void Diagram::contextMenuEvent(QContextMenuEvent *event)
|
|
{
|
|
/*
|
|
QMenu *menu = new QMenu(this);
|
|
|
|
QAction *pAction = new QAction("float",this);
|
|
|
|
connect(pAction,SIGNAL(triggered(bool)),
|
|
this,SLOT(setFloat()));
|
|
|
|
menu->addAction(pAction);
|
|
menu->move(cursor().pos());
|
|
menu->show();
|
|
*/
|
|
}
|
|
|
|
|
|
void Diagram::setFloat(void)
|
|
{
|
|
if(this->parent())
|
|
{
|
|
this->setParent(nullptr);
|
|
QScreen *screen=QGuiApplication::primaryScreen ();;
|
|
this->move((screen->availableGeometry().width()-this->width())/2,(screen->availableGeometry().height()-this->height())/2);
|
|
this->show();
|
|
}
|
|
else
|
|
{
|
|
this->setParent(m_parent);
|
|
this->move(0,0);
|
|
this->hide();
|
|
//qDebug() << m_parent->children();
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void Diagram::setState(uint32_t pos,QVariant real,QVariant meas)
|
|
{
|
|
switch (pos) {
|
|
case 1:
|
|
ui->label_roll_real->setText(real.toString());
|
|
ui->label_roll_meas->setText(meas.toString());
|
|
break;
|
|
case 2:
|
|
ui->label_pitch_real->setText(real.toString());
|
|
ui->label_pitch_meas->setText(meas.toString());
|
|
break;
|
|
case 3:
|
|
ui->label_heading_real->setText(real.toString());
|
|
ui->label_heading_meas->setText(meas.toString());
|
|
break;
|
|
case 4:
|
|
ui->label_yaw_real->setText(real.toString());
|
|
break;
|
|
case 5:
|
|
ui->label_dis_real->setText(real.toString());
|
|
ui->label_dis_meas->setText(meas.toString());
|
|
break;
|
|
case 6:
|
|
ui->label_alt_real->setText(real.toString());
|
|
ui->label_alt_meas->setText(meas.toString());
|
|
break;
|
|
case 7:
|
|
ui->label_as_real->setText(real.toString());
|
|
ui->label_as_meas->setText(meas.toString());
|
|
break;
|
|
break;
|
|
case 8:
|
|
ui->label_rate_real->setText(real.toString());
|
|
ui->label_rate_meas->setText(meas.toString());
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Diagram::setDigitalAtmosphereSystem(uint32_t pos,QVariant real,QVariant meas)
|
|
{
|
|
switch (pos) {
|
|
case 1:
|
|
ui->label_atteck_real->setText(real.toString());
|
|
break;
|
|
case 2:
|
|
ui->label_slide_real->setText(real.toString());
|
|
break;
|
|
case 3:
|
|
ui->label_tas_real->setText(real.toString());
|
|
break;
|
|
case 4:
|
|
ui->label_Ma_real->setText(real.toString());
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
void Diagram::setServo(uint32_t pos,QVariant real,QVariant meas)
|
|
{
|
|
switch (pos) {
|
|
|
|
case 1:
|
|
ui->label_la_real->setText(real.toString());
|
|
ui->label_la_meas->setText(meas.toString());
|
|
break;
|
|
case 2:
|
|
ui->label_ra_real->setText(real.toString());
|
|
ui->label_ra_meas->setText(meas.toString());
|
|
break;
|
|
case 3:
|
|
ui->label_lv_real->setText(real.toString());
|
|
ui->label_lv_meas->setText(meas.toString());
|
|
break;
|
|
case 4:
|
|
ui->label_rv_real->setText(real.toString());
|
|
ui->label_rv_meas->setText(meas.toString());
|
|
break;
|
|
case 5:
|
|
ui->label_rud_real->setText(real.toString());
|
|
ui->label_rud_meas->setText(meas.toString());
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Diagram::setEngine(uint32_t pos,QVariant value)
|
|
{
|
|
switch (pos) {
|
|
case 1:
|
|
ui->label_thr->setText(value.toString());
|
|
break;
|
|
case 2:
|
|
ui->label_rpm->setText(value.toString());
|
|
break;
|
|
case 3:
|
|
ui->label_temp1->setText(value.toString());
|
|
break;
|
|
case 4:
|
|
ui->label_temp2->setText(value.toString());
|
|
break;
|
|
case 5:
|
|
ui->label_FuelLeft->setText(value.toString());
|
|
break;
|
|
case 6:
|
|
ui->label_fuelPressure->setText(value.toString());
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Diagram::setBattery(uint32_t pos,QVariant value)
|
|
{
|
|
switch (pos) {
|
|
case 1:
|
|
ui->label_28v->setText(value.toString());
|
|
break;
|
|
case 2:
|
|
ui->label_28V_A->setText(value.toString());
|
|
break;
|
|
case 3:
|
|
ui->label_28V_percent->setText(value.toString());
|
|
break;
|
|
case 4:
|
|
ui->label_56v->setText(value.toString());
|
|
break;
|
|
case 5:
|
|
ui->label_56V_A->setText(value.toString());
|
|
break;
|
|
case 6:
|
|
ui->label_56V_percent->setText(value.toString());
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Diagram::setDlink(uint32_t pos,QVariant value)
|
|
{
|
|
switch (pos) {
|
|
case 1:
|
|
ui->label_ssr->setText(value.toString());
|
|
break;
|
|
case 2:
|
|
ui->label_ssp->setText(value.toString());
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Diagram::setAttitude1(uint32_t pos,QVariant value)
|
|
{
|
|
switch (pos) {
|
|
case 1:
|
|
ui->label_ax1->setText(value.toString());
|
|
if(ui->checkBox_INS->isChecked())
|
|
{
|
|
accChart->setSerieData(tr("INS ax"),value);
|
|
}
|
|
break;
|
|
case 2:
|
|
ui->label_ay1->setText(value.toString());
|
|
if(ui->checkBox_INS->isChecked())
|
|
{
|
|
accChart->setSerieData(tr("INS ay"),value);
|
|
}
|
|
break;
|
|
case 3:
|
|
ui->label_az1->setText(value.toString());
|
|
if(ui->checkBox_INS->isChecked())
|
|
{
|
|
accChart->setSerieData(tr("INS az"),value);
|
|
}
|
|
break;
|
|
case 4:
|
|
ui->label_gx1->setText(value.toString());
|
|
if(ui->checkBox_INS->isChecked())
|
|
{
|
|
gyroChart->setSerieData(tr("INS p"),value);
|
|
}
|
|
break;
|
|
case 5:
|
|
ui->label_gy1->setText(value.toString());
|
|
if(ui->checkBox_INS->isChecked())
|
|
{
|
|
gyroChart->setSerieData(tr("INS q"),value);
|
|
}
|
|
break;
|
|
case 6:
|
|
ui->label_gz1->setText(value.toString());
|
|
if(ui->checkBox_INS->isChecked())
|
|
{
|
|
gyroChart->setSerieData(tr("INS r"),value);
|
|
}
|
|
break;
|
|
case 7:
|
|
ui->label_rol1->setText(value.toString());
|
|
if(ui->checkBox_INS->isChecked())
|
|
{
|
|
attChart->setSerieData(tr("INS roll"),value);
|
|
}
|
|
break;
|
|
case 8:
|
|
ui->label_pit1->setText(value.toString());
|
|
if(ui->checkBox_INS->isChecked())
|
|
{
|
|
attChart->setSerieData(tr("INS pitch"),value);
|
|
}
|
|
break;
|
|
case 9:
|
|
ui->label_yaw1->setText(value.toString());
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Diagram::setAttitude2(uint32_t pos,QVariant value)
|
|
{
|
|
switch (pos) {
|
|
case 1:
|
|
ui->label_ax2->setText(value.toString());
|
|
if(ui->checkBox_SBG->isChecked())
|
|
{
|
|
accChart->setSerieData(tr("SBG ax"),value);
|
|
}
|
|
break;
|
|
case 2:
|
|
ui->label_ay2->setText(value.toString());
|
|
if(ui->checkBox_SBG->isChecked())
|
|
{
|
|
accChart->setSerieData(tr("SBG ay"),value);
|
|
}
|
|
break;
|
|
case 3:
|
|
ui->label_az2->setText(value.toString());
|
|
if(ui->checkBox_SBG->isChecked())
|
|
{
|
|
accChart->setSerieData(tr("SBG az"),value);
|
|
}
|
|
break;
|
|
case 4:
|
|
ui->label_gx2->setText(value.toString());
|
|
if(ui->checkBox_SBG->isChecked())
|
|
{
|
|
gyroChart->setSerieData(tr("SBG p"),value);
|
|
}
|
|
break;
|
|
case 5:
|
|
ui->label_gy2->setText(value.toString());
|
|
if(ui->checkBox_SBG->isChecked())
|
|
{
|
|
gyroChart->setSerieData(tr("SBG q"),value);
|
|
}
|
|
break;
|
|
case 6:
|
|
ui->label_gz2->setText(value.toString());
|
|
if(ui->checkBox_SBG->isChecked())
|
|
{
|
|
gyroChart->setSerieData(tr("SBG r"),value);
|
|
}
|
|
break;
|
|
case 7:
|
|
ui->label_rol2->setText(value.toString());
|
|
if(ui->checkBox_SBG->isChecked())
|
|
{
|
|
attChart->setSerieData(tr("SBG roll"),value);
|
|
}
|
|
break;
|
|
case 8:
|
|
ui->label_pit2->setText(value.toString());
|
|
if(ui->checkBox_SBG->isChecked())
|
|
{
|
|
attChart->setSerieData(tr("SBG pitch"),value);
|
|
}
|
|
break;
|
|
case 9:
|
|
ui->label_yaw2->setText(value.toString());
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Diagram::setGPS1(uint32_t pos,QVariant value)
|
|
{
|
|
switch (pos) {
|
|
case 1:
|
|
ui->label_lat1->setText(value.toString());
|
|
break;
|
|
case 2:
|
|
ui->label_lng1->setText(value.toString());
|
|
break;
|
|
case 3:
|
|
ui->label_alt1->setText(value.toString());
|
|
break;
|
|
case 4:
|
|
ui->label_gs1->setText(value.toString());
|
|
break;
|
|
case 5:
|
|
ui->label_cos1->setText(value.toString());
|
|
break;
|
|
case 6:
|
|
ui->label_sta1->setText(value.toString());
|
|
break;
|
|
case 7:
|
|
ui->label_fix1->setText(value.toString());
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
void Diagram::setGPS2(uint32_t pos,QVariant value)
|
|
{
|
|
switch (pos) {
|
|
case 1:
|
|
ui->label_lat2->setText(value.toString());
|
|
break;
|
|
case 2:
|
|
ui->label_lng2->setText(value.toString());
|
|
break;
|
|
case 3:
|
|
ui->label_alt2->setText(value.toString());
|
|
break;
|
|
case 4:
|
|
ui->label_gs2->setText(value.toString());
|
|
break;
|
|
case 5:
|
|
ui->label_cos2->setText(value.toString());
|
|
break;
|
|
case 6:
|
|
ui->label_sta2->setText(value.toString());
|
|
break;
|
|
case 7:
|
|
ui->label_fix2->setText(value.toString());
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void Diagram::on_checkBox_INS_stateChanged(int arg1)
|
|
{
|
|
if(arg1 == Qt::Checked)
|
|
{
|
|
attChart->addSeries(tr("INS roll"),Qt::darkRed,Qt::SolidLine);
|
|
attChart->addSeries(tr("INS pitch"),Qt::darkGreen,Qt::SolidLine);
|
|
|
|
gyroChart->addSeries(tr("INS p"),Qt::darkRed,Qt::SolidLine);
|
|
gyroChart->addSeries(tr("INS q"),Qt::darkGreen,Qt::SolidLine);
|
|
gyroChart->addSeries(tr("INS r"),Qt::darkBlue,Qt::SolidLine);
|
|
|
|
accChart->addSeries(tr("INS ax"),Qt::darkRed,Qt::SolidLine);
|
|
accChart->addSeries(tr("INS ay"),Qt::darkGreen,Qt::SolidLine);
|
|
accChart->addSeries(tr("INS az"),Qt::darkBlue,Qt::SolidLine);
|
|
}
|
|
else if(arg1 == Qt::Unchecked)
|
|
{
|
|
attChart->removeSerie(tr("INS roll"));
|
|
attChart->removeSerie(tr("INS pitch"));
|
|
|
|
gyroChart->removeSerie(tr("INS p"));
|
|
gyroChart->removeSerie(tr("INS q"));
|
|
gyroChart->removeSerie(tr("INS r"));
|
|
|
|
accChart->removeSerie(tr("INS ax"));
|
|
accChart->removeSerie(tr("INS ay"));
|
|
accChart->removeSerie(tr("INS az"));
|
|
}
|
|
}
|
|
|
|
void Diagram::on_checkBox_SBG_stateChanged(int arg1)
|
|
{
|
|
if(arg1 == Qt::Checked)
|
|
{
|
|
attChart->addSeries(tr("SBG roll"),Qt::red,Qt::DashLine);
|
|
attChart->addSeries(tr("SBG pitch"),Qt::green,Qt::DashLine);
|
|
|
|
gyroChart->addSeries(tr("SBG p"),Qt::red,Qt::DashLine);
|
|
gyroChart->addSeries(tr("SBG q"),Qt::green,Qt::DashLine);
|
|
gyroChart->addSeries(tr("SBG r"),Qt::blue,Qt::DashLine);
|
|
|
|
accChart->addSeries(tr("SBG ax"),Qt::red,Qt::DashLine);
|
|
accChart->addSeries(tr("SBG ay"),Qt::green,Qt::DashLine);
|
|
accChart->addSeries(tr("SBG az"),Qt::blue,Qt::DashLine);
|
|
}
|
|
else if(arg1 == Qt::Unchecked)
|
|
{
|
|
attChart->removeSerie(tr("SBG roll"));
|
|
attChart->removeSerie(tr("SBG pitch"));
|
|
|
|
gyroChart->removeSerie(tr("SBG p"));
|
|
gyroChart->removeSerie(tr("SBG q"));
|
|
gyroChart->removeSerie(tr("SBG r"));
|
|
|
|
accChart->removeSerie(tr("SBG ax"));
|
|
accChart->removeSerie(tr("SBG ay"));
|
|
accChart->removeSerie(tr("SBG az"));
|
|
}
|
|
}
|