#pragma once // hg_scanner is the base class of kinds of scanners // // created on 2022-01-30 // #include #include #include #include #include "hg_scanner.h" #include "../wrapper/hg_log.h" #include "PaperSize.h" #ifdef OEM_HANWANG #define hg_scanner_300 hw_scanner_300 #elif defined(OEM_LISICHENG) #define hg_scanner_300 lsc_scanner_300 #endif class hg_scanner_300 : public hg_scanner { protected: virtual int on_scanner_closing(bool force) override; virtual void thread_handle_usb_read(void) override; virtual void image_process(std::shared_ptr>& buff) override; virtual int on_color_mode_changed(int& color_mode); // COLOR_MODE_xxx virtual int on_paper_changed(int& paper); // PAPER_xxx virtual int on_paper_check_changed(bool& check); virtual int on_resolution_changed(int& dpi); virtual int on_ultrasonic_check_changed(bool& check); virtual int on_staple_check_changed(bool& check); virtual int on_skew_check_changed(bool& check); virtual int on_skew_check_level_changed(int& check); public: hg_scanner_300(const char* dev_name,int pid, usb_io* io); ~hg_scanner_300(); public: virtual int start(void)override; virtual int stop(void)override; void init_setting_map(int* setting_map, int count)override; private: int agreement(); int agreement(TwSS tw,int align); int initdevice(); int writeusb(USBCB &usb); int readusb(USBCB &usb); int pop_image(void); int get_scanner_status(USBCB &usb); int get_img_data(std::shared_ptr> &imagedata); int writedown_device_configuration(bool type =false,HGSCANCONF_G400 *d = NULL); void writedown_image_configuration(void); void printf_devconfig(HGSCANCONF_G400 *d = NULL); virtual std::string get_firmware_version() override; virtual std::string get_serial_num(void) override; private: int pid_; std::vector savestatus_; HGSCANCONF_G400 dsp_config; Device::PaperSize papersize; public: virtual int set_leaflet_scan(void);//单张扫描 virtual int get_abuot_info(void);//获取软件关于信息 virtual int restore_default_setting(void);//恢复默认设置 virtual int set_final_image_format(void); // 设置图像处理最终输出(final())的图像数据格式 virtual int get_compression_format(void);//获取支持的压缩格式 virtual int set_compression_format(void);//设置图像数据最终输出的压缩格式 virtual int set_auto_color_type(void);// 设置自动匹配颜色模式 virtual int get_device_code(void);//获取设备编码 virtual int get_sleep_time(SANE_Power* setime = NULL);//获取功耗模式(休眠) virtual int set_sleep_time(SANE_Power* setime);//设置功耗模式(休眠) virtual int get_dogear_distance(void);//获取折角检测最小距离阈值 virtual int set_dogear_distance(void);// 设置折角检测最小距离阈值 virtual int get_scanner_paperon(SANE_Bool* paperon=NULL);//获取设备有无纸张 virtual int set_scan_when_paper_on(void);//获取是否为检测到进纸盘上有纸即开始扫描 virtual int get_scan_when_paper_on(void);//设置是否为检测到进纸盘上有纸即开始扫描 virtual int get_scan_with_hole(void);// 获取是否为带孔扫描 virtual int set_scan_with_hole(void);// 设置是否为带孔扫描 virtual int get_scan_is_sleep(void);//获取设备是否休眠当中 };