#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_306 hw_scanner_300 //#elif defined(OEM_LISICHENG) //#define hg_scanner_306 lsc_scanner_300 //#endif class hg_scanner_306 : public hg_scanner { protected: virtual int on_scanner_closing(bool force) override; virtual void thread_handle_usb_read(void) override; virtual int discard_all_images(void) override; virtual int get_roller_life(void) override; protected: virtual 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) override; //获取分纸强度 virtual int on_set_feedmode(int feedmode) override; //设置分纸强度 virtual int on_pic_type(bool& pic)override; //照片模式或者文本模式 virtual int on_pick_paper(bool autostrength)override; //自动分纸强度 virtual int on_pick_paper_threshold(double threshold)override; virtual int on_is_auto_paper(bool isautopaper)override; //待纸扫描 virtual int on_cis_get_image(bool isautopaper) override; //cis 原图获取 virtual int on_process_double_paper(bool type) override; //双张图像校验 virtual int on_set_period(int val) override; //PWM占空比 protected: public: hg_scanner_306(const char* dev_name,int pid, usb_io* io); ~hg_scanner_306(); public: virtual int do_start(void) override; virtual int do_stop(void) override; private: int set_kernelsnap_ver(); 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); /************************************************************************/ /* 注意事项1:7010按帧传输数据 */ /* 注意事项2:7010最后一帧为空包,需把最后一帧数据剔除 */ /* 注意事项3:7010最后一帧主要作用是反馈当前纸张问题状态码 error_code */ /************************************************************************/ int get_img_data_7010(); int get_img_data_7010_test(); /*********************获取校正数据***************/ /* inx:序号 */ /* dpi:1--->200dpi 2--->300dpi 3--->600dpi */ /* mode:0 灰度 1彩色 */ /************************************************/ int get_correction_image(int inx, int dpi, int mode); int writedown_device_configuration(bool type =false,setting_hardware::HGSCANCONF_7010 *d = NULL); void writedown_image_configuration(void); void printf_devconfig(setting_hardware::HGSCANCONF_7010 *d = NULL); int get_device_type(bool &type); int get_devs_distortion_check_val(float& data, int dpi, int dir);//获取设备畸变值 DPI=1、2、3; dir = 0,1; setting3288dsp::HG_JpegCompressInfo frame_info_; private: std::vector savestatus_; setting_hardware::HGSCANCONF_7010 dsp_config; Device::PaperSize papersize; bool is_devs_sleep_; int first_frame_total_; //设置的帧数 int last_frame_total_; //实际采集的帧数 int frame_length_ ; int frame_width_ ; int frame_hegiht_ ; std::vector jpgdata_; int index_; public: //////////////固定的硬件信息设置或获取////////////// virtual std::string get_firmware_version(void)override; virtual std::string get_serial_num(void)override; virtual std::string get_ip(void)override; virtual int set_serial_num(string str) override; //设置序列号 virtual int set_vid_pid(int data) override; //设置vidpid virtual int get_vid_pid(int& data)override; //获取vidpid /////////////////成功返回:SCANNER_ERR_OK ///////////// /////////////////失败返回:IO错误码 ///////////// virtual int set_leaflet_scan(void) override; //单张扫描 virtual int set_clear_roller_num(void) override; //清除滚轴计数 virtual int set_clear_history_num(void) override; //清除历史张数 0303固件版本才支持 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_scan_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(int data) 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 上锁* virtual int set_speed_mode(int data) override; //设置速度模式 /*/ data:40,50,60,70 virtual int get_speed_mode(int& data)override; //获取速度模式 /*/ data:40,50,60,70 virtual int set_devs_distortion_check_val(float data) override; //设置畸变矫正 virtual int get_devs_distortion_check_val(float& data)override;//获取设备畸变值 float to int; virtual int set_auto_flat(int data)override; //设置自动平场校正 // data:0(ALL) 1(200dpi、gray) 2(200dpi、color) 3(300dpi、gray) 4(300dpi、color) 5(600dpi、gray) 6(600dpi、color) virtual int set_updata0303(void)override; virtual int get_devs_cpu(int& cpu); //获取设备内存大小(kb) virtual int get_devs_disk(int& disk); //获取设备硬盘容量大小(kb) };