#pragma once #include #include #include #include #include #include "MutexEx.h" #include "jpeglib.h" #include #include #include #include "ImageMatQueue.h" #include "PublicFunc.h" #include "scn_config.h" enum tagDevState { DEV_STOP = -1, DEV_ISRUNNING, DEV_WRONG }; typedef enum tagDevState DevState, PDevState; enum tagEventIndex { EVENT_IMAGE, EVENT_NUM }; class DiscardBlank; class CImageApply; class IGScan { public: virtual ~IGScan()=0 {}; virtual void open(int vid, int pid) = 0;; virtual int aquire_image(cv::Mat& image) = 0; virtual BOOL IsConnected() = 0; virtual std::string GetFWVersion() = 0; virtual std::string GetSerialNum() = 0; virtual bool is_scan() = 0; virtual BOOL Get_Scanner_PaperOn() = 0; virtual void config_params(SFreeImage& params) = 0; virtual void Scanner_StartScan(UINT16 count) = 0; virtual void Stop_scan() = 0; virtual void ResetScanner() =0; virtual bool Get_IsImageQueueEmpty() = 0; virtual void reset() = 0; virtual void setdecodepixtype(int twpixtype)= 0; virtual UINT32 get_ErrorCode() = 0; virtual void Set_ErrorCode(UINT32 value) = 0; }; class IUsb; class GScn_Drv { public: GScn_Drv(); virtual ~GScn_Drv(); protected: volatile UINT32 Error_Code; cv::Mat popMat(); void pushMat(JpegBuffer& data); void trim(std::string &s); volatile int devState; ImageMatQueue m_pImages; std::mutex m_Locker; std::mutex m_imgLocker; std::string fwVersion; std::string SerialNum; int pixType; }; void DoEvents();