#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 void SetRatio(int tyepe, int ration); virtual void GetRatio(int type, int& ratio); virtual void Reboot(); virtual void PowerOff() {}; virtual bool is_scan(); virtual bool Get_Scanner_PaperOn(); virtual void Config_Scanner(PUSBCB pUSBCB); virtual void Config_Scanner(HGScanConfig config); virtual void Scanner_StartScan(UINT16 count); virtual void Stop_scan(); virtual void ResetScanner(); virtual bool Get_IsImageQueueEmpty(); virtual void reset(); virtual void run(); virtual void ActiveteUSB(); virtual bool Updata(std::string filename, std::function func); virtual int GetScanNum(); virtual void ClrRollerNum(); virtual void ClrScanNum(); virtual void SendFlatData(CorrectParam param, int index); virtual CaptureParams GetFlatData(); virtual void StartFlat(bool iscolor); virtual void DevStateChange(); virtual int getMatSum(); virtual void close(); virtual void GetExpose(int& Aside, int& Bside); virtual void SetExpose(int aside, int bside); virtual void GetSptime(int type, int& time); virtual void SetSptime(int type, int time); virtual void GetSleepTime(int& sleeptime); virtual void SetSleepTime(int sleeptime); 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; };