Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e783afb687 | |||
| d70ca3378c | |||
| 6bf46fffa1 | |||
| 9219fe364f | |||
| ef9f795a93 | |||
| 8701e87ce5 |
@@ -36,7 +36,9 @@ StatusUI::StatusUI(QWidget *parent) :
|
||||
install(base,0,"滚转角[°]",0,QMap<QVariant, StateWidget::state>{{-45,StateWidget::state::red},{45,StateWidget::state::green}});
|
||||
install(base,0,"俯仰角[°]",0,QMap<QVariant, StateWidget::state>{{-20,StateWidget::state::red},{20,StateWidget::state::green}});
|
||||
install(base,0,"爬升角[°]",0,QMap<QVariant, StateWidget::state>{{-45.0,StateWidget::state::red},{45,StateWidget::state::green}});
|
||||
install(base,0,"海拔[m]",0,QMap<QVariant, StateWidget::state>{{970,StateWidget::state::red},{1800,StateWidget::state::orange},{999000,StateWidget::state::green}});
|
||||
install(base,0,"GPS高度[m]",0,QMap<QVariant, StateWidget::state>{{970,StateWidget::state::red},{1800,StateWidget::state::orange},{999000,StateWidget::state::green}});
|
||||
install(base,0,"气压高度[m]",0,QMap<QVariant, StateWidget::state>{{970,StateWidget::state::red},{1800,StateWidget::state::orange},{999000,StateWidget::state::green}});
|
||||
|
||||
install(base,0,"表速[m/s]",0,QMap<QVariant, StateWidget::state>{{65,StateWidget::state::red},{160,StateWidget::state::green}});
|
||||
install(base,0,"真空速[m/s]",0,QMap<QVariant, StateWidget::state>{{50,StateWidget::state::red},{290,StateWidget::state::green}});
|
||||
install(base,0,"地速[m/s]",0,QMap<QVariant, StateWidget::state>{{50,StateWidget::state::red},{290,StateWidget::state::green}});
|
||||
@@ -182,6 +184,16 @@ StatusUI::StatusUI(QWidget *parent) :
|
||||
{2,StateWidget::state::red},
|
||||
{5,StateWidget::state::orange},
|
||||
{15,StateWidget::state::green}});
|
||||
install(battery, 0, "左变体电流[A]", 0, QMap<QVariant, StateWidget::state>{{0,StateWidget::state::green},
|
||||
{5,StateWidget::state::orange},
|
||||
{10,StateWidget::state::red}});
|
||||
|
||||
install(battery, 0, "右变体电流[A]", 0, QMap<QVariant, StateWidget::state>{{0,StateWidget::state::green},
|
||||
{5,StateWidget::state::orange},
|
||||
{10,StateWidget::state::red}});
|
||||
install(battery, 0, "左变体转动方向", 0);
|
||||
install(battery, 0, "右变体转动方向", 0);
|
||||
|
||||
/*
|
||||
install(battery,0,"左轮速[RPM]",0,
|
||||
QMap<QVariant, StateWidget::state>{{1,StateWidget::state::red},
|
||||
|
||||
+53
-1
@@ -1,4 +1,4 @@
|
||||
#include "Parse.h"
|
||||
#include "Parse.h"
|
||||
|
||||
Parse::Parse(QObject *parent) : QObject(parent)
|
||||
{
|
||||
@@ -915,8 +915,38 @@ void Parse::run()
|
||||
group.left_brake = data[data_count++];
|
||||
group.right_brake = data[data_count++];
|
||||
|
||||
//变体舵机电流、方向
|
||||
Variant var;
|
||||
|
||||
union
|
||||
{
|
||||
uint8_t c[2];
|
||||
|
||||
int t;
|
||||
} test;
|
||||
|
||||
test.t = 0;
|
||||
data = raw.mid(247);
|
||||
test.c[0] = data[0];
|
||||
test.c[1] = data[1];
|
||||
|
||||
var.l_var_current = test.t * 0.1;
|
||||
|
||||
test.t = 0;
|
||||
test.c[0] = data[2];
|
||||
test.c[1] = data[3];
|
||||
|
||||
var.r_var_current = test.t * 0.1;
|
||||
|
||||
var.l_var_dir = data[4];
|
||||
var.r_var_dir = data[5];
|
||||
|
||||
qDebug() << "variant: " << data;
|
||||
|
||||
saveVariantToFile(var);
|
||||
saveActuatorDataToFile(group);
|
||||
emit actuator_info_brake(group);
|
||||
emit variantInfo(var);
|
||||
|
||||
}
|
||||
|
||||
@@ -1849,6 +1879,28 @@ void Parse::parseData(const int id, const QByteArray data)
|
||||
*/
|
||||
}
|
||||
|
||||
void Parse::saveVariantToFile(const Variant &var)
|
||||
{
|
||||
QFile file(variant_file_name);
|
||||
if(file.open(QIODevice::Append) )
|
||||
{
|
||||
qDebug() << u8"保存variant数据";
|
||||
QTextStream stream(&file);
|
||||
stream.setCodec("UTF-8");
|
||||
|
||||
stream << QDateTime::currentDateTime().toString("yyyyMMddHHmmss").toUtf8() << ",";
|
||||
stream << var.l_var_current << ",";
|
||||
stream << var.r_var_current << ",";
|
||||
stream << (var.l_var_dir ? "inversion" : "foreward") << ",";
|
||||
stream << (var.r_var_dir ? "inversion" : "foreward") << "\n";
|
||||
|
||||
stream.flush();
|
||||
|
||||
file.flush();
|
||||
file.close();
|
||||
}
|
||||
}
|
||||
|
||||
void Parse::saveInsDataToFile(const _ins &ins)
|
||||
{
|
||||
QFile file(ins_file_name);
|
||||
|
||||
@@ -11,6 +11,18 @@
|
||||
#include "QFile"
|
||||
#include "QDateTime"
|
||||
#include "QDataStream"
|
||||
#include <QMetaType>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
float l_var_current; //左变体电流
|
||||
float r_var_current; //右变体电流
|
||||
quint8 l_var_dir; //左变体方向
|
||||
quint8 r_var_dir; //右变体方向
|
||||
} Variant;
|
||||
|
||||
Q_DECLARE_METATYPE(Variant);
|
||||
|
||||
|
||||
class Parse : public QObject, public QRunnable
|
||||
{
|
||||
@@ -497,6 +509,7 @@ public:
|
||||
QString sspc_file_name;
|
||||
QString vel_file_name;
|
||||
QString pos_file_name;
|
||||
QString variant_file_name;
|
||||
|
||||
explicit Parse(QObject *parent = nullptr);
|
||||
~Parse();
|
||||
@@ -533,8 +546,18 @@ signals:
|
||||
void pos_info(Parse::_pos info);
|
||||
|
||||
void SSPC_Info_state(Parse::_sspc info);
|
||||
/**
|
||||
* @brief 变体舵机信息
|
||||
* @param info
|
||||
*/
|
||||
void variantInfo(Variant const &info);
|
||||
|
||||
private:
|
||||
/**
|
||||
* @brief 将变体的信息保存到文件中
|
||||
* @param var
|
||||
*/
|
||||
void saveVariantToFile(Variant const &var);
|
||||
/**
|
||||
* @brief 把ins解析的数据保存到文件
|
||||
* @param ins 保存ins数据的结构体
|
||||
|
||||
+24
-1
@@ -1,4 +1,4 @@
|
||||
#include "ToolsUI.h"
|
||||
#include "ToolsUI.h"
|
||||
#include "ui_ToolsUI.h"
|
||||
#include <QTextStream>
|
||||
|
||||
@@ -221,12 +221,15 @@ void ToolsUI::recieveDataSlot(const int &id, const QByteArray &data)
|
||||
parse->sspc_file_name = sspc_file_name;
|
||||
parse->vel_file_name = vel_file_name;
|
||||
parse->pos_file_name = pos_file_name;
|
||||
parse->variant_file_name = variant_file_name;
|
||||
|
||||
connect(this,&ToolsUI::parseData,
|
||||
parse,&Parse::parseData);
|
||||
|
||||
if(id == 0)
|
||||
{
|
||||
connect(parse, SIGNAL(variantInfo(Variant) ) , this, SIGNAL(variantInfo(Variant) ) );
|
||||
|
||||
connect(parse,&Parse::INS_Info,
|
||||
ins,&INS::INS_Info);
|
||||
|
||||
@@ -942,6 +945,26 @@ void ToolsUI::createRecordDataFiles()
|
||||
file.flush(); //将数据刷新到文件中
|
||||
file.close(); //关闭文件
|
||||
}
|
||||
|
||||
variant_file_name = QString("./log/other/variant_%1.csv").arg(QDateTime::currentDateTime().toString("yyyyMMddHHmmss") );
|
||||
file.setFileName(variant_file_name);
|
||||
if(file.open(QIODevice::WriteOnly | QIODevice::Text) )
|
||||
{
|
||||
// QByteArray data;
|
||||
|
||||
QTextStream stream(&file);
|
||||
|
||||
stream.setCodec("utf-8");
|
||||
stream << tr("time,");
|
||||
stream << tr("l_var_current,");
|
||||
stream << tr("r_var_current,");
|
||||
stream << tr("l_var_dir,");
|
||||
stream << tr("r_var_dir\n");
|
||||
|
||||
// stream << data;
|
||||
file.flush(); //将数据刷新到文件中
|
||||
file.close(); //关闭文件
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -78,6 +78,12 @@ private slots:
|
||||
|
||||
|
||||
signals:
|
||||
/**
|
||||
* @brief 变体舵机信息
|
||||
* @param info
|
||||
*/
|
||||
void variantInfo(Variant const &info);
|
||||
|
||||
void IndexChanged(const int &index);
|
||||
|
||||
void recieveData(const int &id,const QByteArray &data);
|
||||
@@ -140,6 +146,8 @@ private:
|
||||
QString sspc_file_name;
|
||||
QString vel_file_name;
|
||||
QString pos_file_name;
|
||||
QString variant_file_name;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
+63
-18
@@ -171,6 +171,8 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
qRegisterMetaType<uint8_t>("uint8_t");
|
||||
|
||||
qRegisterMetaType<MavLinkNode::_vehicle>("MavLinkNode::_vehicle");
|
||||
qRegisterMetaType<Variant>("Variant");
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -214,11 +216,14 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
toolsui = new ToolsUI(this);
|
||||
toolsui->hide();
|
||||
|
||||
connect(toolsui, &ToolsUI::variantInfo, this, &MainWindow::showVariantInfo);
|
||||
|
||||
//状态
|
||||
|
||||
statusui = new StatusUI(this);
|
||||
statusui->hide();
|
||||
|
||||
|
||||
healthui = new HealthUI(this);
|
||||
healthui->hide();
|
||||
|
||||
@@ -869,6 +874,14 @@ MainWindow::~MainWindow()
|
||||
QCoreApplication::quit();//退出所有窗口
|
||||
}
|
||||
|
||||
void MainWindow::showVariantInfo(const Variant &var)
|
||||
{
|
||||
statusui->setValue(1, 0, 12, QString::number(var.l_var_current, 'f', 1));
|
||||
statusui->setValue(1, 0, 13, QString::number(var.r_var_current, 'f', 1));
|
||||
statusui->setValue(1, 0, 14, var.l_var_dir ? "反转" : "正转");
|
||||
statusui->setValue(1, 0, 15, var.r_var_dir ? "反转" : "正转");
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::setBeep(QVariant state)
|
||||
{
|
||||
@@ -1380,8 +1393,9 @@ QList<double> vtr_fix{+7E-10,-2E-06,+0.0176,+37.809};
|
||||
|
||||
QList<double> dal_fix{-3E-09,-3E-06,-0.0343,+0.2415};
|
||||
QList<double> dar_fix{-2E-09,-2E-06,-0.0340,+0.0294};
|
||||
QList<double> drl_fix{-3E-09,-9E-07,-0.0334,-0.0413};
|
||||
QList<double> drr_fix{+3E-09,+1E-06,+0.0334,+0.0183};
|
||||
|
||||
QList<double> drl_fix{-2E-09,-8E-07,-0.0336,-0.4362};
|
||||
QList<double> drr_fix{+2E-09,+9E-07,+0.0335,-0.5028};
|
||||
|
||||
QList<double> del_fix{-1E-09,+2E-07,-0.0263,+0.3685};
|
||||
QList<double> der_fix{-1E-09,+3E-07,-0.0264,+0.9127};
|
||||
@@ -1419,8 +1433,8 @@ void MainWindow::update_servo_output_raw(int sysid,mavlink_servo_output_raw_t se
|
||||
|
||||
dal_fix = {-3E-09,-3E-06,-0.0343,+0.2415};
|
||||
dar_fix = {-2E-09,-2E-06,-0.0340,+0.0294};
|
||||
drl_fix = {-3E-09,-9E-07,-0.0334,-0.0413};
|
||||
drr_fix = {+3E-09,+1E-06,+0.0334,+0.0183};
|
||||
drl_fix = {-2E-09,-8E-07,-0.0336,-0.4362};
|
||||
drr_fix = {+2E-09,+9E-07,+0.0335,-0.5028};
|
||||
|
||||
del_fix = {-9E-10,+3E-07,-0.0263,+0.9651};
|
||||
der_fix = {-9E-10,+3E-07,-0.0265,+0.925};
|
||||
@@ -1435,8 +1449,8 @@ void MainWindow::update_servo_output_raw(int sysid,mavlink_servo_output_raw_t se
|
||||
|
||||
dal_fix = {-3E-09,-3E-06,-0.0343,+0.2415};
|
||||
dar_fix = {-2E-09,-2E-06,-0.0340,+0.0294};
|
||||
drl_fix = {-3E-09,-9E-07,-0.0334,-0.0413};
|
||||
drr_fix = {+3E-09,+1E-06,+0.0334,+0.0183};
|
||||
drl_fix = {-2E-09,-8E-07,-0.0336,-0.4362};
|
||||
drr_fix = {+2E-09,+9E-07,+0.0335,-0.5028};
|
||||
|
||||
del_fix = {-1E-09,+2E-07,-0.0263,+0.3685};
|
||||
der_fix = {-1E-09,+3E-07,-0.0264,+0.9127};
|
||||
@@ -1605,7 +1619,7 @@ void MainWindow::updateVehicle(MavLinkNode::_vehicle vehicle)//事件驱动式
|
||||
|
||||
break;
|
||||
case 2://气压
|
||||
copk->setHeight(vehicle.vfr_hud.alt);
|
||||
//copk->setHeight(vehicle.vfr_hud.alt);
|
||||
|
||||
break;
|
||||
|
||||
@@ -1614,7 +1628,7 @@ void MainWindow::updateVehicle(MavLinkNode::_vehicle vehicle)//事件驱动式
|
||||
|
||||
|
||||
|
||||
copk->setOL(vehicle.ins1.az/(-9.8));
|
||||
//copk->setOL(vehicle.ins1.az/(-9.8));
|
||||
|
||||
|
||||
copk->setVerticalSpeed(vehicle.vfr_hud.climb);//朝上为正
|
||||
@@ -1998,26 +2012,31 @@ void MainWindow::updateVehicle(MavLinkNode::_vehicle vehicle)//事件驱动式
|
||||
}
|
||||
|
||||
|
||||
statusui->setValue(0,0,5,QString::number(vehicle.global_position_int.alt * 10e-4,'f',1));
|
||||
statusui->setValue(0,0,6,QString::number(vehicle.vfr_hud.airspeed,'f',1));
|
||||
//statusui->setValue(0,0,7,QString::number(vehicle.emb_atom_com.Airspeed,'f',1));
|
||||
//GPS高度
|
||||
statusui->setValue(0,0,5,QString::number(vehicle.vfr_hud.alt,'f',1));
|
||||
|
||||
|
||||
|
||||
|
||||
statusui->setValue(0,0,7,QString::number(vehicle.vfr_hud.airspeed,'f',1));
|
||||
//statusui->setValue(0,0,8,QString::number(vehicle.emb_atom_com.Airspeed,'f',1));
|
||||
|
||||
if(vehicle.vfr_hud.groundspeed < 1)
|
||||
{
|
||||
statusui->setValue(0,0,8,QString::number(vehicle.vfr_hud.groundspeed,'f',3));
|
||||
statusui->setValue(0,0,9,QString::number(vehicle.vfr_hud.groundspeed,'f',3));
|
||||
}
|
||||
else if(vehicle.vfr_hud.groundspeed < 10)
|
||||
{
|
||||
statusui->setValue(0,0,8,QString::number(vehicle.vfr_hud.groundspeed,'f',1));
|
||||
statusui->setValue(0,0,9,QString::number(vehicle.vfr_hud.groundspeed,'f',1));
|
||||
}
|
||||
else
|
||||
{
|
||||
statusui->setValue(0,0,8,QString::number(vehicle.vfr_hud.groundspeed,'f',0));
|
||||
statusui->setValue(0,0,9,QString::number(vehicle.vfr_hud.groundspeed,'f',0));
|
||||
}
|
||||
|
||||
|
||||
|
||||
//statusui->setValue(0,0,9,QString::number(vehicle.emb_atom_com.mach,'f',2));
|
||||
//statusui->setValue(0,0,10,QString::number(vehicle.emb_atom_com.mach,'f',2));
|
||||
|
||||
|
||||
/*
|
||||
@@ -2435,7 +2454,10 @@ void MainWindow::TotalDistance(double value)
|
||||
|
||||
void MainWindow::INS_Info(Parse::_ins info)
|
||||
{
|
||||
|
||||
if(copk)
|
||||
{
|
||||
copk->setOL(info.az/(9.8));
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::NAV_Info(Parse::_nav info)
|
||||
@@ -2592,8 +2614,8 @@ void MainWindow::EADC_Info(Parse::_eadc info)
|
||||
statusui->setValue(0,0,0,QString::number(info.aoat1,'f',1));
|
||||
statusui->setValue(0,0,1,QString::number(info.aost1,'f',1));
|
||||
|
||||
statusui->setValue(0,0,7,QString::number(info.vt,'f',1));
|
||||
statusui->setValue(0,0,9,QString::number(info.mi,'f',3));
|
||||
statusui->setValue(0,0,8,QString::number(info.vt,'f',1));
|
||||
statusui->setValue(0,0,10,QString::number(info.mi,'f',3));
|
||||
}
|
||||
|
||||
|
||||
@@ -2614,6 +2636,29 @@ void MainWindow::EADC_Info(Parse::_eadc info)
|
||||
|
||||
}
|
||||
|
||||
|
||||
switch (copk->AltitudeFlag()) {
|
||||
default:
|
||||
case 0://绝对
|
||||
//copk->setHeight(vehicle.global_position_int.alt * 10e-4);
|
||||
|
||||
break;
|
||||
case 1://相对
|
||||
//copk->setHeight(vehicle.global_position_int.relative_alt * 10e-4);
|
||||
|
||||
break;
|
||||
case 2://气压
|
||||
copk->setHeight(info.hp);
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
|
||||
//气压高度
|
||||
statusui->setValue(0,0,6,QString::number(info.hp,'f',1));
|
||||
|
||||
|
||||
Ma = info.mi;
|
||||
|
||||
copk->setAOA(info.aoai1);
|
||||
|
||||
@@ -75,6 +75,11 @@ public:
|
||||
|
||||
|
||||
public slots:
|
||||
/**
|
||||
* @brief 显示变体舵机信息
|
||||
* @param var
|
||||
*/
|
||||
void showVariantInfo(Variant const &var);
|
||||
void showMessage(const QString &message,int TimeOut = 0);
|
||||
|
||||
void setCommunicationLostState(bool flag);
|
||||
|
||||
+1
-1
@@ -1405,7 +1405,7 @@ void Cockpit::drawRightScale(QPainter *painter)
|
||||
painter->drawRect(0,600,550,150);
|
||||
|
||||
|
||||
painter->drawText(QRect(10,600,530,150),Qt::AlignLeft|Qt::AlignVCenter,QString::number(m_State.height,'f',0));
|
||||
painter->drawText(QRect(10,600,530,150),Qt::AlignLeft|Qt::AlignVCenter,QString::number(m_State.height,'f',1));
|
||||
|
||||
QString alt_str;
|
||||
switch (m_State.AltitudeFlag) {
|
||||
|
||||
Reference in New Issue
Block a user