Files
gcs-nf/App/ToolsUI/Diagram/Diagram.cpp
T
2020-10-28 13:48:15 +08:00

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"));
}
}