181 lines
5.9 KiB
C++
181 lines
5.9 KiB
C++
#include "ServoSystem.h"
|
|
#include "ui_ServoSystem.h"
|
|
|
|
ServoSystem::ServoSystem(QWidget *parent) :
|
|
QWidget(parent),
|
|
ui(new Ui::ServoSystem)
|
|
{
|
|
ui->setupUi(this);
|
|
m_parent = parent;
|
|
|
|
setWindowTitle(tr("ServoSyste"));
|
|
|
|
//load qss
|
|
QFile file(":/qss/ServoSystem.qss");
|
|
file.open(QFile::ReadOnly);
|
|
QTextStream filetext(&file);
|
|
QString stylesheet = filetext.readAll();
|
|
this->setStyleSheet(stylesheet);
|
|
file.close();
|
|
|
|
//========
|
|
setColor(ui->checkBox_onBoard,state::success);
|
|
setColor(ui->checkBox_28v,state::success);
|
|
setColor(ui->checkBox_56v,state::success);
|
|
setColor(ui->checkBox_AirSpeed,state::success);
|
|
setColor(ui->checkBox_500W,state::success);
|
|
|
|
//setColor(ui->label_LE_SBIT,state::failure);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
ServoSystem::~ServoSystem()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
|
|
void ServoSystem::closeEvent(QCloseEvent *event)
|
|
{
|
|
setFloat();
|
|
event->ignore();
|
|
}
|
|
|
|
void ServoSystem::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 ServoSystem::setFloat(void)
|
|
{
|
|
if(this->parent())
|
|
{
|
|
this->setParent(nullptr);
|
|
this->show();
|
|
}
|
|
else
|
|
{
|
|
this->setParent(m_parent);
|
|
this->move(0,0);
|
|
this->hide();
|
|
}
|
|
//
|
|
}
|
|
|
|
void ServoSystem::setColor(QWidget *w,state s)
|
|
{
|
|
w->setProperty("state",s);
|
|
w->style()->unpolish(w);
|
|
w->style()->polish(w);
|
|
}
|
|
|
|
void ServoSystem::setValue(QLabel *w,QString s)
|
|
{
|
|
w->setText(s);
|
|
}
|
|
|
|
void ServoSystem::setBUMState(mavlink_bmustate_t *t)
|
|
{
|
|
ui->label_temp->setText(QString::number(t->BAT1_hi_temp_degC) + "℃");
|
|
|
|
ui->label_onBoard_28V_Voltage->setText(QString::number(t->BAT1_group_voltage_mv * 0.001,'f',1) + "V");
|
|
ui->label_onBoard_28V_Current->setText(QString::number((float)((int16_t)t->BAT1_group_current_dA) *0.1f,'f',1));
|
|
|
|
ui->label_onBoard_56V_Voltage->setText(QString::number(t->BAT2_group_voltage_mv * 0.001,'f',1));
|
|
ui->label_onBoard_56V_Current->setText(QString::number((float)((int16_t)t->BAT2_group_current_dA) *0.1f,'f',1));
|
|
|
|
|
|
ui->label_28V_percent->setText(QString::number((float)(t->BAT1_remain_perc *0.1f),'f',1));
|
|
ui->label_56V_percent->setText(QString::number((float)(t->BAT2_remain_perc *0.1f),'f',1));
|
|
|
|
}
|
|
|
|
void ServoSystem::setCheckState(uint32_t pos,QVariant value)
|
|
{
|
|
switch (pos) {
|
|
case 1:
|
|
setColor(ui->checkBox_onBoard,(value.toBool())?(state::success):(state::failure));
|
|
break;
|
|
case 2:
|
|
setColor(ui->checkBox_28v,(value.toBool())?(state::success):(state::failure));
|
|
break;
|
|
case 3:
|
|
setColor(ui->checkBox_56v,(value.toBool())?(state::success):(state::failure));
|
|
break;
|
|
case 4:
|
|
setColor(ui->checkBox_AirSpeed,(value.toBool())?(state::success):(state::failure));
|
|
break;
|
|
case 5:
|
|
setColor(ui->checkBox_500W,(value.toBool())?(state::success):(state::failure));
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
void ServoSystem::setServoState(mavlink_servo_output_raw_t *t)
|
|
{
|
|
ui->label_rud_curr->setText(QString::number(((int16_t)t->servo13_raw)/32767.0 * 35.0,'f',2));
|
|
ui->label_ele_l_curr->setText(QString::number(((int16_t)t->servo15_raw)/32767.0 * 35.0,'f',2));
|
|
ui->label_ele_r_curr->setText(QString::number(((int16_t)t->servo12_raw)/32767.0 * 35.0,'f',2));
|
|
ui->label_ail_l_curr->setText(QString::number(((int16_t)t->servo14_raw)/32767.0 * 35.0,'f',2));
|
|
ui->label_ail_r_curr->setText(QString::number(((int16_t)t->servo11_raw)/32767.0 * 35.0,'f',2));
|
|
|
|
ui->label_rud_cmd->setText(QString::number(((int16_t)t->servo3_raw)/32767.0 * 35.0,'f',2));
|
|
ui->label_ele_l_cmd->setText(QString::number(((int16_t)t->servo1_raw)/32767.0 * 35.0,'f',2));
|
|
ui->label_ele_r_cmd->setText(QString::number(((int16_t)t->servo2_raw)/32767.0 * 35.0,'f',2));
|
|
ui->label_ail_l_cmd->setText(QString::number(((int16_t)t->servo4_raw)/32767.0 * 35.0,'f',2));
|
|
ui->label_ail_r_cmd->setText(QString::number(((int16_t)t->servo5_raw)/32767.0 * 35.0,'f',2));
|
|
|
|
/*
|
|
sbus = feedback (ra)
|
|
sbus = feedback (re)
|
|
sbus = feedback (ru)
|
|
sbus = feedback (la)
|
|
15 sbus = feedback (le)
|
|
health = 0 ra000 re000 ru000 la000 le000
|
|
GBIT zero SBIT
|
|
*/
|
|
|
|
uint16_t health = t->servo16_raw;
|
|
|
|
//qDebug() << health;
|
|
|
|
setColor(ui->label_LE_SBIT,((health&0x0001) > 0)?(state::success):(state::failure));
|
|
setColor(ui->label_LE_ZERO,((health&0x0002) > 0)?(state::success):(state::failure));
|
|
setColor(ui->label_LE_GBIT,((health&0x0004) > 0)?(state::success):(state::failure));
|
|
|
|
setColor(ui->label_LA_SBIT,((health&0x0008) > 0)?(state::success):(state::failure));
|
|
setColor(ui->label_LA_ZERO,((health&0x0010) > 0)?(state::success):(state::failure));
|
|
setColor(ui->label_LA_GBIT,((health&0x0020) > 0)?(state::success):(state::failure));
|
|
|
|
setColor(ui->label_RU_SBIT,((health&0x0040) > 0)?(state::success):(state::failure));
|
|
setColor(ui->label_RU_ZERO,((health&0x0080) > 0)?(state::success):(state::failure));
|
|
setColor(ui->label_RU_GBIT,((health&0x0100) > 0)?(state::success):(state::failure));
|
|
|
|
setColor(ui->label_RE_SBIT,((health&0x0200) > 0)?(state::success):(state::failure));
|
|
setColor(ui->label_RE_ZERO,((health&0x0400) > 0)?(state::success):(state::failure));
|
|
setColor(ui->label_RE_GBIT,((health&0x0800) > 0)?(state::success):(state::failure));
|
|
|
|
setColor(ui->label_RA_SBIT,((health&0x1000) > 0)?(state::success):(state::failure));
|
|
setColor(ui->label_RA_ZERO,((health&0x2000) > 0)?(state::success):(state::failure));
|
|
setColor(ui->label_RA_GBIT,((health&0x4000) > 0)?(state::success):(state::failure));
|
|
|
|
}
|