添加了手动生成csv功能,防止软件崩溃,无法生成记录

This commit is contained in:
hm
2021-02-02 17:33:08 +08:00
parent 77c805a14b
commit c42a531fe2
12 changed files with 285 additions and 175 deletions
+19 -3
View File
@@ -63,7 +63,7 @@ void Config::loadJson(const QString& jsonFilename)
*/
qDebug() << ConfigJson;
//qDebug() << ConfigJson;
}
@@ -228,7 +228,7 @@ void Config::setHeartBeat(QVariant state,QVariant frq)
void Config::getMapType(QVariant *type)
{
QJsonObject obj = getJsonObject("GlobalSetting");
QJsonObject obj = getJsonObject("Map");
*type = obj.value("MapType").toString();
}
@@ -239,5 +239,21 @@ void Config::setMapType(QVariant type)
obj["MapType"] = type.toString();
setJsonObject("GlobalSetting",obj);
setJsonObject("Map",obj);
}
void Config::getBeep(QVariant *value)
{
QJsonObject obj = getJsonObject("Warnning");
*value = obj.value("Beep").toBool();
}
void Config::setBeep(QVariant value)
{
QJsonObject obj;
obj["Beep"] = value.toBool();
setJsonObject("Warnning",obj);
}
+4
View File
@@ -61,6 +61,10 @@ public slots:
void getMapType(QVariant *type);
void setMapType(QVariant type);
void getBeep(QVariant *value);
void setBeep(QVariant value);
private slots:
void loadJson(const QString& jsonFilename);
+28 -4
View File
@@ -14,16 +14,21 @@ GlobalSetting::GlobalSetting(QWidget *parent) :
ui->comboBox_ID->addItem(tr("254"),254);
ui->comboBox_ID->addItem(tr("255"),255);
ui->comboBox_Beep->addItem(tr(""),true);
ui->comboBox_Beep->addItem(tr(""),false);
Config *cfg = new Config();
QVariant id;
cfg->get_GCS_ID(&id);
qDebug() << id;
ui->comboBox_ID->setCurrentIndex(ui->comboBox_ID->findData(id.toInt()));
QVariant beep;
cfg->getBeep(&beep);
ui->comboBox_Beep->setCurrentIndex(ui->comboBox_Beep->findData(beep.toBool()));
emit setGCSID(id.toInt());//设置全局ID
@@ -200,3 +205,22 @@ void GlobalSetting::on_pushButton_setHeartBeat_clicked()
emit showMessage(tr("心跳设置成功"));
}
void GlobalSetting::on_pushButton_Beep_clicked()
{
QVariant state;
state = ui->comboBox_Beep->currentData();
emit setBeep(state.toBool());
Config *cfg = new Config();
cfg->setBeep(state);
cfg->deleteLater();
delete cfg;
emit showMessage((state.toBool())?(tr("声音开启")):(tr("声音关闭")));
}
@@ -34,6 +34,8 @@ private slots:
void on_pushButton_setHeartBeat_clicked();
void on_pushButton_Beep_clicked();
signals:
void showMessage(const QString &message,int TimeOut = 0);
@@ -46,6 +48,7 @@ signals:
void setHeartBeat(QVariant state,QVariant frq);
void setBeep(QVariant beep);
private:
Ui::GlobalSetting *ui;
+21 -4
View File
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>533</width>
<height>384</height>
<height>454</height>
</rect>
</property>
<property name="windowTitle">
@@ -139,9 +139,6 @@
<string>ID设置</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="1">
<widget class="QComboBox" name="comboBox_ID"/>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
@@ -149,6 +146,9 @@
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="comboBox_ID"/>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="pushButton_setGCSID">
<property name="text">
@@ -156,6 +156,23 @@
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="pushButton_Beep">
<property name="text">
<string>Set</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="comboBox_Beep"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>心跳声开关</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
@@ -176,3 +176,9 @@ void Tools_Index2::on_pushButton_setPercent_clicked()
emit setPercentage(p);
}
void Tools_Index2::on_pushButton_CSV_clicked()
{
qDebug() << "emit csv";
emit CreateCSV();
}
+4
View File
@@ -62,6 +62,8 @@ private slots:
void on_pushButton_setPercent_clicked();
void on_pushButton_CSV_clicked();
signals:
void setFileName(QString name);
@@ -79,6 +81,8 @@ signals:
void setFrame(int index);
void CreateCSV(void);
private:
Ui::Tools_Index2 *ui;
+7
View File
@@ -193,6 +193,13 @@
</property>
</widget>
</item>
<item row="7" column="1" colspan="3">
<widget class="QPushButton" name="pushButton_CSV">
<property name="text">
<string>Create CSV</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
+24 -5
View File
@@ -141,6 +141,10 @@ MainWindow::MainWindow(QWidget *parent)
config = new Config();
QVariant beep;
config->getBeep(&beep);
setBeep(beep);
//ui initial
//menubar
@@ -311,6 +315,10 @@ MainWindow::MainWindow(QWidget *parent)
toolsui->index2,SLOT(ReplayComplete()),Qt::DirectConnection);
connect(toolsui->index2,SIGNAL(CreateCSV()),
dlink->mavlinknode,SLOT(CreateCSV()),Qt::DirectConnection);
connect(dlink->mavlinknode,SIGNAL(new_remote_ctrl(QList<uint16_t>)),
toolsui->remotecontrol,SLOT(setChannelOveride(QList<uint16_t>)));
@@ -328,6 +336,8 @@ MainWindow::MainWindow(QWidget *parent)
connect(setting->index0->mapsetting,SIGNAL(getMapTypes()),
map,SLOT(getMapTypes()));
connect(map,SIGNAL(MapTypes(QStringList)),
setting->index0->mapsetting,SLOT(MapTypes(QStringList)));
@@ -512,6 +522,8 @@ MainWindow::MainWindow(QWidget *parent)
connect(setting->index0->globalsetting,&GlobalSetting::setHeartBeat,
dlink->mavlinknode->Status,&statusprocess::setHeartbeat,Qt::DirectConnection);
connect(setting->index0->globalsetting,&GlobalSetting::setBeep,
this,&MainWindow::setBeep,Qt::DirectConnection);
//设置地面站ID
setting->index0->globalsetting->getGCSID();
@@ -552,7 +564,11 @@ MainWindow::~MainWindow()
}
void MainWindow::setBeep(QVariant state)
{
isEnableBeep = state.toBool();
qDebug() << state;
}
@@ -894,11 +910,14 @@ void MainWindow::showMessage(const QString &message, int TimeOut)
void MainWindow::beep(int sysid)
{
int currentUAV = map->getUAVCurrent();
if(currentUAV == sysid)
if(isEnableBeep)
{
QApplication::beep();
int currentUAV = map->getUAVCurrent();
if(currentUAV == sysid)
{
QApplication::beep();
}
}
}
+2
View File
@@ -74,6 +74,7 @@ public slots:
void setCommunicationLostState(bool flag);
void setBeep(QVariant state);
void beep(int sysid);
@@ -155,6 +156,7 @@ protected:
bool isEngineStartUp = false;
bool isEnableBeep = true;
float m_la = 0;
float m_ra = 0;
+166 -158
View File
@@ -364,170 +364,16 @@ void MavLinkNode::stop()
}
}
CreateCSV();
if(thread->isRunning())
{
running_flag = false;
disconnect(thread, nullptr, nullptr, nullptr);
QDir *csvdir = new QDir;
if(!csvdir->exists("./csv"))
{
qDebug() << "make dir tlog";
csvdir->mkdir("./csv");//如果文件夹不存在就新建
}
QDateTime current = QDateTime::currentDateTime();
QString filetime = QString("./csv/%1").arg(current.toString("yyyyMMddHHmmss"));
QDir *temp = new QDir;
if(!temp->exists(filetime))
{
qDebug() << "make dir tlog";
temp->mkdir(filetime);//如果文件夹不存在就新建
}
filetime.append("/");
autopilot_version_file = new QFile(filetime + "autopilot_version_file.csv");
autopilot_version_file->open(QIODevice::WriteOnly);
sys_status_file = new QFile(filetime + "sys_status_file.csv");
sys_status_file->open(QIODevice::WriteOnly);
heartbeat_file = new QFile(filetime + "heartbeat.csv");
heartbeat_file->open(QIODevice::WriteOnly);
ping_file = new QFile(filetime + "ping_file.csv");
ping_file->open(QIODevice::WriteOnly);
attitude_file = new QFile(filetime + "attitude_file.csv");
attitude_file->open(QIODevice::WriteOnly);
ins1_file = new QFile(filetime + "ins1_file.csv");
ins1_file->open(QIODevice::WriteOnly);
ins2_file = new QFile(filetime + "ins2_file.csv");
ins2_file->open(QIODevice::WriteOnly);
gps_raw_int_file = new QFile(filetime + "gps_raw_int_file.csv");
gps_raw_int_file->open(QIODevice::WriteOnly);
global_position_int_file = new QFile(filetime + "global_position_int_file.csv");
global_position_int_file->open(QIODevice::WriteOnly);
servo_output_raw_file = new QFile(filetime + "servo_output_raw_file.csv");
servo_output_raw_file->open(QIODevice::WriteOnly);
rc_channels_raw_file = new QFile(filetime + "rc_channels_raw_file.csv");
rc_channels_raw_file->open(QIODevice::WriteOnly);
nav_controller_output_file = new QFile(filetime + "nav_controller_output_file.csv");
nav_controller_output_file->open(QIODevice::WriteOnly);
airspeed_autocal_file = new QFile(filetime + "airspeed_autocal_file.csv");
airspeed_autocal_file->open(QIODevice::WriteOnly);
rpm_file = new QFile(filetime + "rpm_file.csv");
rpm_file->open(QIODevice::WriteOnly);
scaled_pressure_file = new QFile(filetime + "scaled_pressure_file.csv");
scaled_pressure_file->open(QIODevice::WriteOnly);
extended_sys_state_file = new QFile(filetime + "extended_sys_state_file.csv");
extended_sys_state_file->open(QIODevice::WriteOnly);
battery_status_file = new QFile(filetime + "battery_status_file.csv");
battery_status_file->open(QIODevice::WriteOnly);
vibration_file = new QFile(filetime + "vibration_file.csv");
vibration_file->open(QIODevice::WriteOnly);
enginestate_file = new QFile(filetime + "enginestate_file.csv");
enginestate_file->open(QIODevice::WriteOnly);
vfr_hud_file = new QFile(filetime + "vfr_hud_file.csv");
vfr_hud_file->open(QIODevice::WriteOnly);
aoa_ssa_file = new QFile(filetime + "aoa_ssa_file.csv");
aoa_ssa_file->open(QIODevice::WriteOnly);
emb_atom_com_file = new QFile(filetime + "emb_atom_com_file.csv");
emb_atom_com_file->open(QIODevice::WriteOnly);
turbinstate_file = new QFile(filetime + "turbinstate_file.csv");
turbinstate_file->open(QIODevice::WriteOnly);
bmustate_file = new QFile(filetime + "bmustate_file.csv");
bmustate_file->open(QIODevice::WriteOnly);
ccmstate_file = new QFile(filetime + "ccmstate_file.csv");
ccmstate_file->open(QIODevice::WriteOnly);
serial_control_file = new QFile(filetime + "serial_control_file.csv");
serial_control_file->open(QIODevice::WriteOnly);
autopilot_version_file->write(autopilot_version_csv);
sys_status_file->write(sys_status_csv);
heartbeat_file->write(heartbeat_csv);
ping_file->write(ping_csv);
attitude_file->write(attitude_csv);
ins1_file->write(ins1_csv);
ins2_file->write(ins2_csv);
gps_raw_int_file->write(gps_raw_int_csv);
global_position_int_file->write(global_position_int_csv);
servo_output_raw_file->write(servo_output_raw_csv);
rc_channels_raw_file->write(rc_channels_raw_csv);
nav_controller_output_file->write(nav_controller_output_csv);
airspeed_autocal_file->write(airspeed_autocal_csv);
rpm_file->write(rpm_csv);
scaled_pressure_file->write(scaled_pressure_csv);
extended_sys_state_file->write(extended_sys_state_csv);
battery_status_file->write(battery_status_csv);
vibration_file->write(vibration_csv);
enginestate_file->write(enginestate_csv);
vfr_hud_file->write(vfr_hud_csv);
aoa_ssa_file->write(aoa_ssa_csv);
emb_atom_com_file->write(emb_atom_com_csv);
turbinstate_file->write(turbinstate_csv);
bmustate_file->write(bmustate_csv);
ccmstate_file->write(ccmstate_csv);
serial_control_file->write(serial_control_csv);
autopilot_version_file->close();
sys_status_file->close();
heartbeat_file->close();
ping_file->close();
attitude_file->close();
ins1_file->close();
ins2_file->close();
gps_raw_int_file->close();
global_position_int_file->close();
servo_output_raw_file->close();
rc_channels_raw_file->close();
nav_controller_output_file->close();
airspeed_autocal_file->close();
rpm_file->close();
scaled_pressure_file->close();
extended_sys_state_file->close();
battery_status_file->close();
vibration_file->close();
enginestate_file->close();
vfr_hud_file->close();
aoa_ssa_file->close();
emb_atom_com_file->close();
turbinstate_file->close();
bmustate_file->close();
ccmstate_file->close();
serial_control_file->close();
thread->quit();
thread->deleteLater();
@@ -539,6 +385,168 @@ void MavLinkNode::stop()
}
}
void MavLinkNode::CreateCSV(void)
{
QDir *csvdir = new QDir;
if(!csvdir->exists("./csv"))
{
qDebug() << "make dir tlog";
csvdir->mkdir("./csv");//如果文件夹不存在就新建
}
QDateTime current = QDateTime::currentDateTime();
QString filetime = QString("./csv/%1").arg(current.toString("yyyyMMddHHmmss"));
QDir *temp = new QDir;
if(!temp->exists(filetime))
{
qDebug() << "make dir tlog";
temp->mkdir(filetime);//如果文件夹不存在就新建
}
filetime.append("/");
autopilot_version_file = new QFile(filetime + "autopilot_version_file.csv");
autopilot_version_file->open(QIODevice::WriteOnly);
sys_status_file = new QFile(filetime + "sys_status_file.csv");
sys_status_file->open(QIODevice::WriteOnly);
heartbeat_file = new QFile(filetime + "heartbeat.csv");
heartbeat_file->open(QIODevice::WriteOnly);
ping_file = new QFile(filetime + "ping_file.csv");
ping_file->open(QIODevice::WriteOnly);
attitude_file = new QFile(filetime + "attitude_file.csv");
attitude_file->open(QIODevice::WriteOnly);
ins1_file = new QFile(filetime + "ins1_file.csv");
ins1_file->open(QIODevice::WriteOnly);
ins2_file = new QFile(filetime + "ins2_file.csv");
ins2_file->open(QIODevice::WriteOnly);
gps_raw_int_file = new QFile(filetime + "gps_raw_int_file.csv");
gps_raw_int_file->open(QIODevice::WriteOnly);
global_position_int_file = new QFile(filetime + "global_position_int_file.csv");
global_position_int_file->open(QIODevice::WriteOnly);
servo_output_raw_file = new QFile(filetime + "servo_output_raw_file.csv");
servo_output_raw_file->open(QIODevice::WriteOnly);
rc_channels_raw_file = new QFile(filetime + "rc_channels_raw_file.csv");
rc_channels_raw_file->open(QIODevice::WriteOnly);
nav_controller_output_file = new QFile(filetime + "nav_controller_output_file.csv");
nav_controller_output_file->open(QIODevice::WriteOnly);
airspeed_autocal_file = new QFile(filetime + "airspeed_autocal_file.csv");
airspeed_autocal_file->open(QIODevice::WriteOnly);
rpm_file = new QFile(filetime + "rpm_file.csv");
rpm_file->open(QIODevice::WriteOnly);
scaled_pressure_file = new QFile(filetime + "scaled_pressure_file.csv");
scaled_pressure_file->open(QIODevice::WriteOnly);
extended_sys_state_file = new QFile(filetime + "extended_sys_state_file.csv");
extended_sys_state_file->open(QIODevice::WriteOnly);
battery_status_file = new QFile(filetime + "battery_status_file.csv");
battery_status_file->open(QIODevice::WriteOnly);
vibration_file = new QFile(filetime + "vibration_file.csv");
vibration_file->open(QIODevice::WriteOnly);
enginestate_file = new QFile(filetime + "enginestate_file.csv");
enginestate_file->open(QIODevice::WriteOnly);
vfr_hud_file = new QFile(filetime + "vfr_hud_file.csv");
vfr_hud_file->open(QIODevice::WriteOnly);
aoa_ssa_file = new QFile(filetime + "aoa_ssa_file.csv");
aoa_ssa_file->open(QIODevice::WriteOnly);
emb_atom_com_file = new QFile(filetime + "emb_atom_com_file.csv");
emb_atom_com_file->open(QIODevice::WriteOnly);
turbinstate_file = new QFile(filetime + "turbinstate_file.csv");
turbinstate_file->open(QIODevice::WriteOnly);
bmustate_file = new QFile(filetime + "bmustate_file.csv");
bmustate_file->open(QIODevice::WriteOnly);
ccmstate_file = new QFile(filetime + "ccmstate_file.csv");
ccmstate_file->open(QIODevice::WriteOnly);
serial_control_file = new QFile(filetime + "serial_control_file.csv");
serial_control_file->open(QIODevice::WriteOnly);
autopilot_version_file->write(autopilot_version_csv);
sys_status_file->write(sys_status_csv);
heartbeat_file->write(heartbeat_csv);
ping_file->write(ping_csv);
attitude_file->write(attitude_csv);
ins1_file->write(ins1_csv);
ins2_file->write(ins2_csv);
gps_raw_int_file->write(gps_raw_int_csv);
global_position_int_file->write(global_position_int_csv);
servo_output_raw_file->write(servo_output_raw_csv);
rc_channels_raw_file->write(rc_channels_raw_csv);
nav_controller_output_file->write(nav_controller_output_csv);
airspeed_autocal_file->write(airspeed_autocal_csv);
rpm_file->write(rpm_csv);
scaled_pressure_file->write(scaled_pressure_csv);
extended_sys_state_file->write(extended_sys_state_csv);
battery_status_file->write(battery_status_csv);
vibration_file->write(vibration_csv);
enginestate_file->write(enginestate_csv);
vfr_hud_file->write(vfr_hud_csv);
aoa_ssa_file->write(aoa_ssa_csv);
emb_atom_com_file->write(emb_atom_com_csv);
turbinstate_file->write(turbinstate_csv);
bmustate_file->write(bmustate_csv);
ccmstate_file->write(ccmstate_csv);
serial_control_file->write(serial_control_csv);
autopilot_version_file->close();
sys_status_file->close();
heartbeat_file->close();
ping_file->close();
attitude_file->close();
ins1_file->close();
ins2_file->close();
gps_raw_int_file->close();
global_position_int_file->close();
servo_output_raw_file->close();
rc_channels_raw_file->close();
nav_controller_output_file->close();
airspeed_autocal_file->close();
rpm_file->close();
scaled_pressure_file->close();
extended_sys_state_file->close();
battery_status_file->close();
vibration_file->close();
enginestate_file->close();
vfr_hud_file->close();
aoa_ssa_file->close();
emb_atom_com_file->close();
turbinstate_file->close();
bmustate_file->close();
ccmstate_file->close();
serial_control_file->close();
}
//这里一直在解码,一直检查双缓冲里面是否有数据,有就解码,没有就休息
void MavLinkNode::process()//线程函数
{
+1 -1
View File
@@ -214,7 +214,7 @@ public slots:
return running_flag;
}
void CreateCSV(void);
//缓存对外接口
void readPendingDatagramsReplay(void);