#include "mainwindow.h" #include "ui_mainwindow.h" #include #include #include #include "google/protobuf/io/zero_copy_stream_impl.h" #include "google/protobuf/text_format.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); mpTimer = new QTimer(); connect(mpTimer,SIGNAL(timeout()),this,SLOT(onTimer())); mpTimer->setInterval(10); connect(this,SIGNAL(CurState(int)),this,SLOT(onCurState(int))); ui->progressBar->setRange(0,100); ui->progressBar->setValue(0); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_decode_clicked() { QString strdir = QFileDialog::getExistingDirectory(this, tr("Set Save Directory"), ".", QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); if(strdir.isEmpty()) { return; } std::cout<<" directory: "<pushButton_decode->setEnabled(false); mpTimer->start(); } void MainWindow::onCurState(int nstate) { if(nstate == -1) { QMessageBox::warning(this,tr("Warning"),tr("Open File Fail."),QMessageBox::YesAll); } if(nstate == 0) { ui->progressBar->setValue(100); } ui->pushButton_decode->setEnabled(true); mpTimer->stop(); } void MainWindow::onTimer() { qint64 nSize = mnFileSize; if(nSize<=0)return; int nPos = mnPos*100/mnFileSize; ui->progressBar->setValue(nPos); } void MainWindow::threadconvert(QString strfilepath,QString strdir) { mFile.setFileName(strfilepath); if(mFile.open(QFile::ReadOnly)) { mbOpen = true; mnFileSize = mFile.size(); mnPos = 0; } else { mnFileSize = 0; mbReplay = false; mnPos = 0; mbOpen = false; } if(mbOpen == false) { emit onCurState(-1); return; } bool bx = true; while(bx == true) { int nReadSize = 0; int nDataSize; char * strData; char * strName; bx = ReadARecord(nReadSize,&strName,&nDataSize,&strData); mnPos = mnPos + nReadSize; if(bx == true) { std::cout<<" read a record."< nSize) { std::cout<<"ListenPointCloud data is small headsize ="<<*pHeadSize<<" data size is"<::Ptr point_cloud( new pcl::PointCloud()); int nNameSize; nNameSize = *pHeadSize - 4-4-8; char * strName = new char[nNameSize+1];strName[nNameSize] = 0; memcpy(strName,(char *)((char *)strdata +4),nNameSize); point_cloud->header.frame_id = strName; memcpy(&point_cloud->header.seq,(char *)strdata+4+nNameSize,4); memcpy(&point_cloud->header.stamp,(char *)strdata+4+nNameSize+4,8); int nPCount = (nSize - *pHeadSize)/sizeof(pcl::PointXYZI); int i; pcl::PointXYZI * p; p = (pcl::PointXYZI *)((char *)strdata + *pHeadSize); for(i=0;ix; xp.y = p->y; xp.z = p->z; xp.intensity = p->intensity; point_cloud->push_back(xp); p++; // std::cout<<" x is "<