#pragma once #include "IUsb.h" #include #include #include #include #include "opencv2/core/core.hpp" #include #include #include "ImageMatQueue.h" #include #include "PublicFunc.h" #include "IScanner.h" using namespace cv; class GScn_Drv :public IScanner { public: GScn_Drv(); virtual ~GScn_Drv(); virtual void open(int vid, int pid, int index); virtual int aquire_image(std::string& image, int num); virtual bool IsConnected(); virtual std::string GetFWVersion(); virtual void SetFWVersion(); virtual std::string GetSerialNum(); virtual void SetSerialNum(std::string serial); virtual std::string GetMbVersion(); virtual std::string GetIpAddr(); virtual std::string GetKernelVersion(); virtual void SetRatio(int tyepe, int ration,int dpi=0); virtual void GetRatio(int type, int& ratio,int dpi=0); virtual void Reboot(bool loader=false); virtual void PowerOff() {}; virtual bool is_scan()override; virtual bool Get_Scanner_PaperOn()override; virtual void Config_Scanner(PUSBCB pUSBCB); virtual void Config_Scanner(HGScanConfig config)override; virtual void Scanner_StartScan(UINT16 count)override; virtual void Stop_scan()override; virtual void ResetScanner()override; virtual bool Get_IsImageQueueEmpty()override; virtual void reset()override; virtual void run()override; virtual void ActiveteUSB()override; virtual bool Updata(std::string filename, std::function func)override; virtual int GetScanNum()override; virtual int GetRollerNum() override; virtual void ClrRollerNum()override; virtual void ClrScanNum()override; virtual void SendFlatData(CorrectParam param, int index)override; virtual CaptureParams GetFlatData()override; virtual void StartFlat(bool iscolor)override; virtual void DevStateChange()override; virtual int getMatSum()override; virtual void close()override; virtual void GetExpose(int& Aside, int& Bside)override; virtual void SetExpose(int aside, int bside)override; virtual void GetSptime(int type, int& time)override; virtual void SetSptime(int type, int time)override; virtual void GetSleepTime(int& sleeptime)override; virtual void SetSleepTime(int sleeptime)override; virtual void GetFlatMaxBright(bool iscolor, unsigned int& val)override; virtual void SetFlatMaxBright(bool iscolor, unsigned int val)override; virtual void SetFlatCallback(std::function func)override; virtual void GetSpeedMode(int& speedmode, bool get)override; virtual void GetOrSetVIDPID(int& value, bool get) override; virtual std::string GetSysInfo() override; private: volatile int devState; volatile bool m_bRun; std::mutex m_Locker; std::mutex m_imgLocker; std::thread m_threadUsb; std::map ntcMsg; std::map devType; std::vector vcSerials; int selectDeviceIndex; int m_scannerType; bool m_isScanning; private: std::string popMat(int num); void pushMat(JpegBuffer& data); USBCB Get_Scanner_Status(); void InitMSGMap(); void InitScannerDiviceMap(); cv::Mat Get_Img_Data(int buffersize); DWORD usbmain(); void Pop_Image(); HGScanConfig m_config; std::function m_flatcallback; };