#pragma once #include "GScan.h" #include class GScanO200 : public IScanner { public: GScanO200(); virtual ~GScanO200(); // ͨ¹ý IGScan ¼Ì³Ð virtual void open(int vid, int pid) override; virtual void regist_deviceevent_callback(deviceevent_callback callback, void* usrdata = 0) override; virtual int aquire_bmpdata(std::vector& bmpdata) override; virtual BOOL IsConnected() override; virtual std::string GetFWVersion() override; virtual std::string GetSerialNum() override; virtual std::string GetMacAdder() override; virtual std::uint32_t GetMotorFPGA() override; virtual std::uint32_t GetScanFPGA() override; virtual bool is_scan() override; virtual BOOL Get_Scanner_PaperOn() override; virtual int Get_Roller_num() override; virtual void config_params(GScanCap& params) override; virtual void Scanner_StartScan(UINT16 count) override; virtual int notifyscan() override; virtual void Stop_scan() override; virtual void ResetScanner() override; virtual bool Get_IsImageQueueEmpty() override; virtual void reset() override; virtual UINT32 get_ErrorCode() override; virtual void Set_ErrorCode(UINT32 value) override; virtual int get_scanned_num() override; virtual void clear_hwerror() override; virtual void set_sleep_time(int mode) override; virtual bool set_scannercode(std::string str) override; virtual std::string get_scannercode() override; virtual void DogEar_callback(std::function fun) override; private: static void usbhotplug_callback(bool isleft, void* userdata); void usbhotplug(bool isleft); void updateHVRatio(); void usbmain(); USBCB Get_Scanner_Status(); void Getimagenumber(bool isadd); std::shared_ptr> Get_Img_Data(int buffersize); void Pop_Image(); private: bool m_bread_fixed_ratio_fromDSP; bool is_orginimgcount; std::shared_ptr m_usb; std::unique_ptr m_threadUsb; GScanCap gcap; volatile int image_num; void* huagods; deviceevent_callback dev_callback; };