#ifndef XIMEAIMAGER_H #define XIMEAIMAGER_H /* This is the reference example application code for XIMEA cameras. You can use it to simplify development of your camera application. Sample name: xiAPI / Capture-10-images Description: Open camera, capture 10 images while printing first pixel from each image. Workflow: 1: Open camera 2: Set parameters 3: Start acquisition 4: Each image captured - print dimensions and value of the first pixel */ #include #include #include #include #include #include #include #include #include #include #include #include "configfile.h" #include "irisximeaimager.h" #include "math.h" #include "utility_tc.h" //#ifdef WIN32 //#include // Windows //#else //#include // Linux, OSX //#endif class RecordXimeaTemperature : public QObject { Q_OBJECT public: RecordXimeaTemperature(Iris::IrisXimeaImager * imager); void stopRecordTemperature(); private: Iris::IrisXimeaImager * m_imager; bool m_bIsRecord; public slots: void recordTemperature(QString filePath); signals: }; class XimeaImager : public QObject { Q_OBJECT public: XimeaImager(); void setFramerate(double framerate); double getFramerate(); double setExposureTime(float exposureTime); double getExposureTime(); double autoExposure(); void setGain(double gain); double getGain(); int getSampleCount(); int getBandCount(); int getWindowStartBand(); int getWindowEndBand(); double geWavelengthAtBand(int x); void stopRecord(); int getFrameCounter(); int getMaxValueOfOneFrame(unsigned short * data, int numberOfPixel); int getImagerState() const; private: //0-61:ximea官方错误代码;99:发生的ximea官方错误代码,没有处理;100:未打开;101:打开;102:设置帧率;103:自动曝光;104:正在采集; int m_iImagerState; int m_iImagerStateTemp; QThread * m_recordTempThread; RecordXimeaTemperature * m_ximeaTemperature; QString m_baseFileName; QString m_ximeaTemperatureCSVPath; Iris::IrisXimeaImager m_imager; unsigned short * m_buffer; bool m_bRecordControl; int m_iFrameCounter; int m_iFrameSizeInByte; void writeHdr(); void processXiApiErrorCodes(int xiApiErrorCodes); inline double getSbgTime(double TimeDifferenceBetweensOSAndSbg) { struct timespec systemTime; clock_gettime(CLOCK_REALTIME,&systemTime); tm systemTime_rili; localtime_r(&systemTime.tv_sec, &systemTime_rili); double secondSystem=(systemTime_rili.tm_mday-1)*24*60*60+systemTime_rili.tm_hour*60*60+systemTime_rili.tm_min*60+systemTime_rili.tm_sec; double nanosecondSystem=secondSystem+static_cast(systemTime.tv_nsec)/1000000000; // printf("\n"); // printf("XimeaImager::getSbgTime------系统时间纳秒%d\n", systemTime.tv_nsec); // printf("XimeaImager::getSbgTime------系统时间(未偏移)%f\n", nanosecondSystem); // printf("XimeaImager::getSbgTime------系统时间(偏移)%f\n", nanosecondSystem-TimeDifferenceBetweensOSAndSbg); return nanosecondSystem-TimeDifferenceBetweensOSAndSbg; } Configfile m_configfile; public slots: void openImger(); void closeImger(); void startRecord(double TimeDifferenceBetweensOSAndSbg,QString baseFileName); signals: void recordFinished(); void ximeaImageStatus(int); void recordXimeaTemperatureSignal(QString); }; #endif // XIMEAIMAGER_H