@ -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,28 +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 ] ;
isExitWriteData2Disk = false ;
while ( true )
{
r_qtx . lock ( ) ;
bool bempty = m_q - > empty ( ) ;
r_qtx . unlock ( ) ;
if ( bempty )
{
QThread : : msleep ( sleepCounters * sleepCounters * m_iNumber_WriteDisk ) ;
// std::cout<<"WriteData2Disk::write2Disk-----------------------队列第几次为空:" << sleepCounters <<std::endl;
sleepCounters + + ;
if ( sleepCounters = = 10 & & frameCounter ! = 0 ) //如果sleepCounters == 10时, 队列还是空, 就代表相机停止采集 → 退出此线程
if ( bempty & & isExitWriteData2Disk )
{
std : : cout < < " WriteData2Disk::write2Disk-----------------------队列为空,采集线程已经退出! " < < std : : endl ;
break ;
}
else if ( bempty & & ! isExitWriteData2Disk )
{
continue ;
}
sleepCounters = 1 ;
r_qtx . lock ( ) ;
@ -901,6 +896,11 @@ void WriteData2Disk::write2Disk()
std : : cout < < " WriteData2Disk::write2Disk-----------------------写磁盘线程将退出,共写帧数: " < < frameCounter * m_iNumber_WriteDisk < < std : : endl ;
}
void WriteData2Disk : : exitWriteData2Disk ( )
{
isExitWriteData2Disk = true ;
}
void WriteData2Disk : : setParm ( queue < DataBuffer * > * q , QString baseFileName , int frameSizeInByte , int number_WriteDisk , MemoryPool < DataBuffer > * pool , rgbImage * rgbImage )
{
m_q = q ;