1543 lines
45 KiB
C++
1543 lines
45 KiB
C++
#include "Payload.h"
|
||
#include "ui_Payload.h"
|
||
|
||
Payload::Payload(QWidget *parent) :
|
||
QWidget(parent),
|
||
ui(new Ui::Payload)
|
||
{
|
||
ui->setupUi(this);
|
||
m_parent = parent;
|
||
|
||
QFile file(":/qss/Payload.qss");
|
||
file.open(QFile::ReadOnly);
|
||
QTextStream filetext(&file);
|
||
QString stylesheet = filetext.readAll();
|
||
this->setStyleSheet(stylesheet);
|
||
file.close();
|
||
|
||
this->setWindowTitle(tr("Payload"));
|
||
|
||
Config *cfg = new Config();
|
||
|
||
QHostAddress m_ra_address;
|
||
QHostAddress m_uv_address;
|
||
QVariant m_ra_out_port;
|
||
QVariant m_uv_out_port;
|
||
QVariant m_ra_in_port;
|
||
QVariant m_uv_in_port;
|
||
|
||
cfg->get_Payload_RA_Info(&m_ra_address,&m_ra_out_port,&m_ra_in_port);
|
||
cfg->get_Payload_UV_Info(&m_uv_address,&m_uv_out_port,&m_uv_in_port);
|
||
|
||
ra_address = m_ra_address;
|
||
uv_address = m_uv_address;
|
||
ra_out_port = m_ra_out_port.toInt();
|
||
uv_out_port = m_uv_out_port.toInt();
|
||
ra_in_port = m_ra_in_port.toInt();
|
||
uv_in_port = m_uv_in_port.toInt();
|
||
|
||
delete cfg;
|
||
|
||
|
||
qint32 width = 300;
|
||
qint32 height = 35;
|
||
//============set size============
|
||
setHeight(ui->lineEdit_CommandName,height);
|
||
setHeight(ui->pushButton_SendCommand,height);
|
||
setHeight(ui->pushButton_Cancel,height);
|
||
|
||
setHeight(ui->pushButton_500W_Open,height);
|
||
setHeight(ui->pushButton_500W_Close,height);
|
||
|
||
setHeight(ui->pushButton_radar_open,height);
|
||
setHeight(ui->pushButton_radar_close,height);
|
||
setHeight(ui->pushButton_radar_uploadthreat,height);
|
||
setHeight(ui->pushButton_radar_uploadwarning,height);
|
||
setHeight(ui->pushButton_radar_cancel_uploadwarning,height);
|
||
setHeight(ui->pushButton_radar_open_maneuver,height);
|
||
setHeight(ui->pushButton_radar_close_maneuver,height);
|
||
setHeight(ui->comboBox_radar_threat_level,height);
|
||
setHeight(ui->label_radar_status,height);
|
||
setHeight(ui->pushButton_radar_control_start,height);
|
||
setHeight(ui->pushButton_radar_control_stop,height);
|
||
setHeight(ui->spinBox_RA_ID,height);
|
||
setHeight(ui->pushButton_radar_fore_maneuver,height);
|
||
setHeight(ui->pushButton_radar_exit_fore_maneuver,height);
|
||
|
||
setHeight(ui->pushButton_uv_power_on,height);
|
||
setHeight(ui->pushButton_uv_power_off,height);
|
||
setHeight(ui->pushButton_uv_open,height);
|
||
setHeight(ui->pushButton_uv_close,height);
|
||
//setHeight(ui->pushButton_uv_uploadthreat,height);
|
||
setHeight(ui->pushButton_uv_uploadwarning,height);
|
||
setHeight(ui->pushButton_uv_cancel_uploadwarning,height);
|
||
setHeight(ui->pushButton_uv_open_maneuver,height);
|
||
setHeight(ui->pushButton_uv_close_maneuver,height);
|
||
setHeight(ui->label_uv_status,height);
|
||
|
||
setHeight(ui->pushButton_flare_self_check,height);
|
||
setHeight(ui->pushButton_flare_circuit_on,height);
|
||
setHeight(ui->pushButton_flare_circuit_off,height);
|
||
setHeight(ui->pushButton_flare_release_time_set,height);
|
||
setHeight(ui->pushButton_flare_on,height);
|
||
setHeight(ui->pushButton_flare_off,height);
|
||
setHeight(ui->pushButton_flare_manrelease,height);
|
||
setHeight(ui->pushButton_flare_manrelease_set,height);
|
||
setHeight(ui->pushButton_uv_fore_maneuver,height);
|
||
setHeight(ui->pushButton_uv_exit_fore_maneuver,height);
|
||
|
||
setHeight(ui->pushButton_flare_release_bom1,height);
|
||
setHeight(ui->pushButton_flare_release_bom2,height);
|
||
setHeight(ui->pushButton_flare_release_bom3,height);
|
||
setHeight(ui->pushButton_flare_release_bom4,height);
|
||
setHeight(ui->pushButton_flare_release_bom5,height);
|
||
setHeight(ui->pushButton_flare_release_bom6,height);
|
||
|
||
|
||
setWidth(ui->pushButton_flare_release_time_set,150);
|
||
|
||
setWidth(ui->pushButton_flare_release_bom1,150);
|
||
setWidth(ui->pushButton_flare_release_bom2,150);
|
||
setWidth(ui->pushButton_flare_release_bom3,150);
|
||
setWidth(ui->pushButton_flare_release_bom4,150);
|
||
setWidth(ui->pushButton_flare_release_bom5,150);
|
||
setWidth(ui->pushButton_flare_release_bom6,150);
|
||
|
||
|
||
setHeight(ui->lineEdit_radar_ip,height);
|
||
setHeight(ui->lineEdit_radar_port,height);
|
||
setHeight(ui->lineEdit_radar_port_in,height);
|
||
|
||
setHeight(ui->lineEdit_uv_ip,height);
|
||
setHeight(ui->lineEdit_uv_port,height);
|
||
setHeight(ui->lineEdit_uv_port_in,height);
|
||
//setHeight(ui->lineEdit_uv_set_extent,height);
|
||
//setHeight(ui->lineEdit_uv_set_level,height);
|
||
|
||
setHeight(ui->lineEdit_flare_manrelease_time,height);
|
||
setHeight(ui->lineEdit_flare_release_time,height);
|
||
|
||
|
||
QFont font;
|
||
font.setPointSize(18);
|
||
font.setFamily("SimHei");
|
||
|
||
QWidget::setFont(font);
|
||
|
||
|
||
setFont(ui->lineEdit_radar_ip,font);
|
||
setFont(ui->lineEdit_radar_port,font);
|
||
setFont(ui->lineEdit_radar_port_in,font);
|
||
setFont(ui->spinBox_RA_ID,font);
|
||
|
||
setFont(ui->comboBox_radar_threat_level,font);
|
||
|
||
setFont(ui->lineEdit_uv_ip,font);
|
||
setFont(ui->lineEdit_uv_port,font);
|
||
setFont(ui->lineEdit_uv_port_in,font);
|
||
//setFont(ui->lineEdit_uv_set_extent,font);
|
||
//setFont(ui->lineEdit_uv_set_level,font);
|
||
|
||
setFont(ui->lineEdit_flare_manrelease_time,font);
|
||
setFont(ui->lineEdit_flare_release_time,font);
|
||
|
||
|
||
|
||
|
||
//============set color===========
|
||
setColor(ui->label_radar_status,state::inital);
|
||
|
||
setColor(ui->pushButton_radar_open,green_state);
|
||
setColor(ui->pushButton_radar_close,green_state);
|
||
setColor(ui->pushButton_radar_uploadthreat,green_state);
|
||
setColor(ui->pushButton_radar_uploadwarning,green_state);
|
||
setColor(ui->pushButton_radar_cancel_uploadwarning,green_state);
|
||
setColor(ui->pushButton_radar_open_maneuver,green_state);
|
||
setColor(ui->pushButton_radar_close_maneuver,red_state);
|
||
//setHeight(ui->pushButton_radar_fore_maneuver,height);
|
||
//setHeight(ui->pushButton_radar_exit_fore_maneuver,height);
|
||
|
||
setColor(ui->label_uv_status,state::inital);
|
||
setColor(ui->pushButton_uv_power_on,green_state);
|
||
setColor(ui->pushButton_uv_power_off,red_state);
|
||
setColor(ui->pushButton_uv_open,green_state);
|
||
setColor(ui->pushButton_uv_close,green_state);
|
||
//setColor(ui->pushButton_uv_uploadthreat,green_state);
|
||
setColor(ui->pushButton_uv_uploadwarning,green_state);
|
||
setColor(ui->pushButton_uv_cancel_uploadwarning,green_state);
|
||
setColor(ui->pushButton_uv_open_maneuver,green_state);
|
||
setColor(ui->pushButton_uv_close_maneuver,red_state);
|
||
|
||
setColor(ui->label_flare_bom1,state::inital);
|
||
setColor(ui->label_flare_bom2,state::inital);
|
||
setColor(ui->label_flare_bom3,state::inital);
|
||
setColor(ui->label_flare_bom4,state::inital);
|
||
setColor(ui->label_flare_bom5,state::inital);
|
||
setColor(ui->label_flare_bom6,state::inital);
|
||
setColor(ui->label_flare_ch1,state::inital);
|
||
setColor(ui->label_flare_ch2,state::inital);
|
||
setColor(ui->label_flare_ch3,state::inital);
|
||
setColor(ui->label_flare_ch4,state::inital);
|
||
setColor(ui->label_flare_ch5,state::inital);
|
||
setColor(ui->label_flare_ch6,state::inital);
|
||
|
||
setColor(ui->label_flare_dev_id,state::inital);
|
||
setColor(ui->label_flare_fire_switch,state::inital);
|
||
setColor(ui->label_flare_power,state::inital);
|
||
setColor(ui->label_flare_release_switch,state::inital);
|
||
setColor(ui->label_flare_self_check_status,state::inital);
|
||
setColor(ui->label_flare_status,state::inital);
|
||
setColor(ui->pushButton_flare_self_check,green_state);
|
||
setColor(ui->pushButton_flare_circuit_on,green_state);
|
||
setColor(ui->pushButton_flare_circuit_off,red_state);
|
||
setColor(ui->pushButton_flare_release_time_set,green_state);
|
||
setColor(ui->pushButton_flare_on,green_state);
|
||
setColor(ui->pushButton_flare_off,red_state);
|
||
setColor(ui->pushButton_flare_manrelease,green_state);
|
||
setColor(ui->pushButton_flare_manrelease_set,green_state);
|
||
|
||
|
||
//===========set line edit===================
|
||
QRegularExpressionValidator *validator = new QRegularExpressionValidator(QRegularExpression("^\\d+$"), this);
|
||
//ui->lineEdit_uv_set_extent->setValidator(validator);
|
||
//ui->lineEdit_uv_set_level->setValidator(validator);
|
||
|
||
ui->lineEdit_flare_manrelease_time->setValidator(validator);
|
||
ui->lineEdit_flare_release_time->setValidator(validator);
|
||
|
||
|
||
|
||
QRegularExpression ipRegex("^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$");
|
||
ui->lineEdit_radar_ip->setValidator(new QRegularExpressionValidator(ipRegex, this));
|
||
ui->lineEdit_uv_ip->setValidator(new QRegularExpressionValidator(ipRegex, this));
|
||
|
||
|
||
// 0-65536 的正则表达式(精确匹配)
|
||
QIntValidator *port_validator = new QIntValidator(0, 65535, this);
|
||
ui->lineEdit_radar_port->setValidator(port_validator);
|
||
ui->lineEdit_radar_port_in->setValidator(port_validator);
|
||
ui->lineEdit_uv_port->setValidator(port_validator);
|
||
ui->lineEdit_uv_port_in->setValidator(port_validator);
|
||
|
||
|
||
QRegularExpressionValidator *uv_validator = new QRegularExpressionValidator(
|
||
QRegularExpression("^([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$"), this);
|
||
//ui->lineEdit_uv_set_extent->setValidator(uv_validator);
|
||
//ui->lineEdit_uv_set_level->setValidator(uv_validator);
|
||
|
||
|
||
|
||
ui->comboBox_radar_threat_level->addItem(QString("等级 0"),0);
|
||
ui->comboBox_radar_threat_level->addItem(QString("等级 1"),1);
|
||
ui->comboBox_radar_threat_level->addItem(QString("等级 2"),2);
|
||
ui->comboBox_radar_threat_level->addItem(QString("等级 3"),3);
|
||
ui->comboBox_radar_threat_level->addItem(QString("等级 4"),4);
|
||
ui->comboBox_radar_threat_level->addItem(QString("等级 5"),5);
|
||
ui->comboBox_radar_threat_level->setCurrentIndex(5);
|
||
|
||
ui->lineEdit_radar_ip->setText(QHostAddress(ra_address).toString());
|
||
ui->lineEdit_radar_port->setText(QString::number(ra_out_port));
|
||
ui->lineEdit_radar_port_in->setText(QString::number(ra_in_port));
|
||
ui->lineEdit_radar_ip->setPlaceholderText(QString("格式为 192.168.1.100"));
|
||
ui->lineEdit_radar_port->setPlaceholderText(QString("对方接收端口"));
|
||
ui->lineEdit_radar_port_in->setPlaceholderText(QString("本机监听端口"));
|
||
|
||
|
||
ui->lineEdit_uv_ip->setText(QHostAddress(uv_address).toString());
|
||
ui->lineEdit_uv_port->setText(QString::number(uv_out_port));
|
||
ui->lineEdit_uv_port_in->setText(QString::number(uv_in_port));
|
||
ui->lineEdit_uv_ip->setPlaceholderText(QString("格式为 192.168.1.100"));
|
||
ui->lineEdit_uv_port->setPlaceholderText(QString("对方接收端口"));
|
||
ui->lineEdit_uv_port_in->setPlaceholderText(QString("本机监听端口"));
|
||
|
||
|
||
|
||
//ui->lineEdit_uv_set_extent->setText(QString::number(32));
|
||
//ui->lineEdit_uv_set_level->setText(QString::number(140));
|
||
|
||
ui->lineEdit_flare_release_time->setText(QString::number(1000));
|
||
ui->lineEdit_flare_manrelease_time->setText(QString::number(1000));
|
||
|
||
setup_commands();
|
||
setup_actions();
|
||
|
||
|
||
|
||
}
|
||
|
||
Payload::~Payload()
|
||
{
|
||
delete ui;
|
||
}
|
||
|
||
void Payload::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 Payload::setColor(QWidget *w,state s)
|
||
{
|
||
w->setProperty("state",s);
|
||
w->style()->unpolish(w);
|
||
w->style()->polish(w);
|
||
}
|
||
|
||
void Payload::setValue(QLabel *w,QString s)
|
||
{
|
||
w->setText(s);
|
||
}
|
||
|
||
void Payload::setHeight(QWidget *w,qint32 height)
|
||
{
|
||
w->setFixedHeight(height);
|
||
}
|
||
|
||
void Payload::setWidth(QWidget *w,qint32 width)
|
||
{
|
||
w->setFixedWidth(width);
|
||
}
|
||
|
||
void Payload::setSize(QWidget *w,qint32 width,qint32 height)
|
||
{
|
||
w->setFixedSize(width,height);
|
||
}
|
||
|
||
void Payload::setFont(QWidget *w,QFont font)
|
||
{
|
||
w->setFont(font);
|
||
}
|
||
|
||
|
||
|
||
void Payload::updateUI()
|
||
{
|
||
|
||
}
|
||
|
||
void Payload::resizeEvent(QResizeEvent *event)
|
||
{
|
||
//attChart->resizeEvent(event);
|
||
|
||
|
||
}
|
||
|
||
void Payload::closeEvent(QCloseEvent *event)
|
||
{
|
||
setFloat();
|
||
event->ignore();
|
||
}
|
||
|
||
void Payload::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 Payload::EnCapData(uint16_t seq,QByteArray data)
|
||
{
|
||
//rwr:id为8
|
||
//uvwd:id为9
|
||
|
||
switch (seq) {
|
||
case 0x08://rwr
|
||
{
|
||
|
||
uint8_t msg[50];
|
||
uint8_t len = 30;
|
||
|
||
for(int i = 0;i<len;i++)
|
||
{
|
||
msg[i] = data[i];
|
||
}
|
||
|
||
if((RA_Sock)&&(RA_Sock->isOpen()))
|
||
{
|
||
//qDebug() << "rwr send" << data;
|
||
RA_Sock->writeDatagram((const char *)msg,len,ra_address, ra_out_port);
|
||
}
|
||
|
||
}break;
|
||
case 0x09://uvwd
|
||
{
|
||
|
||
//qDebug() << " uvwd send" << data;
|
||
uint8_t msg[50];
|
||
uint8_t len = 30;
|
||
|
||
for(int i = 0;i<len;i++)
|
||
{
|
||
msg[i] = data[i];
|
||
}
|
||
|
||
if((UV_Sock)&&UV_Sock->isOpen())
|
||
{
|
||
//qDebug() << "send" << data;
|
||
UV_Sock->writeDatagram((const char *)msg,len,uv_address, uv_out_port);
|
||
}
|
||
}break;
|
||
default:
|
||
break;
|
||
}
|
||
|
||
|
||
}
|
||
|
||
void Payload::setUVWDState(mavlink_uvwdstate_t uvwdstate)
|
||
{
|
||
//通过IP发送出去
|
||
/*
|
||
if((UV_Sock)&&UV_Sock->isOpen())
|
||
{
|
||
uint8_t msg[50];
|
||
uint8_t len = 0;
|
||
|
||
//0~2
|
||
msg[len++] = 0xDD;
|
||
msg[len++] = 0x77;
|
||
msg[len++] = uvwdstate.device_id;
|
||
//3
|
||
msg[len++] = uvwdstate.alarm_flag;
|
||
//4~6
|
||
msg[len++] = uvwdstate.integration_time[0];
|
||
msg[len++] = uvwdstate.integration_time[1];
|
||
msg[len++] = uvwdstate.integration_time[2];
|
||
//7~8
|
||
msg[len++] = uvwdstate.image_avg_brightness;
|
||
msg[len++] = uvwdstate.image_avg_brightness >> 8;
|
||
//9~11
|
||
msg[len++] = uvwdstate.device_state_1;
|
||
msg[len++] = uvwdstate.device_state_2;
|
||
msg[len++] = uvwdstate.device_state_3;
|
||
//12~28
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
//SUN
|
||
uint8_t sum = 0;
|
||
for(int i = 0; i<29;i++)
|
||
{
|
||
sum += msg[i];
|
||
}
|
||
|
||
msg[len++] = sum;
|
||
|
||
UV_Sock->writeDatagram((const char *)msg,len,uv_address, uv_out_port);
|
||
}
|
||
*/
|
||
}
|
||
|
||
void Payload::setRWRState(mavlink_rwrstate_t rwrstate)
|
||
{/*
|
||
if((RA_Sock)&&(RA_Sock->isOpen()))
|
||
{
|
||
uint8_t msg[50];
|
||
uint8_t len = 0;
|
||
|
||
//0~3
|
||
msg[len++] = 0x90;
|
||
msg[len++] = 0xEB;
|
||
msg[len++] = rwrstate.device_id;
|
||
msg[len++] = rwrstate.msg_type;
|
||
//4~14
|
||
msg[len++] = 0;
|
||
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
//15
|
||
msg[len++] = rwrstate.threat_level;
|
||
//16-28
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
msg[len++] = 0;
|
||
//SUN
|
||
uint8_t sum = 0;
|
||
for(int i = 2; i<29;i++)
|
||
{
|
||
sum += msg[i];
|
||
}
|
||
|
||
msg[len++] = sum;
|
||
|
||
|
||
RA_Sock->writeDatagram((const char *)msg,len,ra_address, ra_out_port);
|
||
}
|
||
*/
|
||
}
|
||
|
||
void Payload::setDLSState(mavlink_dlsstate_t dlsstate)
|
||
{
|
||
//================设备ID==============
|
||
ui->label_flare_dev_id->setText(QString::number(dlsstate.device_id));
|
||
|
||
//=================自检状态=============
|
||
uint8_t seft_check = dlsstate.self_test_state;
|
||
if(seft_check == 0x00)
|
||
{
|
||
ui->label_flare_self_check_status->setText(QString("上电未自检"));
|
||
}
|
||
else if(seft_check == 0x01)
|
||
{
|
||
ui->label_flare_self_check_status->setText(QString("自检正常"));
|
||
}
|
||
else if(seft_check == 0x02)
|
||
{
|
||
ui->label_flare_self_check_status->setText(QString("自检异常"));
|
||
}
|
||
|
||
//====================================
|
||
uint8_t fire_switch = dlsstate.power_pyro_safety_state & 0x03;
|
||
if(fire_switch == 0x00)
|
||
{
|
||
ui->label_flare_fire_switch->setText(QString("火工关"));
|
||
}
|
||
else if(fire_switch == 0x01)
|
||
{
|
||
ui->label_flare_fire_switch->setText(QString("火工异常"));
|
||
}
|
||
else if(fire_switch == 0x03)
|
||
{
|
||
ui->label_flare_fire_switch->setText(QString("火工开"));
|
||
}
|
||
|
||
//====================================
|
||
uint8_t power_voltage = (dlsstate.power_pyro_safety_state & 0x0C) >> 2;
|
||
if(power_voltage == 0x00)
|
||
{
|
||
ui->label_flare_power->setText(QString("电压正常"));
|
||
}
|
||
else if(power_voltage == 0x01)
|
||
{
|
||
ui->label_flare_power->setText(QString("电压异常"));
|
||
}
|
||
|
||
//====================================
|
||
uint8_t release_switch = (dlsstate.power_pyro_safety_state & 0x10) >> 4;
|
||
if(release_switch == 0x00)
|
||
{
|
||
ui->label_flare_release_switch->setText(QString("关"));
|
||
}
|
||
else if(release_switch == 0x01)
|
||
{
|
||
ui->label_flare_release_switch->setText(QString("开"));
|
||
}
|
||
|
||
//====================================
|
||
uint8_t work_state = dlsstate.work_state;
|
||
if(work_state == 0x00)
|
||
{
|
||
ui->label_flare_status->setText(QString("待机"));
|
||
}
|
||
else if(work_state == 0x40)
|
||
{
|
||
ui->label_flare_status->setText(QString("自检测试"));
|
||
}
|
||
else if(work_state == 0xff)
|
||
{
|
||
ui->label_flare_status->setText(QString("手动触发"));
|
||
}
|
||
else if((work_state >= 0x01) && (work_state <= 0x0F))
|
||
{
|
||
ui->label_flare_status->setText(QString("执行任务 %1").arg(work_state));
|
||
}
|
||
|
||
//====================================
|
||
//弹正常显示绿色,异常显示红色
|
||
uint8_t cartridge1 = dlsstate.cartridge_state[2];
|
||
|
||
setColor(ui->label_flare_bom1,(cartridge1 & 0x01)?(state::failure):(state::success));
|
||
setColor(ui->label_flare_bom2,(cartridge1 & 0x02)?(state::failure):(state::success));
|
||
setColor(ui->label_flare_bom3,(cartridge1 & 0x04)?(state::failure):(state::success));
|
||
setColor(ui->label_flare_bom4,(cartridge1 & 0x08)?(state::failure):(state::success));
|
||
setColor(ui->label_flare_bom5,(cartridge1 & 0x10)?(state::failure):(state::success));
|
||
setColor(ui->label_flare_bom6,(cartridge1 & 0x20)?(state::failure):(state::success));
|
||
|
||
|
||
//====================================
|
||
//有弹显示绿色,无弹显示红色
|
||
uint8_t channel1 = dlsstate.channel_cartridge_state[2];
|
||
|
||
setColor(ui->label_flare_ch1,(channel1 & 0x01)?(state::success):(state::failure));
|
||
setColor(ui->label_flare_ch2,(channel1 & 0x02)?(state::success):(state::failure));
|
||
setColor(ui->label_flare_ch3,(channel1 & 0x04)?(state::success):(state::failure));
|
||
setColor(ui->label_flare_ch4,(channel1 & 0x08)?(state::success):(state::failure));
|
||
setColor(ui->label_flare_ch5,(channel1 & 0x10)?(state::success):(state::failure));
|
||
setColor(ui->label_flare_ch6,(channel1 & 0x20)?(state::success):(state::failure));
|
||
|
||
}
|
||
|
||
void Payload::setPayloadStatus(mavlink_payloadalarmstate_t payloadalarmstate)
|
||
{
|
||
if(payloadalarmstate.rwr_alarm_flag)
|
||
{
|
||
Radar_Status(1);
|
||
}
|
||
else
|
||
{
|
||
Radar_Status(0);
|
||
}
|
||
|
||
|
||
if(payloadalarmstate.uvwd_alarm_flag)
|
||
{
|
||
UV_Status(1);
|
||
}
|
||
else
|
||
{
|
||
UV_Status(0);
|
||
}
|
||
|
||
}
|
||
|
||
void Payload::on_pushButton_Cancel_clicked()
|
||
{
|
||
ui->lineEdit_CommandName->clear();
|
||
m_name.clear();
|
||
m_param1 = 0;
|
||
m_param2 = 0;
|
||
m_param3 = 0;
|
||
m_param4 = 0;
|
||
m_param5 = 0;
|
||
m_param6 = 0;
|
||
m_param7 = 0;
|
||
m_command = 0;
|
||
m_confirm = 0;
|
||
}
|
||
|
||
|
||
void Payload::on_commandClicked(QString name,
|
||
float param1,float param2,float param3,float param4,
|
||
float param5,float param6,float param7,
|
||
uint16_t command,uint8_t confirmation)
|
||
{
|
||
|
||
m_name = name;
|
||
m_param1 = param1;
|
||
m_param2 = param2;
|
||
m_param3 = param3;
|
||
m_param4 = param4;
|
||
m_param5 = param5;
|
||
m_param6 = param6;
|
||
m_param7 = param7;
|
||
m_command = command;
|
||
m_confirm = confirmation;
|
||
|
||
ui->lineEdit_CommandName->setText(name);
|
||
|
||
cmdType = 0;
|
||
}
|
||
|
||
void Payload::on_pushButton_SendCommand_clicked()
|
||
{
|
||
if(cmdType == 0)
|
||
{
|
||
if(m_command == 0)
|
||
{
|
||
emit showMessage(tr("please set command first ,command :%1").arg(m_command));
|
||
return;
|
||
}
|
||
}
|
||
|
||
if(cmdType == 0)
|
||
{
|
||
emit showMessage(tr("发送指令 ") + QString::number(m_command) + " " + m_name,5000);
|
||
emit cmd_long(m_param1,m_param2,m_param3,m_param4,m_param5,m_param6,m_param7,m_command,m_confirm);
|
||
|
||
}
|
||
else if(cmdType == 1)
|
||
{
|
||
|
||
//emit showMessage(tr("修改参数 ") + " " + m_id.toLatin1().data() + " " + QString::number(m_value),5000);
|
||
//emit WriteCmd(m_sysid,m_compid,m_id.toLatin1().data(),m_type,param_getvalue(m_value,m_type));
|
||
|
||
|
||
|
||
}
|
||
}
|
||
|
||
void Payload::RA_Parser_init(void)
|
||
{
|
||
RA_Parser_State = 0;
|
||
RA_Index = 0;
|
||
RA_SUM = 0;
|
||
}
|
||
|
||
qint8 Payload::RA_ParseByte(uint8_t byte)
|
||
{
|
||
qint8 index = -1;
|
||
switch (RA_Parser_State) {
|
||
case 0:
|
||
if (byte == 0x90) {
|
||
|
||
RA_Index = 0;
|
||
RA_Frame[RA_Index] = byte;
|
||
RA_Parser_State = 1;
|
||
}
|
||
break;
|
||
case 1:
|
||
if (byte == 0xEB) {
|
||
RA_Index ++;
|
||
RA_Frame[RA_Index] = byte;
|
||
RA_SUM = 0;
|
||
RA_Parser_State = 2;
|
||
} else {
|
||
// 帧头2错误,重置并重新处理当前字节(作为新的帧头1)
|
||
RA_Parser_State = 0;
|
||
}
|
||
break;
|
||
|
||
case 2:
|
||
if (RA_Index < 11) {
|
||
RA_Index ++;
|
||
RA_Frame[RA_Index] = byte;
|
||
RA_SUM += byte;
|
||
|
||
if(RA_Index == 11)
|
||
{
|
||
RA_Parser_State = 3;
|
||
}
|
||
|
||
}
|
||
break;
|
||
case 3:
|
||
if(RA_SUM == byte)//解析成功,发送数据
|
||
{
|
||
RA_Index++;
|
||
RA_Frame[RA_Index] = byte;
|
||
index = RA_Frame[2];
|
||
|
||
}
|
||
RA_Parser_State = 0;
|
||
break;
|
||
}
|
||
return index;
|
||
}
|
||
|
||
void Payload::UV_Parser_init(void)
|
||
{
|
||
UV_Parser_State = 0;
|
||
UV_Index = 0;
|
||
UV_SUM = 0;
|
||
}
|
||
|
||
qint8 Payload::UV_ParseByte(uint8_t byte)
|
||
{
|
||
qint8 index = -1;
|
||
switch (UV_Parser_State) {
|
||
case 0:
|
||
if (byte == 0xDD) {
|
||
UV_SUM = 0;
|
||
UV_Index = 0;
|
||
UV_Frame[UV_Index] = byte;
|
||
UV_SUM = byte;
|
||
UV_Parser_State = 1;
|
||
}
|
||
break;
|
||
case 1:
|
||
if (byte == 0x77) {
|
||
UV_Index ++;
|
||
UV_Frame[UV_Index] = byte;
|
||
UV_SUM += byte;
|
||
UV_Parser_State = 2;
|
||
} else {
|
||
// 帧头2错误,重置并重新处理当前字节(作为新的帧头1)
|
||
UV_Parser_State = 0;
|
||
}
|
||
break;
|
||
|
||
case 2:
|
||
if (UV_Index < 11) {
|
||
UV_Index ++;
|
||
UV_Frame[UV_Index] = byte;
|
||
UV_SUM += byte;
|
||
|
||
if(UV_Index == 11)
|
||
{
|
||
UV_Parser_State = 3;
|
||
}
|
||
|
||
}
|
||
break;
|
||
case 3:
|
||
if(UV_SUM == byte)//解析成功,发送数据
|
||
{
|
||
UV_Index++;
|
||
UV_Frame[UV_Index] = byte;
|
||
index = UV_Frame[2];
|
||
}
|
||
UV_Parser_State = 0;
|
||
break;
|
||
}
|
||
|
||
return index;
|
||
}
|
||
|
||
|
||
|
||
void Payload::setup_commands(void)
|
||
{
|
||
//set network
|
||
|
||
|
||
|
||
|
||
|
||
//========power===========================
|
||
connect(ui->pushButton_500W_Open,&QPushButton::clicked,this,[=](){
|
||
on_commandClicked(QString("电池500W输出开"),102,1,0,0,0,0,0,180,0);
|
||
});
|
||
|
||
connect(ui->pushButton_500W_Close,&QPushButton::clicked,this,[=](){
|
||
on_commandClicked(QString("电池500W输出关"),102,0,0,0,0,0,0,180,0);
|
||
});
|
||
|
||
//========radar=============================
|
||
connect(ui->pushButton_radar_open,&QPushButton::clicked,this,[=](){
|
||
if(ui->lineEdit_radar_ip->text().isEmpty() || ui->lineEdit_radar_port->text().isEmpty() || ui->lineEdit_radar_port_in->text().isEmpty())
|
||
{
|
||
showMessage("请设置正确的IP号和端口号",5000);
|
||
return;
|
||
}
|
||
|
||
|
||
//输出开启
|
||
QString ip = ui->lineEdit_radar_ip->text();
|
||
quint16 port = ui->lineEdit_radar_port->text().toUInt();
|
||
|
||
ra_in_port = ui->lineEdit_radar_port_in->text().toUInt();
|
||
|
||
ra_address.setAddress(ip);
|
||
ra_out_port = port;
|
||
|
||
|
||
Config *cfg = new Config();
|
||
|
||
cfg->set_Payload_RA_Info(ra_address,QVariant(ra_out_port),QVariant(ra_in_port));
|
||
|
||
delete cfg;
|
||
|
||
if(!RA_Sock)
|
||
{
|
||
RA_Sock = new QUdpSocket(this);
|
||
|
||
|
||
bool rst = RA_Sock->bind(QHostAddress::AnyIPv4,ra_in_port);
|
||
|
||
qDebug() << rst;
|
||
|
||
if(rst)
|
||
{
|
||
if(RA_Sock->open(QIODevice::ReadWrite))
|
||
{
|
||
qDebug() << "信息输出端口打开正常";
|
||
showMessage("雷达信息输出端口打开正常",5000);
|
||
}
|
||
|
||
|
||
|
||
|
||
connect(RA_Sock,&QUdpSocket::readyRead,this,[=](){
|
||
//收到其他地面站数据
|
||
/*
|
||
|
||
帧头 1 帧头 2 设备识别码 数据 和校验
|
||
0xDD 0x77 0x02 控制数据 前12个字节累加和
|
||
lbyte lbyte lbyte 9byte 1byte
|
||
|
||
*/
|
||
|
||
|
||
//发送180 113 4 设备号 报文类型 工作状态
|
||
//发送180 113 5 设备号 报文类型 工作状态
|
||
|
||
|
||
|
||
QObject *obj = sender();
|
||
|
||
if(obj)
|
||
{
|
||
QUdpSocket *clientsock = qobject_cast<QUdpSocket *>(obj);
|
||
if(clientsock)
|
||
{
|
||
while (clientsock->hasPendingDatagrams()) {
|
||
QByteArray datagram;
|
||
datagram.resize(clientsock->pendingDatagramSize());
|
||
clientsock->readDatagram(datagram.data(), datagram.size());
|
||
|
||
//qDebug() << "ra recive" << datagram;
|
||
|
||
qint8 rst = -1;
|
||
for (QByteArray::const_iterator i = datagram.cbegin(); i != datagram.cend(); ++i)
|
||
{
|
||
|
||
rst = RA_ParseByte(*i);
|
||
if(rst != -1)
|
||
{
|
||
/*
|
||
//发送180 114 4(5地面站发送) 识别码 命令字节 强度档位 范围档位
|
||
uint8_t dev = datagram[2];
|
||
uint8_t type = datagram[3] & 0x0F;
|
||
uint8_t state = ((datagram[3] & 0xF0) == 0x10)?(0x01):(0x00);
|
||
|
||
qDebug() << "ra recive" << dev << type << state;
|
||
|
||
on_commandClicked(QString("雷达告警控制指令"),113,4,dev,type,state,0,0,180,0);
|
||
on_pushButton_SendCommand_clicked();
|
||
*/
|
||
|
||
//发到encap
|
||
|
||
QByteArray rwr_encap;
|
||
rwr_encap.clear();
|
||
|
||
for(int i = 0;i< 13;i++)
|
||
{
|
||
rwr_encap[i] = RA_Frame[i];
|
||
}
|
||
|
||
//qDebug() << "send ra" << rwr_encap;
|
||
emit send_EnCapData(0x08,rwr_encap);
|
||
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
});
|
||
|
||
}
|
||
else
|
||
{
|
||
qDebug() << "绑定失败:" << RA_Sock->errorString();
|
||
showMessage("绑定失败:" + RA_Sock->errorString(),5000);
|
||
}
|
||
}
|
||
});
|
||
|
||
connect(ui->pushButton_radar_close,&QPushButton::clicked,this,[=](){
|
||
//输出关闭
|
||
if(RA_Sock)
|
||
{
|
||
RA_Sock->abort();
|
||
delete RA_Sock;
|
||
RA_Sock = nullptr;
|
||
showMessage("雷达信息输出端口关闭",5000);
|
||
}
|
||
});
|
||
|
||
connect(ui->pushButton_radar_uploadthreat,&QPushButton::clicked,this,[=](){
|
||
uint8_t level = ui->comboBox_radar_threat_level->currentData(Qt::UserRole).toInt();
|
||
on_commandClicked(QString("上传威胁等级"),113,1,level,0,0,0,0,180,0);
|
||
qDebug() << level;
|
||
});
|
||
|
||
connect(ui->pushButton_radar_uploadwarning,&QPushButton::clicked,this,[=](){
|
||
on_commandClicked(QString("注入雷达告警信号"),113,2,1,0,0,0,0,180,0);
|
||
});
|
||
|
||
connect(ui->pushButton_radar_cancel_uploadwarning,&QPushButton::clicked,this,[=](){
|
||
on_commandClicked(QString("取消注入雷达告警信号"),113,2,0,0,0,0,0,180,0);
|
||
});
|
||
|
||
connect(ui->pushButton_radar_open_maneuver,&QPushButton::clicked,this,[=](){
|
||
on_commandClicked(QString("自动逃逸机动开启"),113,3,1,0,0,0,0,180,0);
|
||
});
|
||
|
||
connect(ui->pushButton_radar_close_maneuver,&QPushButton::clicked,this,[=](){
|
||
on_commandClicked(QString("自动逃逸机动关闭"),113,3,0,0,0,0,0,180,0);
|
||
});
|
||
|
||
connect(ui->pushButton_radar_control_start,&QPushButton::clicked,this,[=](){
|
||
|
||
//发送180 114 4(5地面站发送) 识别码 命令字节 强度档位 范围档位
|
||
uint8_t dev = ui->spinBox_RA_ID->value();
|
||
uint8_t type = 4;
|
||
uint8_t state = 1;
|
||
|
||
on_commandClicked(QString("地面站雷达告警控制指令"),113,5,dev,type,state,0,0,180,0);
|
||
});
|
||
|
||
connect(ui->pushButton_radar_control_stop,&QPushButton::clicked,this,[=](){
|
||
|
||
//发送180 114 4(5地面站发送) 识别码 命令字节 强度档位 范围档位
|
||
uint8_t dev = ui->spinBox_RA_ID->value();
|
||
uint8_t type = 4;
|
||
uint8_t state = 0;
|
||
|
||
on_commandClicked(QString("地面站雷达告警控制指令"),113,5,dev,type,state,0,0,180,0);
|
||
});
|
||
|
||
|
||
connect(ui->pushButton_radar_fore_maneuver,&QPushButton::clicked,this,[=](){
|
||
|
||
on_commandClicked(QString("地面站雷达告警控制指令"),112,3,0,0,0,0,0,180,0);
|
||
});
|
||
|
||
connect(ui->pushButton_radar_exit_fore_maneuver,&QPushButton::clicked,this,[=](){
|
||
|
||
on_commandClicked(QString("地面站雷达告警控制指令"),112,2,0,0,0,0,0,180,0);
|
||
});
|
||
|
||
|
||
//==============uv=========================
|
||
connect(ui->pushButton_uv_open,&QPushButton::clicked,this,[=](){
|
||
if(ui->lineEdit_uv_ip->text().isEmpty() || ui->lineEdit_uv_port->text().isEmpty() || ui->lineEdit_uv_port_in->text().isEmpty())
|
||
{
|
||
showMessage("请设置正确的IP号和端口号",5000);
|
||
return;
|
||
}
|
||
|
||
//输出开启
|
||
QString ip = ui->lineEdit_uv_ip->text();
|
||
quint16 port = ui->lineEdit_uv_port->text().toUInt();
|
||
|
||
uv_in_port = ui->lineEdit_uv_port_in->text().toUInt();
|
||
|
||
uv_address.setAddress(ip);
|
||
uv_out_port = port;
|
||
|
||
Config *cfg = new Config();
|
||
|
||
cfg->set_Payload_UV_Info(uv_address,QVariant(uv_out_port),QVariant(uv_in_port));
|
||
|
||
delete cfg;
|
||
|
||
|
||
if(!UV_Sock)
|
||
{
|
||
UV_Sock = new QUdpSocket(this);
|
||
int rst = UV_Sock->bind(QHostAddress::AnyIPv4,uv_in_port);
|
||
if(rst)
|
||
{
|
||
if(UV_Sock->open(QIODevice::ReadWrite))
|
||
{
|
||
qDebug() << "信息输出端口打开正常";
|
||
showMessage("紫外信息输出端口打开正常",5000);
|
||
UV_Parser_init();
|
||
}
|
||
|
||
|
||
|
||
connect(UV_Sock,&QUdpSocket::readyRead,this,[=](){
|
||
|
||
//收到其他地面站数据
|
||
/*
|
||
|
||
帧头 1 帧头 2 设备识别码 数据 和校验
|
||
0xDD 0x77 0x02 控制数据 前12个字节累加和
|
||
lbyte lbyte lbyte 9byte 1byte
|
||
|
||
*/
|
||
|
||
QObject *obj = sender();
|
||
|
||
if(obj)
|
||
{
|
||
QUdpSocket *clientsock = qobject_cast<QUdpSocket *>(obj);
|
||
if(clientsock)
|
||
{
|
||
while (clientsock->hasPendingDatagrams()) {
|
||
QByteArray datagram;
|
||
datagram.resize(clientsock->pendingDatagramSize());
|
||
clientsock->readDatagram(datagram.data(), datagram.size());
|
||
|
||
|
||
//qDebug() << "uv recive" << datagram;
|
||
qint8 rst = -1;
|
||
for (QByteArray::const_iterator i = datagram.cbegin(); i != datagram.cend(); ++i)
|
||
{
|
||
|
||
rst = UV_ParseByte(*i);
|
||
if(rst != -1)
|
||
{
|
||
|
||
/*
|
||
//发送180 114 5 识别码 命令字节 强度档位 范围档位
|
||
uint8_t id = datagram[2];
|
||
uint8_t cmd = datagram[3];
|
||
uint8_t extent = datagram[4];
|
||
uint8_t level = datagram[5];
|
||
|
||
on_commandClicked(QString("紫外告警控制指令"),114,5,id,cmd,extent,level,0,180,0);
|
||
on_pushButton_SendCommand_clicked();
|
||
*/
|
||
|
||
//发送到encap
|
||
|
||
QByteArray uv_encap;
|
||
uv_encap.clear();
|
||
|
||
for(int i = 0;i< 13;i++)
|
||
{
|
||
uv_encap[i] = UV_Frame[i];
|
||
}
|
||
|
||
//qDebug() << "send uv " << uv_encap;
|
||
emit send_EnCapData(0x09,uv_encap);
|
||
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
});
|
||
}
|
||
else
|
||
{
|
||
qDebug() << "绑定失败:" << UV_Sock->errorString();
|
||
showMessage("绑定失败:" + UV_Sock->errorString(),5000);
|
||
}
|
||
}
|
||
});
|
||
|
||
connect(ui->pushButton_uv_close,&QPushButton::clicked,this,[=](){
|
||
//输出关闭
|
||
if(UV_Sock)
|
||
{
|
||
UV_Sock->abort();
|
||
delete UV_Sock;
|
||
UV_Sock = nullptr;
|
||
showMessage("紫外信息输出端口关闭",5000);
|
||
}
|
||
});
|
||
|
||
connect(ui->pushButton_uv_power_on,&QPushButton::clicked,this,[=](){
|
||
on_commandClicked(QString("上电"),114,1,1,0,0,0,0,180,0);
|
||
});
|
||
|
||
connect(ui->pushButton_uv_power_off,&QPushButton::clicked,this,[=](){
|
||
on_commandClicked(QString("下电"),114,1,0,0,0,0,0,180,0);
|
||
});
|
||
|
||
/*connect(ui->pushButton_uv_uploadthreat,&QPushButton::clicked,this,[=](){
|
||
uint8_t level = ui->lineEdit_uv_set_level->text().toInt();
|
||
uint8_t extent = ui->lineEdit_uv_set_extent->text().toInt();
|
||
|
||
on_commandClicked(QString("上传阈值"),114,2,level,extent,0,0,0,180,0);
|
||
});
|
||
*/
|
||
|
||
connect(ui->pushButton_uv_uploadwarning,&QPushButton::clicked,this,[=](){
|
||
on_commandClicked(QString("注入紫外告警信号"),114,3,1,0,0,0,0,180,0);
|
||
});
|
||
|
||
connect(ui->pushButton_uv_cancel_uploadwarning,&QPushButton::clicked,this,[=](){
|
||
on_commandClicked(QString("取消注入紫外告警信号"),114,3,0,0,0,0,0,180,0);
|
||
});
|
||
|
||
connect(ui->pushButton_uv_open_maneuver,&QPushButton::clicked,this,[=](){
|
||
on_commandClicked(QString("自动逃逸机动开启"),114,4,1,0,0,0,0,180,0);
|
||
});
|
||
|
||
connect(ui->pushButton_uv_close_maneuver,&QPushButton::clicked,this,[=](){
|
||
on_commandClicked(QString("自动逃逸机动关闭"),114,4,0,0,0,0,0,180,0);
|
||
});
|
||
|
||
|
||
connect(ui->pushButton_uv_fore_maneuver,&QPushButton::clicked,this,[=](){
|
||
|
||
on_commandClicked(QString("地面站雷达告警控制指令"),112,3,0,0,0,0,0,180,0);
|
||
});
|
||
|
||
connect(ui->pushButton_uv_exit_fore_maneuver,&QPushButton::clicked,this,[=](){
|
||
|
||
on_commandClicked(QString("地面站雷达告警控制指令"),112,2,0,0,0,0,0,180,0);
|
||
});
|
||
|
||
//================================================
|
||
connect(ui->pushButton_flare_self_check,&QPushButton::clicked,this,[=](){
|
||
on_commandClicked(QString("自检"),115,1,0,0,0,0,0,180,0);
|
||
});
|
||
|
||
connect(ui->pushButton_flare_circuit_on,&QPushButton::clicked,this,[=](){
|
||
on_commandClicked(QString("保险开"),115,2,1,0,0,0,0,180,0);
|
||
});
|
||
|
||
connect(ui->pushButton_flare_circuit_off,&QPushButton::clicked,this,[=](){
|
||
on_commandClicked(QString("保险关"),115,2,0,0,0,0,0,180,0);
|
||
});
|
||
|
||
connect(ui->pushButton_flare_release_time_set,&QPushButton::clicked,this,[=](){
|
||
uint16_t time = ui->lineEdit_flare_release_time->text().toInt();
|
||
|
||
if(time > 60000)
|
||
{
|
||
time = 60000;
|
||
}
|
||
|
||
on_commandClicked(QString("自动释放时间间隔(ms)设置"),115,3,time,0,0,0,0,180,0);
|
||
});
|
||
|
||
connect(ui->pushButton_flare_on,&QPushButton::clicked,this,[=](){
|
||
on_commandClicked(QString("告警后自动释放-开"),115,4,1,0,0,0,0,180,0);
|
||
});
|
||
|
||
connect(ui->pushButton_flare_off,&QPushButton::clicked,this,[=](){
|
||
on_commandClicked(QString("告警后自动释放-关"),115,4,0,0,0,0,0,180,0);
|
||
});
|
||
|
||
connect(ui->pushButton_flare_manrelease_set,&QPushButton::clicked,this,[=](){
|
||
uint16_t time = ui->lineEdit_flare_manrelease_time->text().toInt();
|
||
|
||
if(time > 60000)
|
||
{
|
||
time = 60000;
|
||
}
|
||
|
||
on_commandClicked(QString("手动释放时间间隔(ms)设置"),115,5,time,0,0,0,0,180,0);
|
||
});
|
||
|
||
connect(ui->pushButton_flare_manrelease,&QPushButton::clicked,this,[=](){
|
||
on_commandClicked(QString("手动释放"),115,6,1,flare_release_status,0,0,0,180,0);
|
||
});
|
||
|
||
//=================================================
|
||
connect(ui->pushButton_flare_release_bom1,&QPushButton::clicked,this,[=](){
|
||
|
||
quint32 bitmask = 0x01;
|
||
|
||
if((flare_release_status & bitmask) == 0x00)
|
||
{
|
||
flare_release_status |= bitmask;
|
||
}
|
||
else
|
||
{
|
||
flare_release_status &= ~bitmask;
|
||
}
|
||
|
||
setColor(ui->pushButton_flare_release_bom1,(flare_release_status & bitmask)?(green_state):(white_state));
|
||
|
||
qDebug() << "flare_release_status" << flare_release_status;
|
||
});
|
||
|
||
connect(ui->pushButton_flare_release_bom2,&QPushButton::clicked,this,[=](){
|
||
|
||
quint32 bitmask = 0x02;
|
||
|
||
if((flare_release_status & bitmask) == 0x00)
|
||
{
|
||
flare_release_status |= bitmask;
|
||
}
|
||
else
|
||
{
|
||
flare_release_status &= ~bitmask;
|
||
}
|
||
|
||
setColor(ui->pushButton_flare_release_bom2,(flare_release_status & bitmask)?(green_state):(white_state));
|
||
qDebug() << "flare_release_status" << flare_release_status;
|
||
});
|
||
|
||
connect(ui->pushButton_flare_release_bom3,&QPushButton::clicked,this,[=](){
|
||
|
||
quint32 bitmask = 0x04;
|
||
|
||
if((flare_release_status & bitmask) == 0x00)
|
||
{
|
||
flare_release_status |= bitmask;
|
||
}
|
||
else
|
||
{
|
||
flare_release_status &= ~bitmask;
|
||
}
|
||
|
||
setColor(ui->pushButton_flare_release_bom3,(flare_release_status & bitmask)?(green_state):(white_state));
|
||
qDebug() << "flare_release_status" << flare_release_status;
|
||
});
|
||
|
||
connect(ui->pushButton_flare_release_bom4,&QPushButton::clicked,this,[=](){
|
||
|
||
quint32 bitmask = 0x08;
|
||
|
||
if((flare_release_status & bitmask) == 0x00)
|
||
{
|
||
flare_release_status |= bitmask;
|
||
}
|
||
else
|
||
{
|
||
flare_release_status &= ~bitmask;
|
||
}
|
||
|
||
setColor(ui->pushButton_flare_release_bom4,(flare_release_status & bitmask)?(green_state):(white_state));
|
||
qDebug() << "flare_release_status" << flare_release_status;
|
||
});
|
||
|
||
connect(ui->pushButton_flare_release_bom5,&QPushButton::clicked,this,[=](){
|
||
|
||
quint32 bitmask = 0x10;
|
||
|
||
if((flare_release_status & bitmask) == 0x00)
|
||
{
|
||
flare_release_status |= bitmask;
|
||
}
|
||
else
|
||
{
|
||
flare_release_status &= ~bitmask;
|
||
}
|
||
|
||
setColor(ui->pushButton_flare_release_bom5,(flare_release_status & bitmask)?(green_state):(white_state));
|
||
qDebug() << "flare_release_status" << flare_release_status;
|
||
});
|
||
|
||
connect(ui->pushButton_flare_release_bom6,&QPushButton::clicked,this,[=](){
|
||
|
||
quint32 bitmask = 0x20;
|
||
|
||
if((flare_release_status & bitmask) == 0x00)
|
||
{
|
||
flare_release_status |= bitmask;
|
||
}
|
||
else
|
||
{
|
||
flare_release_status &= ~bitmask;
|
||
}
|
||
|
||
setColor(ui->pushButton_flare_release_bom6,(flare_release_status & bitmask)?(green_state):(white_state));
|
||
qDebug() << "flare_release_status" << flare_release_status;
|
||
});
|
||
|
||
|
||
|
||
|
||
|
||
}
|
||
|
||
void Payload::setup_actions(void)
|
||
{
|
||
ra_timer = new QTimer();
|
||
|
||
ra_timer->setInterval(500);
|
||
|
||
connect(ra_timer,&QTimer::timeout,this,[=](){
|
||
if((ra_status & 0x01) == 0x01)//前16为做状态,后16后做指示
|
||
{
|
||
if((ra_status & 0x010000) == 0x010000)
|
||
{
|
||
setColor(ui->label_radar_status,state::warning);
|
||
ra_status &= ~0x010000;
|
||
}
|
||
else
|
||
{
|
||
setColor(ui->label_radar_status,state::inital);
|
||
ra_status |= 0x010000;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
ra_timer->stop();
|
||
setColor(ui->label_radar_status,state::inital);
|
||
}
|
||
});
|
||
|
||
|
||
uv_timer = new QTimer();
|
||
|
||
uv_timer->setInterval(500);
|
||
|
||
connect(uv_timer,&QTimer::timeout,this,[=](){
|
||
if((uv_status & 0x01) == 0x01)//前16为做状态,后16后做指示
|
||
{
|
||
if((uv_status & 0x010000) == 0x010000)
|
||
{
|
||
setColor(ui->label_uv_status,state::warning);
|
||
uv_status &= ~0x010000;
|
||
}
|
||
else
|
||
{
|
||
setColor(ui->label_uv_status,state::inital);
|
||
uv_status |= 0x010000;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
uv_timer->stop();
|
||
setColor(ui->label_uv_status,state::inital);
|
||
}
|
||
});
|
||
}
|
||
|
||
|
||
|
||
void Payload::Radar_Status(quint32 flag)
|
||
{
|
||
if(flag == 0x01)//闪烁
|
||
{
|
||
if(!ra_timer->isActive())
|
||
{
|
||
ra_timer->start();
|
||
}
|
||
ra_status |= 0x01;
|
||
}
|
||
else
|
||
{
|
||
ra_status &= ~0x01;
|
||
}
|
||
}
|
||
|
||
void Payload::UV_Status(quint32 flag)
|
||
{
|
||
if(flag == 0x01)//闪烁
|
||
{
|
||
if(!uv_timer->isActive())
|
||
{
|
||
uv_timer->start();
|
||
}
|
||
uv_status |= 0x01;
|
||
}
|
||
else
|
||
{
|
||
uv_status &= ~0x01;
|
||
}
|
||
}
|
||
|
||
|
||
void Payload::commandAccepted(bool flag,uint16_t command,uint8_t result)
|
||
{
|
||
bool isFundSender = false;
|
||
QString string;
|
||
//找到消息的发送者
|
||
|
||
|
||
//QObjectList list = ui->frame->children();
|
||
|
||
// qDebug() << list;
|
||
|
||
//qDebug() << CommandBox.findChildren();
|
||
|
||
|
||
if(command == m_command)
|
||
{
|
||
isFundSender = true;
|
||
|
||
|
||
switch (result) {
|
||
case MAV_RESULT_ACCEPTED:
|
||
string.append(tr("%1,%2 accepted and executed").arg(command).arg(m_name));
|
||
break;
|
||
case MAV_RESULT_TEMPORARILY_REJECTED:
|
||
string.append(tr("%1,%2 rejected").arg(command).arg(m_name));
|
||
break;
|
||
case MAV_RESULT_DENIED:
|
||
string.append(tr("%1,%2 permanently denied").arg(command).arg(m_name));
|
||
break;
|
||
case MAV_RESULT_UNSUPPORTED:
|
||
string.append(tr("%1,%2 unsupported").arg(command).arg(m_name));
|
||
break;
|
||
case MAV_RESULT_FAILED:
|
||
string.append(tr("%1,%2 failed").arg(command).arg(m_name));
|
||
break;
|
||
case MAV_RESULT_IN_PROGRESS:
|
||
string.append(tr("%1,%2 being executed").arg(command).arg(m_name));
|
||
break;
|
||
case 0xFE:
|
||
string.append(tr("%1,%2 time out").arg(command).arg(m_name));
|
||
break;
|
||
case 0xFF:
|
||
string.append(tr("Please do not operate too fast, the last instruction has not been sent"));
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
|
||
ui->lineEdit_CommandName->clear();
|
||
m_name.clear();
|
||
m_param1 = 0;
|
||
m_param2 = 0;
|
||
m_param3 = 0;
|
||
m_param4 = 0;
|
||
m_param5 = 0;
|
||
m_param6 = 0;
|
||
m_param7 = 0;
|
||
m_command = 0;
|
||
m_confirm = 0;
|
||
|
||
if(string.size() > 0)
|
||
{
|
||
|
||
emit say(string);
|
||
|
||
|
||
emit showMessage(string);
|
||
}
|
||
|
||
|
||
}
|
||
|
||
/*
|
||
if(string.size() > 0)
|
||
{
|
||
QTextToSpeech *tts = new QTextToSpeech();
|
||
tts->say(string);
|
||
tts->deleteLater();
|
||
emit showMessage(string);
|
||
}
|
||
*/
|
||
}
|
||
|
||
|