#pragma once #include "GScan.h" #include #include "BlockingQueue.h" class IGDevice; class GScan200 : public IScanner { public: GScan200(); virtual ~GScan200(); 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 bool is_scan() override; virtual BOOL Get_Scanner_PaperOn() override; virtual void config_params(GScanCap¶ms) 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 clear_hwerror() override; virtual void setdecodepixtype(int twpixtype) override; virtual UINT32 get_ErrorCode() override; virtual void Set_ErrorCode(UINT32 value) override; virtual int get_scanned_num() override; private: static void image_call_s(void *fdata, int fsize, void *bdata, int bsize, void *userdata); static void event_call_g200(int error_value, void* userdata); void image_call(void *fdata, int fsize, void *bdata, int bsize); BlockingQueue error_msg; std::shared_ptr m_dev; };