diff --git a/Header_Files/ximeaimager.h b/Header_Files/ximeaimager.h index d50d4fd..cf5fd28 100644 --- a/Header_Files/ximeaimager.h +++ b/Header_Files/ximeaimager.h @@ -108,11 +108,13 @@ private: int m_iFrameSizeInByte; int m_iNumber_WriteDisk; MemoryPool * m_pool; + bool isExitWriteData2Disk; rgbImage * m_rgbImage; public slots: void write2Disk(); + void exitWriteData2Disk(); signals: }; diff --git a/Source_Files/ximeaimager.cpp b/Source_Files/ximeaimager.cpp index c8472f6..168ce97 100644 --- a/Source_Files/ximeaimager.cpp +++ b/Source_Files/ximeaimager.cpp @@ -7,8 +7,6 @@ XimeaImager::XimeaImager() m_iFrameCounter=0; m_iImagerState=100; - //connect(this, SIGNAL(recordFinished()),this, SLOT()); - QString ximeaCfgFile = "/media/nvme/300TC/config/ximea.cfg"; m_configfile.setConfigfilePath(ximeaCfgFile.toStdString()); if(!m_configfile.isConfigfileExist()) @@ -567,6 +565,7 @@ void XimeaImager::startRecord(double TimeDifferenceBetweensOSAndSbg,QString base gettimeofday(&timeEnd, NULL); runTime = (timeEnd.tv_sec - timeStart.tv_sec ) + (double)(timeEnd.tv_usec -timeStart.tv_usec)/1000000; m_imager.stop(); + writeData2Disk->exitWriteData2Disk(); m_iFrameCounter = m_iFrameCounter - indexofbuff; if (indexofbuff != 0) @@ -847,6 +846,7 @@ void RecordXimeaTemperature::recordTemperature(QString filePath= nullptr) WriteData2Disk::WriteData2Disk() { + isExitWriteData2Disk = false; } void WriteData2Disk::write2Disk() @@ -854,35 +854,23 @@ void WriteData2Disk::write2Disk() QString imageFileName=m_QbaseFileName+".bil"; FILE *hFile=fopen(imageFileName.toStdString().c_str(),"w+b"); - int sleepCounters=1; int frameCounter = 0; unsigned short * dataBuffer = new unsigned short[m_iFrameSizeInByte/2*m_iNumber_WriteDisk]; - unsigned long allTime2sleep = 0; - unsigned long time2sleep; + isExitWriteData2Disk = false; while(true) { r_qtx.lock(); bool bempty=m_q->empty(); r_qtx.unlock(); - if(bempty) + if(bempty && isExitWriteData2Disk) + { + std::cout<<"WriteData2Disk::write2Disk-----------------------队列为空,采集线程已经退出!"< * q, QString baseFileName, int frameSizeInByte, int number_WriteDisk, MemoryPool * pool, rgbImage * rgbImage) { m_q = q;