#pragma once // hg_scanner is the base class of kinds of scanners // // created on 2022-01-30 // #include #include #include #include #include #include "hg_scanner.h" //#ifdef OEM_HANWANG //#define hg_scanner_402 hw_scanner_402 //#elif defined(OEM_LISICHENG) //#define hg_scanner_402 lsc_scanner_402 //#endif class hg_scanner_402 : public hg_scanner { //BlockingQueue>> final_imgs_; // JPG ... // image_data final_imgs_; // JPG .. setting_hardware::HGSCANCONF_3399 dev_conf_; bool rewrite_conf_; bool reset_; int read_register(int addr, int* val); int write_register(int addr, int val); int write_command(int cmd); std::string control_fetch(int addr, int val, int size); std::string get_fpga(void); int clr_roller_num(void); int get_sleep_time(void); int get_scan_mode(void); int get_status(void); bool is_dev_tx(void); bool is_dev_image_process_done(void); bool is_dev_image_keep_last_paper(void); int get_scanned_count(void); int get_image_count(void); int get_front_data_size(void); void init_version(void); int get_device_sleep_stautus(void); int get_device_paperon_stautus(void); int writedown_device_configuration(bool type = false, setting_hardware::HGSCANCONF_3399* dev_conf = NULL); int writedown_image_configuration(void); int pop_first_image(void); int read_one_image_from_usb(SANE_Image_Statu statu = SANE_Image_Statu_OK); void discard_all_images(void); protected: int on_color_mode_changed(int& color_mode) override; virtual int on_paper_changed(int& paper) override; virtual int on_paper_check_changed(bool& check) override; virtual int on_resolution_changed(int& dpi) override; virtual int on_ultrasonic_check_changed(bool& check) override; virtual int on_staple_check_changed(bool& check) override; virtual int on_skew_check_changed(bool& check) override; virtual int on_skew_check_level_changed(int& check) override; virtual int on_get_feedmode(int &feedmode);//获取分纸强度 virtual int on_set_feedmode(int feedmode);//设置分纸强度 virtual void on_device_reconnected(void) override; virtual int on_scanner_closing(bool force) override; virtual void thread_handle_usb_read(void) override; public: hg_scanner_402(const char* dev_name, int pid,usb_io* io); ~hg_scanner_402(); public: virtual int start(void) override; //virtual int get_image_info(IMG_PARAM* ii) override; //virtual int read_image_data(unsigned char* buf, int* len) override; virtual int stop(void) override; virtual int reset(void) override; virtual int device_io_control(unsigned long code, void* data, unsigned* len) override; public: virtual std::string get_firmware_version(void)override; virtual std::string get_serial_num(void)override; virtual std::string get_ip(void)override; /////////////////成功返回:SCANNER_ERR_OK ///////////// /////////////////失败返回:IO错误码 ///////////// virtual int set_leaflet_scan(void) override; //单张扫描 virtual int set_clear_roller_num(void) override; //清除滚轴计数 virtual int get_device_code(void); //获取设备编码 不支持 virtual int get_scanner_paperon(SANE_Bool& type) override; //获取设备有无纸张 /*/ type : 0无纸 1有纸 */ virtual int get_scan_is_sleep(SANE_Bool& type) override; //获取设备是否休眠当中 /*/ type : 0休眠 1唤醒状态*/ virtual int get_sleep_time(int& data) override; //获取功耗模式(休眠) /*/ data > 0*/ virtual int set_sleep_time(int data) override; //设置功耗模式(休眠) /*/ data > 0*/ virtual int get_history_roller_count(int& data) override; //获取历史扫描张数 /*/ data > 0*/ virtual int get_roller_num(int& data) override; //获取滚轮张数 /*/ data > 0*/ virtual int set_notify_sleep(void) override; //唤醒设备 virtual int get_device_log(string& log) override; //获取设备日志 /*/ log :储存路径*/ virtual int set_devreboot() override; //设置设备重启 virtual int set_devshtudown() override; //设置设备关机 virtual int set_scan_islock(SANE_Bool type) override; //设置设备是否锁定 /*/ type:0解锁,1锁定*/ virtual int get_scan_islock(SANE_Bool& type) override; //获取设备是否锁定 /*/ type:0解锁,1锁定*/ virtual int set_scan_lock_check_val(string str) override; //获取设备是否锁定 /*/ str:校验码*/ virtual int set_firmware_upgrade(std::string str) override; //固件升级 /*/ str:文件名路径*/ virtual int set_clean_paper_road() override; //清理纸道 virtual int get_dev_islock_file(int& data) override; //获取设备文件 /*/ data:0 未上锁,1 上锁。-1 未发现黑名单列表 -2列表没有信息*/ virtual int set_dev_islock_file(int data) override; //设置设备文件 /*/ data:0 未上锁,1 上锁*/ };