Files
gcs-nf/App/ToolsUI/INS/INS.cpp
T
2022-07-23 10:59:04 +08:00

475 lines
19 KiB
C++

#include "INS.h"
#include "ui_INS.h"
INS::INS(QWidget *parent) :
ToolsWidget(parent),
ui(new Ui::INS)
{
ui->setupUi(this);
QFile file(":/qss/INS.qss");
file.open(QFile::ReadOnly);
QTextStream filetext(&file);
QString stylesheet = filetext.readAll();
this->setStyleSheet(stylesheet);
file.close();
setWindowTitle(tr("INS"));
//INS
setColor(ui->labRollRate, inital);
setColor(ui->labYawRate, inital);
setColor(ui->labPitchRate, inital);
setColor(ui->labYaw, inital);
setColor(ui->labPitch, inital);
setColor(ui->labRoll, inital);
setColor(ui->labAx, inital);
setColor(ui->labAy, inital);
setColor(ui->labAz, inital);
//NAV
setColor(ui->labLongitude, inital);
setColor(ui->labLatitude, inital);
setColor(ui->labAltitude, inital);
setColor(ui->labWorktime, inital);
setColor(ui->labVe, inital);
setColor(ui->labVn, inital);
setColor(ui->labVu, inital);
setColor(ui->labGs, inital);
setColor(ui->labHeading, inital);
setColor(ui->labAe, inital);
setColor(ui->labAn, inital);
setColor(ui->labAu, inital);
setColor(ui->labSatelliteLongitude, inital);
setColor(ui->labSatelliteLatitude, inital);
setColor(ui->labSatelliteAltitude, inital);
setColor(ui->labSatelliteVe, inital);
setColor(ui->labSatelliteVn, inital);
setColor(ui->labSatelliteVu, inital);
setColor(ui->labDate, inital);
setColor(ui->labTime, inital);
//工作状态字1
setColor(ui->chkNavStatus, inital);
setColor(ui->chkInsStatus, inital);
setColor(ui->chkHeadingSrc, inital);
setColor(ui->chkSatellite, inital);
//工作状态字2
setColor(ui->chkIns, inital);
setColor(ui->chkAltitudeState, inital);
setColor(ui->chkExRTK, inital);
setColor(ui->chkExSatellite, inital);
setColor(ui->chkRTK, inital);
setColor(ui->chkSate, inital);
setColor(ui->chkHeadingState, inital);
setColor(ui->chkComm, inital);
//工作状态字3
setColor(ui->chkDas, inital);
setColor(ui->chkInstall, inital);
setColor(ui->chkAltitudeInfo, inital);
//=============sbg===============
//imu
setColor(ui->label_imu_timestamp, inital);
setColor(ui->label_imu_ax, inital);
setColor(ui->label_imu_ay, inital);
setColor(ui->label_imu_az, inital);
setColor(ui->label_imu_gx, inital);
setColor(ui->label_imu_gy, inital);
setColor(ui->label_imu_gz, inital);
setColor(ui->label_imu_temp, inital);
setColor(ui->label_imu_velx, inital);
setColor(ui->label_imu_vely, inital);
setColor(ui->label_imu_velz, inital);
setColor(ui->label_imu_anglex, inital);
setColor(ui->label_imu_angley, inital);
setColor(ui->label_imu_anglez, inital);
setColor(ui->checkBox_imu_com_ok, inital);
setColor(ui->checkBox_imu_status, inital);
setColor(ui->checkBox_imu_ax_bit, inital);
setColor(ui->checkBox_imu_ay_bit, inital);
setColor(ui->checkBox_imu_az_bit, inital);
setColor(ui->checkBox_imu_gx_bit, inital);
setColor(ui->checkBox_imu_gy_bit, inital);
setColor(ui->checkBox_imu_gz_bit, inital);
setColor(ui->checkBox_imu_a_inrange, inital);
setColor(ui->checkBox_imu_g_inrange, inital);
//euler
setColor(ui->label_euler_timestamp, inital);
setColor(ui->label_euler_roll, inital);
setColor(ui->label_euler_pitch, inital);
setColor(ui->label_euler_yaw, inital);
setColor(ui->label_euler_acc_roll, inital);
setColor(ui->label_euler_acc_pitch, inital);
setColor(ui->label_euler_acc_yaw, inital);
setColor(ui->label_euler_solutionMode, inital);
setColor(ui->checkBox_euler_attitude, inital);
setColor(ui->checkBox_euler_heading, inital);
setColor(ui->checkBox_euler_velocity, inital);
setColor(ui->checkBox_euler_position, inital);
setColor(ui->checkBox_euler_vertref, inital);
setColor(ui->checkBox_euler_magref, inital);
setColor(ui->checkBox_euler_gps1_vel, inital);
setColor(ui->checkBox_euler_gps1_pos, inital);
setColor(ui->checkBox_euler_gps1_hdt, inital);
setColor(ui->checkBox_euler_align, inital);
setColor(ui->checkBox_euler_gps2_vel, inital);
setColor(ui->checkBox_euler_gps2_pos, inital);
setColor(ui->checkBox_euler_gps2_hdt, inital);
setColor(ui->checkBox_euler_odo, inital);
setColor(ui->checkBox_euler_bt, inital);
setColor(ui->checkBox_euler_wt, inital);
setColor(ui->checkBox_euler_usel, inital);
setColor(ui->checkBox_euler_airdata, inital);
setColor(ui->checkBox_euler_zupt, inital);
setColor(ui->checkBox_euler_depth, inital);
//vel
setColor(ui->label_vel_timestamp, inital);
setColor(ui->label_vel_tow, inital);
setColor(ui->label_vel_vn, inital);
setColor(ui->label_vel_ve, inital);
setColor(ui->label_vel_vd, inital);
setColor(ui->label_vel_acc_vn, inital);
setColor(ui->label_vel_acc_ve, inital);
setColor(ui->label_vel_acc_vd, inital);
setColor(ui->label_vel_course, inital);
setColor(ui->label_vel_acc_course, inital);
setColor(ui->label_vel_status, inital);
setColor(ui->label_vel_type, inital);
//pos
setColor(ui->label_pos_timestamp, inital);
setColor(ui->label_pos_tow, inital);
setColor(ui->label_pos_lat, inital);
setColor(ui->label_pos_lng, inital);
setColor(ui->label_pos_alt, inital);
setColor(ui->label_pos_undelation, inital);
setColor(ui->label_pos_acc_lat, inital);
setColor(ui->label_pos_acc_lng, inital);
setColor(ui->label_pos_acc_alt, inital);
setColor(ui->label_pos_svn, inital);
setColor(ui->label_pos_base_id, inital);
setColor(ui->label_pos_diff_age, inital);
setColor(ui->checkBox_pos_status, inital);
setColor(ui->checkBox_pos_type, inital);
setColor(ui->checkBox_pos_GPS_L1, inital);
setColor(ui->checkBox_pos_GPS_L2, inital);
setColor(ui->checkBox_pos_GPS_L5, inital);
setColor(ui->checkBox_pos_GLO_L1, inital);
setColor(ui->checkBox_pos_GLO_L2, inital);
setColor(ui->checkBox_pos_GLO_L3, inital);
setColor(ui->checkBox_pos_GAL_E1, inital);
setColor(ui->checkBox_pos_GAL_E5A, inital);
setColor(ui->checkBox_pos_GAL_E5ALT, inital);
setColor(ui->checkBox_pos_GAL_E5B, inital);
setColor(ui->checkBox_pos_GAL_E6, inital);
setColor(ui->checkBox_pos_BDS_B1, inital);
setColor(ui->checkBox_pos_BDS_B2, inital);
setColor(ui->checkBox_pos_BDS_B3, inital);
}
INS::~INS()
{
delete ui;
}
void INS::recieveData(const int &id, const QByteArray &data)
{
//qDebug() << "data" << data;
//return;
if(id == 0)
{
Parse *parse = new Parse;
connect(this,&INS::parseData,
parse,&Parse::parseData);
connect(parse,&Parse::INS_Info,
this,&INS::INS_Info);
connect(parse,&Parse::NAV_Info,
this,&INS::NAV_Info);
//sbg imu
connect(parse,&Parse::imu_info,
this,&INS::imu);
//sbg euler
connect(parse,&Parse::euler_info,
this,&INS::euler);
QThreadPool::globalInstance()->start(parse);
emit parseData(id,data);
}
else if(id == 1)
{
Parse *parse = new Parse;
connect(this,&INS::parseData,
parse,&Parse::parseData);
//sbg vel
connect(parse,&Parse::vel_info,
this,&INS::vel);
//sbg pos
connect(parse,&Parse::pos_info,
this,&INS::pos);
QThreadPool::globalInstance()->start(parse);
emit parseData(id,data);
}
}
void INS::INS_Info(Parse::_ins info)
{
ui->labYaw->setText(QString::number(info.yaw, 'f', 2) );
ui->labPitch->setText(QString::number(info.pitch, 'f', 2) );
ui->labRoll->setText(QString::number(info.roll, 'f', 2) );
ui->labRollRate->setText(QString::number(info.roll_rate, 'f', 2) );
ui->labYawRate->setText(QString::number(info.yaw_rate, 'f', 2) );
ui->labPitchRate->setText(QString::number(info.pitch_rate, 'f', 2) );
ui->labAx->setText(QString::number(info.ax, 'f', 2) );
ui->labAy->setText(QString::number(info.ay, 'f', 2) );
ui->labAz->setText(QString::number(info.az, 'f', 2) );
}
void INS::NAV_Info(Parse::_nav info)
{
ui->labLongitude->setText(QString::number(info.longitude, 'f', 8) );
ui->labLatitude->setText(QString::number(info.latitude, 'f', 8) );
ui->labAltitude->setText(QString::number(info.altitude, 'f', 1) );
ui->labWorktime->setText(QString("%1").arg(info.worktime) );
ui->labVe->setText(QString::number(info.Ve, 'f', 2) );
ui->labVn->setText(QString::number(info.Vn, 'f', 2) );
ui->labVu->setText(QString::number(info.Vu, 'f', 2) );
ui->labGs->setText(QString::number(info.Gs, 'f', 2) );
ui->labHeading->setText(QString::number(info.heading, 'f', 2) );
ui->labAe->setText(QString::number(info.Ae, 'f', 2) );
ui->labAn->setText(QString::number(info.An, 'f', 2) );
ui->labAu->setText(QString::number(info.Au, 'f', 2) );
ui->labSatelliteLongitude->setText(QString::number(info.satellite_longitude, 'f', 8) );
ui->labSatelliteLatitude->setText(QString::number(info.satellite_latitude, 'f', 8) );
ui->labSatelliteAltitude->setText(QString::number(info.satellite_altitude, 'f', 1) );
ui->labSatelliteVe->setText(QString::number(info.satellite_Ve, 'f', 2) );
ui->labSatelliteVn->setText(QString::number(info.satellite_Vn, 'f', 2) );
ui->labSatelliteVu->setText(QString::number(info.satellite_Vu, 'f', 2) );
ui->labDate->setText(QString("%1.%2.%3").arg(info.year, 4).arg(info.month, 2).arg(info.day, 2));
ui->labTime->setText(QString("%1:%2:%3").arg(info.hour, 2).arg(info.minute, 2).arg(info.second, 2));
//工作状态字1
ui->chkNavStatus->setText("导航状态:" + info.state1.navStatus);
ui->chkInsStatus->setText("组合状态:" + info.state1.insStatus);
ui->chkHeadingSrc->setText("航向信号源:" + info.state1.headingSrc);
ui->chkSatellite->setText("卫星信号源:" + info.state1.Satellite);
//工作状态字2
setColor(ui->chkIns, (info.state2.ins)?(state::success):(state::failure));
setColor(ui->chkAltitudeState, (info.state2.altitude)?(state::success):(state::failure));
setColor(ui->chkExRTK, (info.state2.exRTK)?(state::success):(state::failure));
setColor(ui->chkExSatellite, (info.state2.exSatellite)?(state::success):(state::failure));
setColor(ui->chkRTK, (info.state2.RTK)?(state::success):(state::failure));
setColor(ui->chkSate, (info.state2.satellite)?(state::success):(state::failure));
setColor(ui->chkHeadingState, (info.state2.heading)?(state::success):(state::failure));
setColor(ui->chkComm, (info.state2.communication)?(state::success):(state::failure));
//工作状态字3
setColor(ui->chkDas, (info.state3.das)?(state::success):(state::failure));
setColor(ui->chkInstall, (info.state3.install)?(state::success):(state::failure));
ui->chkAltitudeInfo->setText("高度阻尼信号:" + info.state3.altitudeInfo);
if(info.state3.altitudeInfo == tr(""))
{
setColor(ui->chkAltitudeInfo,state::failure);
}
else if(info.state3.altitudeInfo == tr("卫星"))
{
setColor(ui->chkAltitudeInfo,state::success);
}
else if(info.state3.altitudeInfo == tr("气压"))
{
setColor(ui->chkAltitudeInfo,state::warning);
}
}
void INS::imu(Parse::_imu info)
{
ui->label_imu_timestamp->setText(QString::number(info.time_stamp));
ui->label_imu_ax->setText(QString::number(info.accel_x, 'f', 2));
ui->label_imu_ay->setText(QString::number(info.accel_y, 'f', 2));
ui->label_imu_az->setText(QString::number(info.accel_z, 'f', 2));
ui->label_imu_gx->setText(QString::number(info.gyro_x, 'f', 2));
ui->label_imu_gy->setText(QString::number(info.gyro_y, 'f', 2));
ui->label_imu_gz->setText(QString::number(info.gyro_z, 'f', 2));
ui->label_imu_temp->setText(QString::number(info.temp, 'f', 2));
ui->label_imu_velx->setText(QString::number(info.delta_vel_x, 'f', 2));
ui->label_imu_vely->setText(QString::number(info.delta_vel_y, 'f', 2));
ui->label_imu_velz->setText(QString::number(info.delta_vel_z, 'f', 2));
ui->label_imu_anglex->setText(QString::number(info.delta_angle_x, 'f', 2));
ui->label_imu_angley->setText(QString::number(info.delta_angle_y, 'f', 2));
ui->label_imu_anglez->setText(QString::number(info.delta_angle_z, 'f', 2));
setColor(ui->checkBox_imu_com_ok, (info.status.com_ok)?(success):(failure));
setColor(ui->checkBox_imu_status, (info.status.status_bit)?(success):(failure));
setColor(ui->checkBox_imu_ax_bit, (info.status.accel_x_bit)?(success):(failure));
setColor(ui->checkBox_imu_ay_bit, (info.status.accel_y_bit)?(success):(failure));
setColor(ui->checkBox_imu_az_bit, (info.status.accel_z_bit)?(success):(failure));
setColor(ui->checkBox_imu_gx_bit, (info.status.gyro_x_bit)?(success):(failure));
setColor(ui->checkBox_imu_gy_bit, (info.status.gyro_y_bit)?(success):(failure));
setColor(ui->checkBox_imu_gz_bit, (info.status.gyro_z_bit)?(success):(failure));
setColor(ui->checkBox_imu_a_inrange, (info.status.accel_in_range)?(success):(failure));
setColor(ui->checkBox_imu_g_inrange, (info.status.gyro_in_range)?(success):(failure));
}
void INS::euler(Parse::_euler info)
{
ui->label_euler_timestamp->setText(QString::number(info.time_stamp));
ui->label_euler_roll->setText(QString::number(info.roll, 'f', 2));
ui->label_euler_pitch->setText(QString::number(info.pitch, 'f', 2));
ui->label_euler_yaw->setText(QString::number(info.yaw, 'f', 2));
ui->label_euler_acc_roll->setText(QString::number(info.roll_acc, 'f', 2));
ui->label_euler_acc_pitch->setText(QString::number(info.pitch_acc, 'f', 2));
ui->label_euler_acc_yaw->setText(QString::number(info.yaw_acc, 'f', 2));
ui->label_euler_solutionMode->setText(info.solution.solutionMode);
setColor(ui->checkBox_euler_attitude, (info.solution.attitude_valid)?(success):(failure));
setColor(ui->checkBox_euler_heading, (info.solution.heading_valid)?(success):(failure));
setColor(ui->checkBox_euler_velocity, (info.solution.velocity_valid)?(success):(failure));
setColor(ui->checkBox_euler_position, (info.solution.position_valid)?(success):(failure));
setColor(ui->checkBox_euler_vertref, (info.solution.vert_ref_used)?(success):(failure));
setColor(ui->checkBox_euler_magref, (info.solution.mag_ref_used)?(success):(failure));
setColor(ui->checkBox_euler_gps1_vel, (info.solution.gps1_vel_used)?(success):(failure));
setColor(ui->checkBox_euler_gps1_pos, (info.solution.gps1_pos_used)?(success):(failure));
setColor(ui->checkBox_euler_gps1_hdt, (info.solution.gps1_hdt_used)?(success):(failure));
setColor(ui->checkBox_euler_align, (info.solution.align_valid)?(success):(failure));
setColor(ui->checkBox_euler_gps2_vel, (info.solution.gps2_vel_used)?(success):(failure));
setColor(ui->checkBox_euler_gps2_pos, (info.solution.gps2_pos_used)?(success):(failure));
setColor(ui->checkBox_euler_gps2_hdt, (info.solution.gps2_hdt_used)?(success):(failure));
setColor(ui->checkBox_euler_odo, (info.solution.odo_used)?(success):(failure));
setColor(ui->checkBox_euler_bt, (info.solution.dvl_bt_used)?(success):(failure));
setColor(ui->checkBox_euler_wt, (info.solution.dvl_wt_used)?(success):(failure));
setColor(ui->checkBox_euler_usel, (info.solution.usel_used)?(success):(failure));
setColor(ui->checkBox_euler_airdata, (info.solution.air_data_used)?(success):(failure));
setColor(ui->checkBox_euler_zupt, (info.solution.zupt_used)?(success):(failure));
setColor(ui->checkBox_euler_depth, (info.solution.depth_used)?(success):(failure));
}
void INS::vel(Parse::_vel info)
{
ui->label_vel_timestamp->setText(QString::number(info.time_stamp));
ui->label_vel_tow->setText(QString::number(info.tow));
ui->label_vel_vn->setText(QString::number(info.vel_n, 'f', 2));
ui->label_vel_ve->setText(QString::number(info.vel_e, 'f', 2));
ui->label_vel_vd->setText(QString::number(info.vel_d, 'f', 2));
ui->label_vel_acc_vn->setText(QString::number(info.vel_acc_n, 'f', 2));
ui->label_vel_acc_ve->setText(QString::number(info.vel_acc_e, 'f', 2));
ui->label_vel_acc_vd->setText(QString::number(info.vel_acc_d, 'f', 2));
ui->label_vel_course->setText(QString::number(info.course, 'f', 2));
ui->label_vel_acc_course->setText(QString::number(info.course_acc, 'f', 2));
ui->label_vel_status->setText(info.status.vel_status);
ui->label_vel_type->setText(info.status.vel_type);
if(info.status.vel_status == 0)
{
setColor(ui->label_vel_status, failure);
}
else
{
setColor(ui->label_vel_status, success);
}
//setColor(ui->checkBox_vel_status, inital);
//setColor(ui->checkBox_vel_type, inital);
}
void INS::pos(Parse::_pos info)
{
ui->label_pos_timestamp->setText(QString::number(info.time_stamp));
ui->label_pos_tow->setText(QString::number(info.tow));
ui->label_pos_lat->setText(QString::number(info.lat, 'f', 8));
ui->label_pos_lng->setText(QString::number(info.lng, 'f', 8));
ui->label_pos_alt->setText(QString::number(info.alt, 'f', 2));
ui->label_pos_undelation->setText(QString::number(info.undulation, 'f', 2));
ui->label_pos_acc_lat->setText(QString::number(info.pos_acc_lat, 'f', 1));
ui->label_pos_acc_lng->setText(QString::number(info.pos_acc_lng, 'f', 1));
ui->label_pos_acc_alt->setText(QString::number(info.pos_acc_alt, 'f', 1));
ui->label_pos_svn->setText(QString::number(info.num_sv_used));
ui->label_pos_base_id->setText(QString::number(info.base_station_id));
ui->label_pos_diff_age->setText(QString::number(info.diff_age));
ui->checkBox_pos_status->setText(info.status.pos_status);
ui->checkBox_pos_type->setText(info.status.pos_type);
//setColor(ui->checkBox_pos_status, (info.solution_status.attitude_valid)?(success):(failure));
//setColor(ui->checkBox_pos_type, (info.solution_status.attitude_valid)?(success):(failure));
setColor(ui->checkBox_pos_GPS_L1, (info.status.gps_l1_used)?(success):(failure));
setColor(ui->checkBox_pos_GPS_L2, (info.status.gps_l2_used)?(success):(failure));
setColor(ui->checkBox_pos_GPS_L5, (info.status.gps_l5_used)?(success):(failure));
setColor(ui->checkBox_pos_GLO_L1, (info.status.glo_l1_used)?(success):(failure));
setColor(ui->checkBox_pos_GLO_L2, (info.status.glo_l2_used)?(success):(failure));
setColor(ui->checkBox_pos_GLO_L3, (info.status.glo_l3_used)?(success):(failure));
setColor(ui->checkBox_pos_GAL_E1, (info.status.gal_e1_used)?(success):(failure));
setColor(ui->checkBox_pos_GAL_E5A, (info.status.gal_e5a_used)?(success):(failure));
setColor(ui->checkBox_pos_GAL_E5ALT, (info.status.gal_e5alt_used)?(success):(failure));
setColor(ui->checkBox_pos_GAL_E5B, (info.status.gal_e5b_used)?(success):(failure));
setColor(ui->checkBox_pos_GAL_E6, (info.status.gal_e6_used)?(success):(failure));
setColor(ui->checkBox_pos_BDS_B1, (info.status.bds_b1_used)?(success):(failure));
setColor(ui->checkBox_pos_BDS_B2, (info.status.bds_b2_used)?(success):(failure));
setColor(ui->checkBox_pos_BDS_B3, (info.status.bds_b3_used)?(success):(failure));
if(info.status.status_value == 0)
{
setColor(ui->checkBox_pos_status, success);
}
else
{
setColor(ui->checkBox_pos_status, failure);
}
if(info.status.status_value >= 2)
{
setColor(ui->checkBox_pos_type, success);
}
else
{
setColor(ui->checkBox_pos_type, failure);
}
}