948 lines
29 KiB
C++
948 lines
29 KiB
C++
#include "ToolsUI.h"
|
|
#include "ui_ToolsUI.h"
|
|
#include <QTextStream>
|
|
|
|
|
|
//消息通过广播和监听处理
|
|
|
|
|
|
ToolsUI::ToolsUI(QWidget *parent) :
|
|
QWidget(parent),
|
|
ui(new Ui::ToolsUI)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
//load qss
|
|
QFile file(":/qss/ToolsUI.qss");
|
|
file.open(QFile::ReadOnly);
|
|
QTextStream filetext(&file);
|
|
QString stylesheet = filetext.readAll();
|
|
this->setStyleSheet(stylesheet);
|
|
file.close();
|
|
|
|
|
|
//绑定按键和界面
|
|
|
|
int w = 120;
|
|
int h = 50;
|
|
|
|
ui->scrollArea->setFixedWidth(w);
|
|
ui->pushButton_ShowExtern->setFixedSize(w,h);
|
|
|
|
connect(this, &ToolsUI::recieveData, this, &ToolsUI::recieveDataSlot);
|
|
|
|
index0 = new Tools_Index0();
|
|
index1 = new Tools_Index1();
|
|
index2 = new Tools_Index2();
|
|
index3 = new Tools_Index3();
|
|
index4 = new tools_Index4();
|
|
command = new CommandBox();
|
|
senser = new Senser();
|
|
remotecontrol = new RemoteControl();
|
|
|
|
// ecu = new ECU();
|
|
// ins = new INS();
|
|
// gear = new landinggear();
|
|
|
|
|
|
|
|
|
|
install(index0 ,tr("Inspector"));
|
|
install(index1 ,tr("Log"));
|
|
install(index2 ,tr("Replay"));
|
|
install(index3 ,tr("Terminal"));
|
|
install(index4 ,tr("Servos"));
|
|
install(command ,tr("CommandBox"));
|
|
install(senser ,tr("Senser"));
|
|
install(remotecontrol,tr("RC"));
|
|
// install(ecu ,tr("ECU"));
|
|
// install(ins ,tr("INS") );
|
|
// install(gear ,tr("Gear") );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
connect(this,SIGNAL(IndexChanged(int)),
|
|
this,SLOT(onTabIndexChanged(int)));
|
|
|
|
|
|
CurrentIndex = 0;
|
|
emit IndexChanged(CurrentIndex);
|
|
|
|
foreach (QPushButton *b, btnList) {
|
|
if(btnList.key(b) == 0)
|
|
{
|
|
setPushButtonState(b,state::Selected);
|
|
}
|
|
else
|
|
{
|
|
setPushButtonState(b,state::unSelected);
|
|
}
|
|
}
|
|
|
|
|
|
createRecordDataFiles(); //创建保存数据的文件
|
|
//测试
|
|
/*
|
|
connect(&timer, &QTimer::timeout,
|
|
this, [this]()
|
|
{
|
|
QByteArray array;
|
|
for(int i = 0; i < 100; ++i)
|
|
{
|
|
char ch = rand();
|
|
array.append(ch);
|
|
}
|
|
|
|
emit recieveData(1, array);
|
|
});
|
|
|
|
timer.start(1000);
|
|
|
|
*/
|
|
}
|
|
|
|
ToolsUI::~ToolsUI()
|
|
{
|
|
foreach (QWidget *w, ToolsList) {
|
|
if(w)
|
|
{
|
|
w->deleteLater();
|
|
w = nullptr;
|
|
}
|
|
}
|
|
|
|
delete ui;
|
|
}
|
|
|
|
void ToolsUI::resizeEvent(QResizeEvent *event)
|
|
{
|
|
Q_UNUSED(event)
|
|
|
|
foreach (QWidget *w, ToolsList) {
|
|
if(w->parent())
|
|
{
|
|
w->setGeometry(0,0,ui->frame->geometry().width(),ui->frame->geometry().height());
|
|
}
|
|
}
|
|
|
|
update();
|
|
}
|
|
|
|
void ToolsUI::setPushButtonState(QWidget *w,state s)
|
|
{
|
|
w->setProperty("state",s);
|
|
w->style()->unpolish(w);
|
|
w->style()->polish(w);
|
|
}
|
|
|
|
|
|
void ToolsUI::install(ToolsWidget *widget, QString name)
|
|
{
|
|
if(!ToolsList.values().contains(widget))
|
|
{
|
|
int h = 50;
|
|
int w = 120;
|
|
|
|
QPushButton *btn = new QPushButton();
|
|
btn->setText(name);
|
|
btn->setFixedSize(w,h);
|
|
|
|
btnList.insert(ToolsList.size(),btn);
|
|
|
|
connect(btn,&QPushButton::clicked,
|
|
this,&ToolsUI::btnClicked);
|
|
|
|
ui->gridLayout_Indexs->addWidget(btn,ToolsList.size(),1);
|
|
|
|
widget->setParent(ui->frame);
|
|
widget->setWindowTitle(name);
|
|
widget->setIcon(widget->Icon());
|
|
widget->hide();
|
|
ToolsList.insert(ToolsList.size(),widget);
|
|
|
|
connect(widget, &ToolsWidget::toolsWidgetClose,
|
|
this, [this]()
|
|
{
|
|
qDebug() << u8"调整界面";
|
|
onTabIndexChanged(this->CurrentIndex);
|
|
});
|
|
|
|
//接收到信号,每个界面自己解析,获取自己想要的信息
|
|
// connect(this,&ToolsUI::recieveData,
|
|
// widget,&ToolsWidget::recieveData);
|
|
}
|
|
else
|
|
{
|
|
qDebug() << "重复出现" << name;
|
|
}
|
|
}
|
|
|
|
void ToolsUI::btnClicked()
|
|
{
|
|
QObject *obj = sender();
|
|
|
|
|
|
QPushButton *btn = qobject_cast<QPushButton *>(obj);
|
|
if(btn)
|
|
{
|
|
int key = btnList.key(btn);
|
|
CurrentIndex = key;
|
|
|
|
setPushButtonState(btn,state::Selected);
|
|
|
|
foreach (QPushButton *b, btnList) {
|
|
if(b != btn)
|
|
{
|
|
setPushButtonState(b,state::unSelected);
|
|
}
|
|
}
|
|
emit IndexChanged(CurrentIndex);
|
|
}
|
|
}
|
|
|
|
void ToolsUI::recieveDataSlot(const int &id, const QByteArray &data)
|
|
{
|
|
//qDebug() << "tools thread:" << QThread::currentThreadId();
|
|
|
|
Parse *parse = new Parse;
|
|
parse->ecu_file_name = ecu_file_name;
|
|
parse->ins_file_name = ins_file_name;
|
|
parse->nav_file_name = nav_file_name;
|
|
parse->gear_file_name = gear_file_name;
|
|
parse->actuator_file_name = actuator_file_name;
|
|
parse->actuator1_file_name = actuator1_file_name;
|
|
parse->actuator2_file_name = actuator2_file_name;
|
|
parse->imu_file_name = imu_file_name;
|
|
parse->euler_file_name = euler_file_name;
|
|
parse->eadc_file_name = eadc_file_name;
|
|
parse->sspc_file_name = sspc_file_name;
|
|
parse->vel_file_name = vel_file_name;
|
|
parse->pos_file_name = pos_file_name;
|
|
|
|
connect(this,&ToolsUI::parseData,
|
|
parse,&Parse::parseData);
|
|
|
|
if(id == 0)
|
|
{
|
|
connect(parse,&Parse::INS_Info,
|
|
ins,&INS::INS_Info);
|
|
|
|
connect(parse,&Parse::NAV_Info,
|
|
ins,&INS::NAV_Info);
|
|
|
|
connect(parse,&Parse::imu_info,
|
|
ins,&INS::imu);
|
|
|
|
connect(parse,&Parse::euler_info,
|
|
ins,&INS::euler);
|
|
|
|
connect(parse,&Parse::gear_Info,
|
|
gear,&landinggear::gear_Info);
|
|
|
|
connect(parse,&Parse::actuator_info,
|
|
gear,&landinggear::actuator_info);
|
|
|
|
connect(parse,&Parse::actuator_info_brake,
|
|
gear,&landinggear::actuator_info_brake);
|
|
|
|
connect(parse,&Parse::actuator1_info,
|
|
gear,&landinggear::actuator1_info);
|
|
|
|
connect(parse,&Parse::actuator2_info,
|
|
gear,&landinggear::actuator2_info);
|
|
|
|
|
|
//this
|
|
|
|
connect(parse,&Parse::INS_Info,
|
|
this,&ToolsUI::INS_Info);
|
|
|
|
connect(parse,&Parse::NAV_Info,
|
|
this,&ToolsUI::NAV_Info);
|
|
|
|
connect(parse,&Parse::imu_info,
|
|
this,&ToolsUI::imu_info);
|
|
|
|
connect(parse,&Parse::euler_info,
|
|
this,&ToolsUI::euler_info);
|
|
|
|
connect(parse,&Parse::gear_Info,
|
|
this,&ToolsUI::gear_Info);
|
|
|
|
connect(parse,&Parse::actuator_info,
|
|
this,&ToolsUI::actuator_info);
|
|
|
|
connect(parse,&Parse::actuator_info_brake,
|
|
this,&ToolsUI::actuator_info_brake);
|
|
|
|
connect(parse,&Parse::actuator1_info,
|
|
this,&ToolsUI::actuator1_info);
|
|
|
|
connect(parse,&Parse::actuator2_info,
|
|
this,&ToolsUI::actuator2_info);
|
|
|
|
|
|
}
|
|
else if(id == 1)
|
|
{
|
|
connect(parse,&Parse::EADC_Info,
|
|
ecu,&ECU::EADC_Info);
|
|
|
|
connect(parse,&Parse::ECU_Info,
|
|
ecu,&ECU::ECU_Info);
|
|
|
|
connect(parse,&Parse::SSPC_Info,
|
|
ecu,&ECU::SSPC_Info);
|
|
|
|
connect(parse,&Parse::SSPC_Info_state,
|
|
ecu,&ECU::SSPC_Info_state);
|
|
|
|
connect(parse,&Parse::vel_info,
|
|
ins,&INS::vel);
|
|
|
|
connect(parse,&Parse::pos_info,
|
|
ins,&INS::pos);
|
|
|
|
connect(parse,&Parse::actuator_info,
|
|
gear,&landinggear::actuator_info);
|
|
|
|
connect(parse,&Parse::actuator1_info,
|
|
gear,&landinggear::actuator1_info);
|
|
|
|
connect(parse,&Parse::actuator2_info,
|
|
gear,&landinggear::actuator2_info);
|
|
|
|
//=========================================
|
|
connect(parse,&Parse::EADC_Info,
|
|
this,&ToolsUI::EADC_Info);
|
|
|
|
connect(parse,&Parse::ECU_Info,
|
|
this,&ToolsUI::ECU_Info);
|
|
|
|
connect(parse,&Parse::SSPC_Info,
|
|
this,&ToolsUI::SSPC_Info);
|
|
|
|
connect(parse,&Parse::SSPC_Info_state,
|
|
this,&ToolsUI::SSPC_Info_state);
|
|
|
|
connect(parse,&Parse::vel_info,
|
|
this,&ToolsUI::vel_info);
|
|
|
|
connect(parse,&Parse::pos_info,
|
|
this,&ToolsUI::pos_info);
|
|
|
|
connect(parse,&Parse::actuator_info,
|
|
this,&ToolsUI::actuator_info);
|
|
|
|
connect(parse,&Parse::actuator1_info,
|
|
this,&ToolsUI::actuator1_info);
|
|
|
|
connect(parse,&Parse::actuator2_info,
|
|
this,&ToolsUI::actuator2_info);
|
|
|
|
}
|
|
|
|
QThreadPool::globalInstance()->start(parse);
|
|
|
|
//emit parseData(id,data);
|
|
parse->parseData(id, data);
|
|
}
|
|
|
|
|
|
void ToolsUI::onTabIndexChanged(const int &index)//界面选择管理
|
|
{
|
|
foreach (int key, ToolsList.keys()) {
|
|
ToolsWidget *w = ToolsList.value(key);
|
|
|
|
if(index == key)
|
|
{
|
|
if(w->parent())
|
|
{
|
|
w->show();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(!w->isPop() )
|
|
{
|
|
w->hide();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void ToolsUI::on_pushButton_ShowExtern_clicked()
|
|
{
|
|
foreach (ToolsWidget *w, ToolsList) {
|
|
if(ToolsList.key(w,-1) == CurrentIndex)
|
|
{
|
|
if(w->parent())
|
|
{
|
|
w->setFloat();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void ToolsUI::createRecordDataFiles()
|
|
{
|
|
QFile file;
|
|
|
|
//创建保存ins数据的文件
|
|
ins_file_name = QString("./log/other/ins_%1.csv").arg(QDateTime::currentDateTime().toString("yyyyMMddHHmmss"));
|
|
file.setFileName(ins_file_name);
|
|
if(file.open(QIODevice::WriteOnly) )
|
|
{
|
|
QByteArray data;
|
|
data.clear();
|
|
data.append("time,");
|
|
data.append("roll_rate,");
|
|
data.append("yaw_rate,");
|
|
data.append("pitch_rate,");
|
|
data.append("yaw,");
|
|
data.append("pitch,");
|
|
data.append("roll,");
|
|
data.append("ax,");
|
|
data.append("ay,");
|
|
data.append("az\n");
|
|
|
|
QTextStream stream(&file);
|
|
stream.setCodec("UTF-8");
|
|
stream << data;
|
|
file.flush(); //将数据刷新到文件中
|
|
file.close(); //关闭文件
|
|
}
|
|
//创建保存nav数据的文件
|
|
nav_file_name = QString("./log/other/nav_%1.csv").arg(QDateTime::currentDateTime().toString("yyyyMMddHHmmss") );
|
|
file.setFileName(nav_file_name);
|
|
if(file.open(QIODevice::WriteOnly) )
|
|
{
|
|
QByteArray data;
|
|
data.append("time,");
|
|
data.append("navStatus,");
|
|
data.append("insStatus,");
|
|
data.append("headingSrc,");
|
|
data.append("Satellite,");
|
|
data.append("longitude,");
|
|
data.append("latitude,");
|
|
data.append("altitude,");
|
|
data.append("worktime,");
|
|
data.append("Ve,");
|
|
data.append("Vn,");
|
|
data.append("Vu,");
|
|
data.append("Gs,");
|
|
data.append("heading,");
|
|
data.append("Ae,");
|
|
data.append("An,");
|
|
data.append("Au,");
|
|
data.append("satellite_longitude,");
|
|
data.append("satellite_latitude,");
|
|
data.append("satellite_altitude,");
|
|
data.append("satellite_Ve,");
|
|
data.append("satellite_Vn,");
|
|
data.append("satellite_Vu,");
|
|
data.append("ins,");
|
|
data.append("altitude,");
|
|
data.append("exRTK,");
|
|
data.append("exSatellite,");
|
|
data.append("RTK,");
|
|
data.append("satellite,");
|
|
data.append("heading,");
|
|
data.append("communication,");
|
|
data.append("back7,");
|
|
data.append("das,");
|
|
data.append("install,");
|
|
data.append("back4,");
|
|
data.append("altitudeInfo,");
|
|
data.append("back1,");
|
|
data.append("back0,");
|
|
data.append("year,");
|
|
data.append("month,");
|
|
data.append("day,");
|
|
data.append("hour,");
|
|
data.append("minute,");
|
|
data.append("second\n");
|
|
|
|
QTextStream stream(&file);
|
|
stream.setCodec("UTF-8");
|
|
stream << data;
|
|
file.flush(); //将数据刷新到文件中
|
|
file.close(); //关闭文件
|
|
}
|
|
|
|
//创建保存gear数据的文件
|
|
gear_file_name = QString("./log/other/gear_%1.csv").arg(QDateTime::currentDateTime().toString("yyyyMMddHHmmss") );
|
|
file.setFileName(gear_file_name);
|
|
if(file.open(QIODevice::WriteOnly) )
|
|
{
|
|
QByteArray data;
|
|
data.append("time,");
|
|
for(int i = 0; i < 24; ++i)
|
|
{
|
|
data.append(QString("SW_%1,").arg(i).toLatin1().data() );
|
|
}
|
|
|
|
for(int i = 0; i < 3; ++i)
|
|
{
|
|
data.append(QString("DI_%1,").arg(i).toLatin1().data() );
|
|
}
|
|
|
|
data.append("LeftWheel,");
|
|
data.append("RightWheel,");
|
|
data.append("rpm3,");
|
|
data.append("rpm4,");
|
|
data.append("fuel,");
|
|
data.append("LeftPressure,");
|
|
data.append("RightPressure,");
|
|
data.append("AirPressure,");
|
|
data.append("cpu_load,");
|
|
|
|
for(int i = 0; i < 24; ++i)
|
|
{
|
|
data.append(QString("D0_%1,").arg(i).toLatin1().data() );
|
|
}
|
|
|
|
data.append("cmd,");
|
|
data.append("status\n");
|
|
|
|
QTextStream stream(&file);
|
|
stream.setCodec("UTF-8");
|
|
stream << data;
|
|
file.flush(); //将数据刷新到文件中
|
|
file.close(); //关闭文件
|
|
}
|
|
|
|
//创建保存actuatorr数据的文件
|
|
actuator_file_name = QString("./log/other/actuator_%1.csv").arg(QDateTime::currentDateTime().toString("yyyyMMddHHmmss") );
|
|
file.setFileName(actuator_file_name);
|
|
if(file.open(QIODevice::WriteOnly) )
|
|
{
|
|
QByteArray data;
|
|
data.append("time,");
|
|
|
|
data.append("type,");
|
|
data.append("id,");
|
|
data.append("wheel,");
|
|
data.append("left_trans,");
|
|
data.append("right_trans,");
|
|
data.append("status,");
|
|
data.append("current,");
|
|
data.append("temp,");
|
|
data.append("left_brake,");
|
|
data.append("right_brake\n");
|
|
|
|
QTextStream stream(&file);
|
|
stream.setCodec("UTF-8");
|
|
stream << data;
|
|
file.flush(); //将数据刷新到文件中
|
|
file.close(); //关闭文件
|
|
}
|
|
|
|
//创建保存actuator1的数据
|
|
actuator1_file_name = QString("./log/other/actuator1_%1.csv").arg(QDateTime::currentDateTime().toString("yyyyMMddHHmmss") );
|
|
file.setFileName(actuator1_file_name);
|
|
if(file.open(QIODevice::WriteOnly) )
|
|
{
|
|
QByteArray data;
|
|
data.append("time,");
|
|
|
|
data.append("type,");
|
|
data.append("id,");
|
|
data.append("left_ail,");
|
|
data.append("right_ail,");
|
|
data.append("left_rud,");
|
|
data.append("right_rud,");
|
|
data.append("status,");
|
|
data.append("current,");
|
|
data.append("temp\n");
|
|
|
|
QTextStream stream(&file);
|
|
stream.setCodec("UTF-8");
|
|
stream << data;
|
|
file.flush(); //将数据刷新到文件中
|
|
file.close(); //关闭文件
|
|
}
|
|
|
|
//创建保存actuator2数据的文件
|
|
actuator2_file_name = QString("./log/other/actuator2_%1.csv").arg(QDateTime::currentDateTime().toString("yyyyMMddHHmmss") );
|
|
file.setFileName(actuator2_file_name);
|
|
if(file.open(QIODevice::WriteOnly) )
|
|
{
|
|
QByteArray data;
|
|
data.append("time,");
|
|
|
|
data.append("type,");
|
|
data.append("id,");
|
|
data.append("left_ele,");
|
|
data.append("right_ele,");
|
|
data.append("left_brake,");
|
|
data.append("right_brake,");
|
|
data.append("status,");
|
|
data.append("current,");
|
|
data.append("temp\n");
|
|
|
|
QTextStream stream(&file);
|
|
stream.setCodec("UTF-8");
|
|
stream << data;
|
|
file.flush(); //将数据刷新到文件中
|
|
file.close(); //关闭文件
|
|
}
|
|
|
|
//创建保存imu数据的文件
|
|
imu_file_name = QString("./log/other/imu_%1.csv").arg(QDateTime::currentDateTime().toString("yyyyMMddHHmmss") );
|
|
file.setFileName(imu_file_name);
|
|
if(file.open(QIODevice::WriteOnly) )
|
|
{
|
|
QByteArray data;
|
|
data.append("time,");
|
|
|
|
data.append("time_stamp,");
|
|
data.append("com_ok,");
|
|
data.append("status_bit,");
|
|
data.append("accel_x_bit,");
|
|
data.append("accel_y_bit,");
|
|
data.append("accel_z_bit,");
|
|
data.append("gyro_x_bit,");
|
|
data.append("gyro_y_bit,");
|
|
data.append("gyro_z_bit,");
|
|
data.append("accel_in_range,");
|
|
data.append("gyro_in_range,");
|
|
data.append("accel_x,");
|
|
data.append("accel_y,");
|
|
data.append("accel_z,");
|
|
data.append("gyro_x,");
|
|
data.append("gyro_y,");
|
|
data.append("gyro_z,");
|
|
data.append("temp,");
|
|
data.append("delta_vel_x,");
|
|
data.append("delta_vel_y,");
|
|
data.append("delta_vel_z,");
|
|
data.append("delta_angle_x,");
|
|
data.append("delta_angle_y,");
|
|
data.append("delta_angle_z\n");
|
|
|
|
QTextStream stream(&file);
|
|
stream.setCodec("UTF-8");
|
|
stream << data;
|
|
file.flush(); //将数据刷新到文件中
|
|
file.close(); //关闭文件
|
|
}
|
|
|
|
//创建保存euler数据的文件
|
|
euler_file_name = QString("./log/other/euler_%1.csv").arg(QDateTime::currentDateTime().toString("yyyyMMddHHmmss") );
|
|
file.setFileName(euler_file_name);
|
|
if(file.open(QIODevice::WriteOnly) )
|
|
{
|
|
QByteArray data;
|
|
data.append("time,");
|
|
|
|
data.append("time_stamp,");
|
|
data.append("roll,");
|
|
data.append("pitch,");
|
|
data.append("yaw,");
|
|
data.append("roll_acc,");
|
|
data.append("pitch_acc,");
|
|
data.append("yaw_acc,");
|
|
data.append("solutionMode,");
|
|
data.append("attitude_valid,");
|
|
data.append("heading_valid,");
|
|
data.append("velocity_valid,");
|
|
data.append("position_valid,");
|
|
data.append("vert_ref_used,");
|
|
data.append("mag_ref_used,");
|
|
data.append("gps1_vel_used,");
|
|
data.append("gps1_pos_used,");
|
|
data.append("gps1_hdt_used,");
|
|
data.append("gps2_vel_used,");
|
|
data.append("gps2_pos_used,");
|
|
data.append("gps2_hdt_used,");
|
|
data.append("odo_used,");
|
|
data.append("dvl_bt_used,");
|
|
data.append("dvl_wt_used,");
|
|
data.append("usel_used,");
|
|
data.append("air_data_used,");
|
|
data.append("zupt_used,");
|
|
data.append("align_valid,");
|
|
data.append("depth_used\n");
|
|
|
|
QTextStream stream(&file);
|
|
stream.setCodec("UTF-8");
|
|
stream << data;
|
|
file.flush(); //将数据刷新到文件中
|
|
file.close(); //关闭文件
|
|
}
|
|
|
|
//创建保存eadc数据的文件
|
|
eadc_file_name = QString("./log/other/eadc_%1.csv").arg(QDateTime::currentDateTime().toString("yyyyMMddHHmmss") );
|
|
file.setFileName(eadc_file_name);
|
|
if(file.open(QIODevice::WriteOnly) )
|
|
{
|
|
QByteArray data;
|
|
data.append("time,");
|
|
|
|
data.append("heatmode,");
|
|
data.append("heatstatus,");
|
|
data.append("heatmode_t,");
|
|
data.append("heatstatus_t,");
|
|
data.append("psi,");
|
|
data.append("ps,");
|
|
data.append("qci,");
|
|
data.append("qc,");
|
|
data.append("hp,");
|
|
data.append("hpr,");
|
|
data.append("ts,");
|
|
data.append("tt,");
|
|
data.append("mi,");
|
|
data.append("vi,");
|
|
data.append("vt,");
|
|
data.append("adr,");
|
|
data.append("aoai1,");
|
|
data.append("aoai2,");
|
|
data.append("aoat1,");
|
|
data.append("aoat2,");
|
|
data.append("aosi1,");
|
|
data.append("aosi2,");
|
|
data.append("aost1,");
|
|
data.append("aost2,");
|
|
data.append("faultword_ps,");
|
|
data.append("faultword_qc,");
|
|
data.append("faultword_ts,");
|
|
data.append("faultword_aoa1,");
|
|
data.append("faultword_aoa2,");
|
|
data.append("faultword_aos1,");
|
|
data.append("faultword_aos2,");
|
|
data.append("faultword_heat,");
|
|
data.append("faultword_ex_storage,");
|
|
data.append("faultword_aoa_diff,");
|
|
data.append("faultword_aos_diff,");
|
|
data.append("faultword_qc_zero,");
|
|
data.append("faultword_back1,");
|
|
data.append("faultword_back2,");
|
|
data.append("faultword_overtemp,");
|
|
data.append("faultword_system,");
|
|
data.append("datavalid_psi,");
|
|
data.append("datavalid_ps,");
|
|
data.append("datavalid_qci,");
|
|
data.append("datavalid_qc,");
|
|
data.append("datavalid_hp,");
|
|
data.append("datavalid_hpr,");
|
|
data.append("datavalid_ts,");
|
|
data.append("datavalid_tt,");
|
|
data.append("datavalid_mi,");
|
|
data.append("datavalid_vi,");
|
|
data.append("datavalid_vt,");
|
|
data.append("datavalid_adr,");
|
|
data.append("datavalid_aoai1,");
|
|
data.append("datavalid_aoai2,");
|
|
data.append("datavalid_aoat1,");
|
|
data.append("datavalid_aoat2,");
|
|
data.append("datavalid_aosi1,");
|
|
data.append("datavalid_aosi2,");
|
|
data.append("datavalid_aost1,");
|
|
data.append("datavalid_aost2,");
|
|
data.append("coffpress_k0,");
|
|
data.append("coffpress_k1,");
|
|
data.append("coffpress_k,");
|
|
data.append("coffpress_k3,");
|
|
data.append("coffangle_k0,");
|
|
data.append("coffangle_k1,");
|
|
data.append("coffangle_k2,");
|
|
data.append("coffangle_k3\n");
|
|
|
|
QTextStream stream(&file);
|
|
stream.setCodec("UTF-8");
|
|
stream << data;
|
|
file.flush(); //将数据刷新到文件中
|
|
file.close(); //关闭文件
|
|
}
|
|
|
|
//创建保存ecu数据的文件
|
|
ecu_file_name = QString("./log/other/ecu_%1.csv").arg(QDateTime::currentDateTime().toString("yyyyMMddHHmmss") );
|
|
file.setFileName(ecu_file_name);
|
|
if(file.open(QIODevice::WriteOnly) )
|
|
{
|
|
QByteArray data;
|
|
data.append("time,");
|
|
|
|
data.append("rpm_c,");
|
|
data.append("rpm,");
|
|
data.append("rpm_t,");
|
|
data.append("t1,");
|
|
data.append("t5,");
|
|
data.append("p2,");
|
|
data.append("servo_current,");
|
|
data.append("oil_low,");
|
|
data.append("p2_high,");
|
|
data.append("states\n");
|
|
|
|
QTextStream stream(&file);
|
|
stream.setCodec("UTF-8");
|
|
stream << data;
|
|
file.flush(); //将数据刷新到文件中
|
|
file.close(); //关闭文件
|
|
}
|
|
|
|
//创建保存sspc数据的文件
|
|
sspc_file_name = QString("./log/other/sspc_%1.csv").arg(QDateTime::currentDateTime().toString("yyyyMMddHHmmss") );
|
|
file.setFileName(sspc_file_name);
|
|
if(file.open(QIODevice::WriteOnly) )
|
|
{
|
|
QByteArray data;
|
|
data.append("time,");
|
|
|
|
data.append("bus_voltage,");
|
|
data.append("battery_voltage,");
|
|
data.append("battery_current,");
|
|
data.append("main_voltage,");
|
|
data.append("main_current,");
|
|
data.append("current_ch1,");
|
|
data.append("current_ch2,");
|
|
data.append("current_ch3,");
|
|
data.append("current_ch4,");
|
|
data.append("current_ch5,");
|
|
data.append("current_ch6,");
|
|
data.append("current_ch7,");
|
|
data.append("current_ch8,");
|
|
data.append("current_ch9,");
|
|
data.append("current_ch10,");
|
|
data.append("current_ch11,");
|
|
data.append("current_ch12,");
|
|
data.append("current_ch13,");
|
|
data.append("source,");
|
|
data.append("state1_current_ch1,");
|
|
data.append("state1_current_ch2,");
|
|
data.append("state1_current_ch3,");
|
|
data.append("state1_current_ch4,");
|
|
data.append("state1_current_ch5,");
|
|
data.append("state1_current_ch6,");
|
|
data.append("state1_current_ch7,");
|
|
data.append("state1_current_ch8,");
|
|
data.append("state2_current_ch9,");
|
|
data.append("state2_current_ch10,");
|
|
data.append("state2_current_ch11,");
|
|
data.append("state2_current_ch12,");
|
|
data.append("state2_current_ch13,");
|
|
data.append("state2_current_ch14,");
|
|
data.append("state2_current_ch15,");
|
|
data.append("state2_current_ch16,");
|
|
data.append("check_CUP_STA,");
|
|
data.append("check_current,");
|
|
data.append("check_current_10A,");
|
|
data.append("check_current_40A,");
|
|
data.append("err1_ins_sbg,");
|
|
data.append("err1_ins_320,");
|
|
data.append("err1_dlink_l,");
|
|
data.append("err1_dlink_u,");
|
|
data.append("err1_eadc,");
|
|
data.append("err1_rec,");
|
|
data.append("err1_landinggear,");
|
|
data.append("err1_act1,");
|
|
data.append("err2_act2,");
|
|
data.append("err2_act3,");
|
|
data.append("err2_computer,");
|
|
data.append("err3_pump,");
|
|
data.append("err3_ail,");
|
|
data.append("err3_temp_56v,");
|
|
data.append("err3_temp_28v,");
|
|
data.append("err4_computer,");
|
|
data.append("err4_ecu,");
|
|
data.append("err4_eadc,");
|
|
data.append("err4_temp,");
|
|
data.append("err5_fuel,");
|
|
data.append("err5_temp_56v2,");
|
|
data.append("err5_v_act,");
|
|
data.append("err5_current56V,");
|
|
data.append("err6_oil_press\n");
|
|
|
|
QTextStream stream(&file);
|
|
stream.setCodec("UTF-8");
|
|
stream << data;
|
|
file.flush(); //将数据刷新到文件中
|
|
file.close(); //关闭文件
|
|
}
|
|
|
|
//创建保存vel数据的文件
|
|
vel_file_name = QString("./log/other/vel_%1.csv").arg(QDateTime::currentDateTime().toString("yyyyMMddHHmmss") );
|
|
file.setFileName(vel_file_name);
|
|
if(file.open(QIODevice::WriteOnly) )
|
|
{
|
|
QByteArray data;
|
|
data.append("time,");
|
|
|
|
data.append("time_stamp,");
|
|
data.append("status_status_value,");
|
|
data.append("status_type_value,");
|
|
data.append("status_vel_status,");
|
|
data.append("status_vel_type,");
|
|
data.append("tow,");
|
|
data.append("vel_n,");
|
|
data.append("vel_e,");
|
|
data.append("vel_d,");
|
|
data.append("vel_acc_n,");
|
|
data.append("vel_acc_e,");
|
|
data.append("vel_acc_d,");
|
|
data.append("course,");
|
|
data.append("course_acc\n");
|
|
|
|
QTextStream stream(&file);
|
|
stream.setCodec("UTF-8");
|
|
stream << data;
|
|
file.flush(); //将数据刷新到文件中
|
|
file.close(); //关闭文件
|
|
}
|
|
|
|
//创建保存pos数据的文件
|
|
pos_file_name = QString("./log/other/pos_%1.csv").arg(QDateTime::currentDateTime().toString("yyyyMMddHHmmss") );
|
|
file.setFileName(pos_file_name);
|
|
if(file.open(QIODevice::WriteOnly) )
|
|
{
|
|
QByteArray data;
|
|
data.append("time,");
|
|
|
|
data.append("time_stamp,");
|
|
data.append("status_status_value,");
|
|
data.append("status_type_value,");
|
|
data.append("status_pos_status,");
|
|
data.append("status_pos_type,");
|
|
data.append("status_gps_l1_used,");
|
|
data.append("status_gps_l2_used,");
|
|
data.append("status_gps_l5_used,");
|
|
data.append("status_glo_l1_used,");
|
|
data.append("status_glo_l2_used,");
|
|
data.append("status_glo_l3_used,");
|
|
data.append("status_gal_e1_used,");
|
|
data.append("status_gal_e5a_used,");
|
|
data.append("status_gal_e5b_used,");
|
|
data.append("status_gal_e5alt_used,");
|
|
data.append("status_gal_e6_used,");
|
|
data.append("status_bds_b1_used,");
|
|
data.append("status_bds_b2_used,");
|
|
data.append("status_bds_b3_used,");
|
|
data.append("status_qzss_l1_used,");
|
|
data.append("status_qzss_l2_used,");
|
|
data.append("status_qzss_l3_used,");
|
|
data.append("tow,");
|
|
data.append("lat,");
|
|
data.append("lng,");
|
|
data.append("alt,");
|
|
data.append("undulation,");
|
|
data.append("pos_acc_lat,");
|
|
data.append("pos_acc_lng,");
|
|
data.append("pos_acc_alt,");
|
|
data.append("num_sv_used,");
|
|
data.append("base_station_id,");
|
|
data.append("diff_age\n");
|
|
|
|
QTextStream stream(&file);
|
|
stream.setCodec("UTF-8");
|
|
stream << data;
|
|
file.flush(); //将数据刷新到文件中
|
|
file.close(); //关闭文件
|
|
}
|
|
}
|
|
|
|
|