#pragma once #include #include #include "BlockingQueue.h" #include "scanservices_utils.h" #include "gvideo.h" #include "HCamDevice.h" class FpgaComm; class ICapturer { public: ICapturer() {} virtual ~ICapturer() {} virtual void SetParent(void *scanner) = 0; virtual void open() = 0; virtual void snap() = 0; virtual void stopsnap(bool autosize) = 0; virtual void close() = 0; virtual int read(int addr) = 0; virtual void *readFrameTest(int timeout) = 0; virtual void UpdateScanParam(HG_ScanConfiguration config) = 0; virtual void createCorrect(int correctmode) = 0; virtual void setFPGATriggerMode(bool autotrigger, int delay) = 0; virtual void setFanMode(int mode) = 0; virtual void fpgaReload() = 0; virtual bool capturerImage() = 0; virtual void waitsnapdone(int state) = 0; virtual bool IsImageQueueEmpty() = 0; virtual void resetimageremain() = 0; virtual std::atomic_int &getimageremain() = 0; virtual void clearimages() = 0; virtual void setScanFlag(bool brun) = 0; protected: std::shared_ptr m_capFpageregs; BlockingQueue m_v4l2data; std::shared_ptr video;//Capturer 类内部自己初始化 HG_ScanConfiguration m_config; };