#pragma once #include "IScanner.h" #include "Scanner.h" #include #include "FsmState.h" #include "usbdevice.h" using namespace std; class UsbScanner : public IScanner { public: UsbScanner(); virtual ~UsbScanner(); virtual void StartScan(int scancount) override; virtual void StopScan() override; virtual void ConfigScanParam(HG_ScanConfiguration config) override; virtual bool FeederLoaded() override; virtual std::string GetSerial() override; virtual void SetSerial(std::string serial) override; virtual std::string GetFWVersion() override; virtual void SetFwVersion(std::string fwversion) override; virtual int GetRollerNum() override; virtual void ClearRollerNum() override; virtual void InitScanner() override; virtual void ClearImages() override; virtual HG_JpegCompressInfo GetImage() override; virtual HG_Msg GetEvent() override; virtual void ClearErrorEvents() override; virtual void ClearHWError() override; virtual bool GetImagequeueEmpty() override; virtual bool GetEventQueueEmpty() override; virtual HG_JpegCompressInfo GetFrontImage() override; virtual HG_Msg GetEventFront() override; virtual void CreatCorrectData(int correctmode) override; virtual bool IsScanning() override; virtual void SetFlatParam(int type,int* value) override; virtual CaptureParams GetCaptureParams() override; virtual void UpdateScanInfo(int type,void* data) override; virtual ScannerScanInfo GetScanInfo() override; virtual void SetLEDStatus(LedStatus status) override; virtual void close_v4l2()override; std::string GetSysInfo(); int read_bulk(void *pdata, int length,int time = 1000); int write_bulk(void *pdata, int length); bool is_connect(); private: void mount_usb_device(); private: map::iterator iter; std::shared_ptr m_hgScanner; std::shared_ptr m_usb; bool m_startscan; volatile int imageremain; volatile int eventsramain; std::condition_variable t_waitconnect; };