#include "Header_Files/ximeaimager.h" XimeaImager::XimeaImager() { m_buffer=nullptr; m_bRecordControl=false; m_iFrameCounter=0; m_iImagerState=0; //connect(this, SIGNAL(recordFinished()),this, SLOT()); } void XimeaImager::openImger() { if(m_iImagerState>0) { emit ximeaImageStatus(m_iImagerState); return; } try { //std::cout<<"XimeaImager::openImger111111111111111111111:正在打开相机!"<maxValue) { maxValue=data[i]; } } printf("本帧最大值为: %d.\n",maxValue); return maxValue; } int XimeaImager::getImagerState() const { return m_iImagerState; } void XimeaImager::startRecord(double TimeDifferenceBetweensOSAndSbg,QString baseFileName) { try { if(m_iImagerState==4 || m_iImagerState==0 || m_iImagerState>=21) { emit ximeaImageStatus(m_iImagerState); return; } m_iImagerStateTemp=m_iImagerState; m_iImagerState=4; emit ximeaImageStatus(m_iImagerState); printf("开始采集!\n"); m_iFrameCounter=0; m_bRecordControl=true; m_imager.start(); m_baseFileName=baseFileName; QString imageFileName=m_baseFileName+".bil"; QString timesFileName=m_baseFileName+".times"; // FILE *hFile=fopen(imageFileName.toStdString().c_str(),"w+b"); FILE *hHimesFile=fopen(timesFileName.toStdString().c_str(),"w+"); using namespace std; ofstream timesFileHandle(timesFileName.toStdString()+"_ofstream"); struct timeval timeStart, timeEnd; double runTime=0; gettimeofday(&timeStart, NULL); while (m_bRecordControl) { unsigned short *x=m_imager.get_frame(m_buffer); //fwrite(m_buffer,2,getBandCount()*getSampleCount(),hFile); fwrite(m_buffer,1,m_iFrameSizeInByte,hFile);//********************************* //fflush(hFile);//只保证了将IO缓冲写入系统缓冲中,使IO读操作能成功,但系统什么时候写入磁盘,由系统决定,一般是达到一定量时系统他就写入磁盘。 //sync();//强制系统将系统文件缓冲的内容写入磁盘 m_iFrameCounter+=1; double sbgTime=getSbgTime(TimeDifferenceBetweensOSAndSbg); fprintf(hHimesFile,"%f\n",sbgTime); //fwrite(&sbgTime,sizeof(double),1,hHimesFile); timesFileHandle << sbgTime << "\n"; // std::cout<<"XimeaImager::startRecord---std::cout: "<