#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QFileDialog>
#include <string>
#include <math.h> /* cos */
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(findCliecked()));
connect(ui->pushButton_2,SIGNAL(clicked()),this,SLOT(parseLogCliecked()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::findCliecked()
{
QStringList fileNameList;
QFileDialog* fd = new QFileDialog(this);
fd->resize(240,320);
//fd->setFixedHeight(tr("Allfile(*.*);;vplog(*.vpl)")); //?置文件??器
fd->setViewMode(QFileDialog::List);
if ( fd->exec() == QDialog::Accepted )
{
fileNameList = fd->selectedFiles();
ui->textEdit->setText(fileNameList[0]);
}
else
{
fd->close();
}
}
void MainWindow::parseLogCliecked()
{
QString qfilename = ui->textEdit->toPlainText();
if (qfilename.isEmpty())
{
return;
}
std::string filename = qfilename.toStdString();
FILE * fp = fopen(filename.c_str(),"rb");
FILE * wfp = NULL;
if (fp)
{
int n = filename.rfind(‘/‘);
std::string cvsfilename;
if (n != std::string::npos)
{
cvsfilename = filename.substr(0,n+1);
cvsfilename += "vp.csv";
wfp = fopen(cvsfilename.c_str(),"wb");
if (!wfp)
{
fclose(fp);
return;
}
char buff[] = "Time,X,Y,Z\n";
fwrite(buff, 1, strlen(buff),wfp);
}
char line[1024] = {0};
char outline[1024] = {0};
while(fgets(line,1024,fp))
{
std::string strline = line;
std::string strtime = parseLine(strline,"time:","]");
int m = strtime.find(‘,‘);
if (m != std::string::npos)
{
strtime.replace(m,1," ");
}
std::string strX = parseLine(strline,"X:",",");
std::string strY = parseLine(strline,"Y:",",");
std::string strZ = parseLine(strline,"Z:",",");
if (!strX.empty())
{
sprintf(outline,"%s,%s,%s,%s\n",strtime.c_str(),strX.c_str(),strY.c_str(),strZ.c_str());
fwrite(outline,1,strlen(outline),wfp);
}
}
}
fclose(fp);
fclose(wfp);
QMessageBox message(QMessageBox::NoIcon, "Title", "finished.");
message.exec();
}
std::string MainWindow::parseLine(const std::string & strline, const char* start,
const char* end)
{
std::string strResutl;
int pos = strline.find(start);
if (pos != std::string::npos)
{
int pos2= strline.find(end,pos);
if (std::string::npos != pos2)
{
strResutl = strline.substr(pos+2,(pos2 -(pos+2)));
}
}
return strResutl;
}
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QFileDialog>
#include <string>
#include <math.h> /* cos */
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(findCliecked()));
connect(ui->pushButton_2,SIGNAL(clicked()),this,SLOT(parseLogCliecked()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::findCliecked()
{
QStringList fileNameList;
QFileDialog* fd = new QFileDialog(this);
fd->resize(240,320);
//fd->setFixedHeight(tr("Allfile(*.*);;vplog(*.vpl)")); //?置文件??器
fd->setViewMode(QFileDialog::List);
if ( fd->exec() == QDialog::Accepted )
{
fileNameList = fd->selectedFiles();
ui->textEdit->setText(fileNameList[0]);
}
else
{
fd->close();
}
}
void MainWindow::parseLogCliecked()
{
QString qfilename = ui->textEdit->toPlainText();
if (qfilename.isEmpty())
{
return;
}
std::string filename = qfilename.toStdString();
FILE * fp = fopen(filename.c_str(),"rb");
FILE * wfp = NULL;
if (fp)
{
int n = filename.rfind(‘/‘);
std::string cvsfilename;
if (n != std::string::npos)
{
cvsfilename = filename.substr(0,n+1);
cvsfilename += "vp.csv";
wfp = fopen(cvsfilename.c_str(),"wb");
if (!wfp)
{
fclose(fp);
return;
}
char buff[] = "Time,X,Y,Z\n";
fwrite(buff, 1, strlen(buff),wfp);
}
char line[1024] = {0};
char outline[1024] = {0};
while(fgets(line,1024,fp))
{
std::string strline = line;
std::string strtime = parseLine(strline,"time:","]");
int m = strtime.find(‘,‘);
if (m != std::string::npos)
{
strtime.replace(m,1," ");
}
std::string strX = parseLine(strline,"X:",",");
std::string strY = parseLine(strline,"Y:",",");
std::string strZ = parseLine(strline,"Z:",",");
if (!strX.empty())
{
sprintf(outline,"%s,%s,%s,%s\n",strtime.c_str(),strX.c_str(),strY.c_str(),strZ.c_str());
fwrite(outline,1,strlen(outline),wfp);
}
}
}
fclose(fp);
fclose(wfp);
QMessageBox message(QMessageBox::NoIcon, "Title", "finished.");
message.exec();
}
std::string MainWindow::parseLine(const std::string & strline, const char* start,
const char* end)
{
std::string strResutl;
int pos = strline.find(start);
if (pos != std::string::npos)
{
int pos2= strline.find(end,pos);
if (std::string::npos != pos2)
{
strResutl = strline.substr(pos+2,(pos2 -(pos+2)));
}
}
return strResutl;
}