Files
gcs-nf/App/ToolsUI/Senser/Senser.cpp
T
2022-03-10 11:22:25 +08:00

814 lines
24 KiB
C++

#include "Senser.h"
#include "ui_Senser.h"
Senser::Senser(QWidget *parent) :
QWidget(parent),
ui(new Ui::Senser)
{
ui->setupUi(this);
m_parent = parent;
QFile file(":/qss/Senser.qss");
file.open(QFile::ReadOnly);
QTextStream filetext(&file);
QString stylesheet = filetext.readAll();
this->setStyleSheet(stylesheet);
file.close();
this->setWindowTitle(tr("sensor"));
ui->frame_Attitude->resize(384,234);
ui->frame_Gyro->resize(384,234);
ui->frame_Accelerate->resize(384,234);
ui->frame_Servo->resize(384,234);
ui->frame_Altitude->resize(384,234);
ui->frame_Speed->resize(384,234);
attChart = new Chart(ui->frame_Attitude);
//attChart = new Chart();
gyroChart = new Chart(ui->frame_Gyro);
accChart = new Chart(ui->frame_Accelerate);
servoChart = new Chart(ui->frame_Servo);
altChart = new Chart(ui->frame_Altitude);
speedChart = new Chart(ui->frame_Speed);
//ui->frame_Attitude->addWidget(attChart,0,0,1,1);
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());
servoChart->setGeometry(0,0,ui->frame_Servo->width(),ui->frame_Servo->height());
altChart->setGeometry(0,0,ui->frame_Altitude->width(),ui->frame_Altitude->height());
speedChart->setGeometry(0,0,ui->frame_Speed->width(),ui->frame_Speed->height());
attChart->chart()->legend()->setAlignment(Qt::AlignRight);
gyroChart->chart()->legend()->setAlignment(Qt::AlignRight);
accChart->chart()->legend()->setAlignment(Qt::AlignRight);
servoChart->chart()->legend()->setAlignment(Qt::AlignRight);
altChart->chart()->legend()->setAlignment(Qt::AlignRight);
speedChart->chart()->legend()->setAlignment(Qt::AlignRight);
attChart->setOperation(false);
gyroChart->setOperation(false);
accChart->setOperation(false);
servoChart->setOperation(false);
altChart->setOperation(false);
speedChart->setOperation(false);
attChart->setRenderHint(QPainter::Antialiasing);
gyroChart->setRenderHint(QPainter::Antialiasing);
accChart->setRenderHint(QPainter::Antialiasing);
servoChart->setRenderHint(QPainter::Antialiasing);
altChart->setRenderHint(QPainter::Antialiasing);
speedChart->setRenderHint(QPainter::Antialiasing);
attChart->setRubberBand(QChartView::RectangleRubberBand);
gyroChart->setRubberBand(QChartView::RectangleRubberBand);
accChart->setRubberBand(QChartView::RectangleRubberBand);
servoChart->setRubberBand(QChartView::RectangleRubberBand);
altChart->setRubberBand(QChartView::RectangleRubberBand);
speedChart->setRubberBand(QChartView::RectangleRubberBand);
connect(attChart,&Chart::select,
this,&Senser::chartSelect);
connect(gyroChart,&Chart::select,
this,&Senser::chartSelect);
connect(accChart,&Chart::select,
this,&Senser::chartSelect);
connect(servoChart,&Chart::select,
this,&Senser::chartSelect);
connect(altChart,&Chart::select,
this,&Senser::chartSelect);
connect(speedChart,&Chart::select,
this,&Senser::chartSelect);
//StringModel = new QStringListModel(ui->listView_Data);
ItemModel = new QStandardItemModel(ui->listView_Data);
ui->listView_Data->setModel(ItemModel);
ui->listView_Data->scrollToBottom();
QStandardItem *item = new QStandardItem("item1");
ItemModel->appendRow(item);
item = new QStandardItem("item2");
ItemModel->appendRow(item);
ui->listView_Data->setModel(ItemModel);
}
Senser::~Senser()
{
delete ui;
}
void Senser::chartSelect(bool flag)
{
if(flag)
{
QObject *obj = sender();
if(obj)
{
Chart *chart = qobject_cast<Chart *>(obj);
if(chart)
{
if(chart == attChart)
{
setColor(ui->frame_Attitude,QColor("#00FF00"));
setColor(ui->frame_Gyro,QColor("#FFFFFF"));
setColor(ui->frame_Accelerate,QColor("#FFFFFF"));
setColor(ui->frame_Servo,QColor("#FFFFFF"));
setColor(ui->frame_Altitude,QColor("#FFFFFF"));
setColor(ui->frame_Speed,QColor("#FFFFFF"));
attChart->setSelect(true);
gyroChart->setSelect(false);
accChart->setSelect(false);
servoChart->setSelect(false);
altChart->setSelect(false);
speedChart->setSelect(false);
}
else if(chart == gyroChart)
{
setColor(ui->frame_Attitude,QColor("#FFFFFF"));
setColor(ui->frame_Gyro,QColor("#00FF00"));
setColor(ui->frame_Accelerate,QColor("#FFFFFF"));
setColor(ui->frame_Servo,QColor("#FFFFFF"));
setColor(ui->frame_Altitude,QColor("#FFFFFF"));
setColor(ui->frame_Speed,QColor("#FFFFFF"));
attChart->setSelect(false);
gyroChart->setSelect(true);
accChart->setSelect(false);
servoChart->setSelect(false);
altChart->setSelect(false);
speedChart->setSelect(false);
}
else if(chart == accChart)
{
setColor(ui->frame_Attitude,QColor("#FFFFFF"));
setColor(ui->frame_Gyro,QColor("#FFFFFF"));
setColor(ui->frame_Accelerate,QColor("#00FF00"));
setColor(ui->frame_Servo,QColor("#FFFFFF"));
setColor(ui->frame_Altitude,QColor("#FFFFFF"));
setColor(ui->frame_Speed,QColor("#FFFFFF"));
attChart->setSelect(false);
gyroChart->setSelect(false);
accChart->setSelect(true);
servoChart->setSelect(false);
altChart->setSelect(false);
speedChart->setSelect(false);
}
else if(chart == servoChart)
{
setColor(ui->frame_Attitude,QColor("#FFFFFF"));
setColor(ui->frame_Gyro,QColor("#FFFFFF"));
setColor(ui->frame_Accelerate,QColor("#FFFFFF"));
setColor(ui->frame_Servo,QColor("#00FF00"));
setColor(ui->frame_Altitude,QColor("#FFFFFF"));
setColor(ui->frame_Speed,QColor("#FFFFFF"));
attChart->setSelect(false);
gyroChart->setSelect(false);
accChart->setSelect(false);
servoChart->setSelect(true);
altChart->setSelect(false);
speedChart->setSelect(false);
}
else if(chart == altChart)
{
setColor(ui->frame_Attitude,QColor("#FFFFFF"));
setColor(ui->frame_Gyro,QColor("#FFFFFF"));
setColor(ui->frame_Accelerate,QColor("#FFFFFF"));
setColor(ui->frame_Servo,QColor("#FFFFFF"));
setColor(ui->frame_Altitude,QColor("#00FF00"));
setColor(ui->frame_Speed,QColor("#FFFFFF"));
attChart->setSelect(false);
gyroChart->setSelect(false);
accChart->setSelect(false);
servoChart->setSelect(false);
altChart->setSelect(true);
speedChart->setSelect(false);
}
else if(chart == speedChart)
{
setColor(ui->frame_Attitude,QColor("#FFFFFF"));
setColor(ui->frame_Gyro,QColor("#FFFFFF"));
setColor(ui->frame_Accelerate,QColor("#FFFFFF"));
setColor(ui->frame_Servo,QColor("#FFFFFF"));
setColor(ui->frame_Altitude,QColor("#FFFFFF"));
setColor(ui->frame_Speed,QColor("#00FF00"));
attChart->setSelect(false);
gyroChart->setSelect(false);
accChart->setSelect(false);
servoChart->setSelect(false);
altChart->setSelect(false);
speedChart->setSelect(true);
}
}
}
}
else
{
setColor(ui->frame_Attitude,QColor("#FFFFFF"));
setColor(ui->frame_Gyro,QColor("#FFFFFF"));
setColor(ui->frame_Accelerate,QColor("#FFFFFF"));
setColor(ui->frame_Servo,QColor("#FFFFFF"));
setColor(ui->frame_Altitude,QColor("#FFFFFF"));
setColor(ui->frame_Speed,QColor("#FFFFFF"));
attChart->setSelect(false);
gyroChart->setSelect(false);
accChart->setSelect(false);
servoChart->setSelect(false);
altChart->setSelect(false);
speedChart->setSelect(false);
}
}
void Senser::setColor(QWidget *w,QColor s)
{
QString stype = "background-color: ";
stype.append(s.name());
stype.append(";");
if(w)
{
w->setStyleSheet(stype);
w->style()->unpolish(w);
w->style()->polish(w);
}
}
void Senser::setColor(QWidget *w,state s)
{
w->setProperty("state",s);
w->style()->unpolish(w);
w->style()->polish(w);
}
void Senser::setValue(QLabel *w,QString s)
{
w->setText(s);
}
void Senser::updateUI()
{
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());
servoChart->setGeometry(0,0,ui->frame_Servo->width(),ui->frame_Servo->height());
altChart->setGeometry(0,0,ui->frame_Altitude->width(),ui->frame_Altitude->height());
speedChart->setGeometry(0,0,ui->frame_Speed->width(),ui->frame_Speed->height());
}
void Senser::resizeEvent(QResizeEvent *event)
{
//attChart->resizeEvent(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());
servoChart->setGeometry(0,0,ui->frame_Servo->width(),ui->frame_Servo->height());
altChart->setGeometry(0,0,ui->frame_Altitude->width(),ui->frame_Altitude->height());
speedChart->setGeometry(0,0,ui->frame_Speed->width(),ui->frame_Speed->height());
}
void Senser::closeEvent(QCloseEvent *event)
{
setFloat();
event->ignore();
}
void Senser::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();
this->resize(m_parent->size());
updateUI();
}
else
{
this->setParent(m_parent);
this->move(0,0);
this->show();
this->resize(m_parent->size());
updateUI();
}
}
void Senser::on_checkBox_att_stateChanged(int arg1)
{
QCheckBox *chk = qobject_cast<QCheckBox *>(sender());
if(chk)
{
if(arg1 == Qt::Checked)
{
attChart->addSeries(chk->text());
}
else if(arg1 == Qt::Unchecked)
{
attChart->removeSerie(chk->text());
}
update();
}
}
void Senser::on_checkBox_gyro_stateChanged(int arg1)
{
QCheckBox *chk = qobject_cast<QCheckBox *>(sender());
if(chk)
{
if(arg1 == Qt::Checked)
{
gyroChart->addSeries(chk->text());
}
else if(arg1 == Qt::Unchecked)
{
gyroChart->removeSerie(chk->text());
}
update();
}
}
void Senser::on_checkBox_acc_stateChanged(int arg1)
{
QCheckBox *chk = qobject_cast<QCheckBox *>(sender());
if(chk)
{
if(arg1 == Qt::Checked)
{
accChart->addSeries(chk->text());
}
else if(arg1 == Qt::Unchecked)
{
accChart->removeSerie(chk->text());
}
update();
}
}
void Senser::setINS(int source,int pos,QVariant value)
{
if(source == 1)
{
switch (pos) {
case 1:
ui->label_1_svn->setText(value.toString());
break;
case 2:
ui->label_1_BIT->setText(value.toString());
break;
case 3:
ui->label_1_AttitudeStatus->setText(value.toString());
break;
case 4:
ui->label_1_HeadingStatus->setText(value.toString());
break;
case 5:
ui->label_1_SpeedStatus->setText(value.toString());
break;
case 6:
ui->label_1_PositionStatus->setText(value.toString());
break;
case 7:
ui->label_1_System->setText(value.toString());
break;
case 8:
ui->label_1_COM->setText(value.toString());
break;
case 9:
ui->label_1_GPS->setText(value.toString());
break;
case 10:
ui->label_1_lng->setText(value.toString());
break;
case 11:
ui->label_1_lat->setText(value.toString());
break;
case 12:
ui->label_1_alt->setText(value.toString());
break;
case 13:
ui->label_1_gs->setText(value.toString());
break;
case 14:
ui->label_1_rol->setText(value.toString());
break;
case 15:
ui->label_1_pit->setText(value.toString());
break;
case 16:
ui->label_1_yaw->setText(value.toString());
break;
case 17:
ui->label_1_heading->setText(value.toString());
break;
case 18:
ui->label_1_p->setText(value.toString());
break;
case 19:
ui->label_1_q->setText(value.toString());
break;
case 20:
ui->label_1_r->setText(value.toString());
break;
case 21:
ui->label_1_ax->setText(value.toString());
break;
case 22:
ui->label_1_ay->setText(value.toString());
break;
case 23:
ui->label_1_az->setText(value.toString());
break;
default:
break;
}
}
else if(source == 2)
{
switch (pos) {
case 1:
ui->label_2_svn->setText(value.toString());
break;
case 2:
ui->label_2_BIT->setText(value.toString());
break;
case 3:
ui->label_2_AttitudeStatus->setText(value.toString());
break;
case 4:
ui->label_2_HeadingStatus->setText(value.toString());
break;
case 5:
ui->label_2_SpeedStatus->setText(value.toString());
break;
case 6:
ui->label_2_PositionStatus->setText(value.toString());
break;
case 7:
ui->label_2_System->setText(value.toString());
break;
case 8:
ui->label_2_COM->setText(value.toString());
break;
case 9:
ui->label_2_GPS->setText(value.toString());
break;
case 10:
ui->label_2_lng->setText(value.toString());
break;
case 11:
ui->label_2_lat->setText(value.toString());
break;
case 12:
ui->label_2_alt->setText(value.toString());
break;
case 13:
ui->label_2_gs->setText(value.toString());
break;
case 14:
ui->label_2_rol->setText(value.toString());
break;
case 15:
ui->label_2_pit->setText(value.toString());
break;
case 16:
ui->label_2_yaw->setText(value.toString());
break;
case 17:
ui->label_2_heading->setText(value.toString());
break;
case 18:
ui->label_2_p->setText(value.toString());
break;
case 19:
ui->label_2_q->setText(value.toString());
break;
case 20:
ui->label_2_r->setText(value.toString());
break;
case 21:
ui->label_2_ax->setText(value.toString());
break;
case 22:
ui->label_2_ay->setText(value.toString());
break;
case 23:
ui->label_2_az->setText(value.toString());
break;
default:
break;
}
}
}
void Senser::setDAS(int source,int pos,QVariant value)
{
if(source == 1)
{
switch (pos) {
case 1:
//ui->label_1_atteck->setText(value.toString());
break;
case 2:
//ui->label_1_slide->setText(value.toString());
break;
case 3:
ui->label_1_rel_alt->setText(value.toString());
break;
case 4:
ui->label_1_cas->setText(value.toString());
break;
case 5:
ui->label_1_tas->setText(value.toString());
break;
case 6:
ui->label_1_ma->setText(value.toString());
break;
case 7:
ui->label_1_dynamic->setText(value.toString());
break;
case 8:
ui->label_1_static->setText(value.toString());
break;
default:
break;
}
}
else if(source == 2)
{
switch (pos) {
case 1:
//ui->label_2_atteck->setText(value.toString());
break;
case 2:
//ui->label_2_slide->setText(value.toString());
break;
case 3:
//ui->label_2_pre_alt->setText(value.toString());
break;
case 4:
//ui->label_2_cas->setText(value.toString());
break;
case 5:
//ui->label_2_tas->setText(value.toString());
break;
case 6:
//ui->label_2_ma->setText(value.toString());
break;
case 7:
ui->label_2_dynamic->setText(value.toString());
break;
case 8:
ui->label_2_static->setText(value.toString());
break;
default:
break;
}
}
}
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;
}
}
}
//设置曲线
/*
*
attChart->setOperation(false);
角度
gyroChart->setOperation(false);
角速度
accChart->setOperation(false);
加速度
servoChart->setOperation(false);
舵机指令和反馈
altChart->setOperation(false);
海拔
speedChart->setOperation(false);
速度
ScopeRPM->setSerieData(tr("物理"),t->RPM_mea);
ScopeRPM->setSerieData(tr("期望"),t->RPM_des);
*
*
*
*/