From 6b78db5bc34566941abf8b18959201f7887d973f Mon Sep 17 00:00:00 2001 From: tangchao0503 <735056338@qq.com> Date: Sun, 25 Jun 2023 21:20:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E5=8F=98=E5=86=99=E7=BA=BF=E7=A8=8B?= =?UTF-8?q?=E9=80=80=E5=87=BA=E6=96=B9=E5=BC=8F=EF=BC=8C=E4=B8=8D=E5=86=8D?= =?UTF-8?q?=E7=AD=89=E5=BE=85=E4=B8=80=E6=AE=B5=E6=97=B6=E9=97=B4=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Header_Files/ximeaimager.h | 2 ++ Source_Files/ximeaimager.cpp | 35 ++++++++++++++--------------------- 2 files changed, 16 insertions(+), 21 deletions(-) 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;