diff --git a/hgdriver/hgdev/common_setting.h b/hgdriver/hgdev/common_setting.h index 438be60..5c0cfc6 100644 --- a/hgdriver/hgdev/common_setting.h +++ b/hgdriver/hgdev/common_setting.h @@ -883,12 +883,13 @@ namespace setting3399 SR_SET_TOKEN, SR_GET_TOKEN_LENGHT, SR_DECODE_TOKEN, + SR_CLEAN_PAPER_ROAD, //清理纸道 SR_GET_CUO_ERROR = 0x50, SR_GET_DOU_ERROR, SR_GET_JAM_ERROR, - SR_GET_SCANN_NUM, - SR_CLR_ROLLER_NUM, - SR_GET_ROLLER_NUM, + SR_GET_SCANN_NUM, + SR_CLR_ROLLER_NUM, + SR_GET_ROLLER_NUM, //获取历史滚轴张数 SR_CLR_SCANN_NUM, SR_GET_H_200_RATIO, //非敦南cis需返回false SR_SET_H_200_RATIO, diff --git a/hgdriver/hgdev/hg_scanner.cpp b/hgdriver/hgdev/hg_scanner.cpp index a0b5407..3197f31 100644 --- a/hgdriver/hgdev/hg_scanner.cpp +++ b/hgdriver/hgdev/hg_scanner.cpp @@ -3336,6 +3336,17 @@ int hg_scanner::device_io_control(unsigned long code, void* data, unsigned* len) string str = (char*)data; return firmware_upgrade(str); } + else if (code == IO_CTRL_CODE_GET_HISTORY_NUM) + { + int num = 0; + int ret = get_history_count(num); + (*(int*)data) = num; + return ret; + } + else if (code == IO_CTRL_CODE_GET_CLEAN_PAPER_ROAD) + { + return clean_paper_road(); + } return SCANNER_ERR_DEVICE_NOT_SUPPORT; } std::string hg_scanner::get_firmware_version(void) @@ -3370,7 +3381,7 @@ int hg_scanner::clear_roller_num(void) { return SCANNER_ERR_DEVICE_NOT_SUPPORT; } -int hg_scanner::get_history_count(void) +int hg_scanner::get_history_count(int &num) { return -2; } @@ -3390,6 +3401,10 @@ int hg_scanner::firmware_upgrade(std::string filename) { return -2; } +int hg_scanner::clean_paper_road() +{ + return -2; +} ////////////////////////////////////////////////////////////////////////////////////////////////////// int hg_scanner::set_leaflet_scan(void) { diff --git a/hgdriver/hgdev/hg_scanner.h b/hgdriver/hgdev/hg_scanner.h index 7699510..fb1ff91 100644 --- a/hgdriver/hgdev/hg_scanner.h +++ b/hgdriver/hgdev/hg_scanner.h @@ -359,38 +359,39 @@ public: 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(SANE_FinalImgFormat* fmt); // 设置图像处理最终输出(final())的图像数据格式 (基类实现) *** - virtual int get_compression_format(void);//获取支持的压缩格式 功能不支持 - virtual int clear_roller_num(void); // 清除滚轴计数 - virtual int set_compression_format(void);//设置图像数据最终输出的压缩格式 - virtual int set_auto_color_type(void);// 设置自动匹配颜色模式 (基类实现) *** + virtual int set_leaflet_scan(void); //单张扫描 + virtual int get_abuot_info(void); //获取软件关于信息 (基类实现) + virtual int restore_default_setting(void); //恢复默认设置 (基类实现) + virtual int set_final_image_format(SANE_FinalImgFormat* fmt);//设置图像处理最终输出(final())的图像数据格式 (基类实现) *** + virtual int get_compression_format(void); //获取支持的压缩格式 功能不支持 + virtual int clear_roller_num(void); // 清除滚轴计数 + virtual int set_compression_format(void); //设置图像数据最终输出的压缩格式 + virtual int set_auto_color_type(void); //设置自动匹配颜色模式 (基类实现) *** virtual std::string get_firmware_version(void); virtual std::string get_serial_num(void); virtual std::string get_ip(void); - virtual int get_device_code(void);//获取设备编码 - virtual int get_dogear_distance(void);//获取折角检测最小距离阈值 - virtual int set_dogear_distance(void);// 设置折角检测最小距离阈值 + virtual int get_device_code(void); //获取设备编码 + 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);//获取设备是否休眠当中 - virtual int get_sleep_time(int& getsleepime);//获取功耗模式(休眠) - virtual int set_sleep_time(int sleeptime);//设置功耗模式(休眠) - virtual int get_history_count(void);//获取历史扫描张数 -2:设备不支持该功能;-1:与设备通信失败;其它大于等于0的为正常 - virtual int get_roller_num(void); //获取滚轮张数 -2:设备不支持该功能;-1:与设备通信失败;其它大于等于0的为正常 - virtual int notify_sleep(void);//唤醒设备 - virtual int get_device_log(string &log);//获取设备日志 - virtual int set_devreboot();//设置设备重启 - virtual int set_devshtudown();//设置设备关机 - virtual int set_scan_islock(SANE_Bool set_islock); - virtual int get_scan_islock(SANE_Bool* islock);//获取设备是否锁定 -2:设备不支持该功能;它大于等于0的为正常 - virtual int set_scan_lock_check_val(string check_str);//获取设备是否锁定 -2:设备不支持该功能;它大于等于0的为正常 - virtual int firmware_upgrade(std::string filename); //固件升级 -2:设备不支持该功能;它大于等于0的为正常 + 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); //获取设备是否休眠当中 + virtual int get_sleep_time(int& getsleepime); //获取功耗模式(休眠) + virtual int set_sleep_time(int sleeptime); //设置功耗模式(休眠) + virtual int get_history_count(int &num); //获取历史扫描张数 -2:设备不支持该功能;-1:与设备通信失败;其它大于等于0的为正常 + virtual int get_roller_num(void); //获取滚轮张数 -2:设备不支持该功能;-1:与设备通信失败;其它大于等于0的为正常 + virtual int notify_sleep(void); //唤醒设备 + virtual int get_device_log(string &log); //获取设备日志 + virtual int set_devreboot(); //设置设备重启 + virtual int set_devshtudown(); //设置设备关机 + virtual int set_scan_islock(SANE_Bool set_islock); //设置设备是否锁定 - 2:设备不支持该功能;它大于等于0的为正常 + virtual int get_scan_islock(SANE_Bool* islock); //获取设备是否锁定 -2:设备不支持该功能;它大于等于0的为正常 + virtual int set_scan_lock_check_val(string check_str); //获取设备是否锁定 -2:设备不支持该功能;它大于等于0的为正常 + virtual int firmware_upgrade(std::string filename); //固件升级 -2:设备不支持该功能;它大于等于0的为正常 + virtual int clean_paper_road(); //清理纸道 -2:设备不支持该功能;它大于等于0的为正常 }; #ifdef UOS diff --git a/hgdriver/hgdev/hg_scanner_239.cpp b/hgdriver/hgdev/hg_scanner_239.cpp index 890107c..48df82f 100644 --- a/hgdriver/hgdev/hg_scanner_239.cpp +++ b/hgdriver/hgdev/hg_scanner_239.cpp @@ -1734,9 +1734,10 @@ int hg_scanner_239::notify_sleep() } return ret; } -int hg_scanner_239::get_history_count() +int hg_scanner_239::get_history_count(int &num) { - return -2; + int ret = read_register(setting3399::SR_GET_ROLLER_NUM, &num); + return ret; } int hg_scanner_239::get_device_log(string &logpath) { @@ -1945,7 +1946,7 @@ int hg_scanner_239::firmware_upgrade(std::string filename) return SCANNER_ERR_DEVICE_UPGRADE_FAIL; int to_cnt = 0; - //暂时屏蔽 到这个位置已经能够升级成功了 后面对升级结果做下判断 + // 到这个位置已经能够升级成功了 后面对升级结果做下判断 auto now = std::chrono::steady_clock::now(); while (std::chrono::duration(std::chrono::steady_clock::now() - now).count() < 70) { @@ -1971,4 +1972,11 @@ int hg_scanner_239::firmware_upgrade(std::string filename) this_thread::sleep_for(std::chrono::milliseconds(20)); } return ret; +} + +int hg_scanner_239::clean_paper_road() +{ + int ret = 0, len = 0; + ret = write_register(setting3399::SR_CLEAN_PAPER_ROAD, len); + return ret; } \ No newline at end of file diff --git a/hgdriver/hgdev/hg_scanner_239.h b/hgdriver/hgdev/hg_scanner_239.h index 49f8ab5..bfdb6b2 100644 --- a/hgdriver/hgdev/hg_scanner_239.h +++ b/hgdriver/hgdev/hg_scanner_239.h @@ -122,7 +122,7 @@ public: virtual int get_scan_is_sleep(void);//获取设备是否休眠当中 virtual int notify_sleep(void);//唤醒设备 - virtual int get_history_count(void);//获取历史扫描张数 -2:设备不支持该功能;-1:与设备通信失败;其它大于等于0的为正常 为实现 + virtual int get_history_count(int &num);//获取历史扫描张数 -2:设备不支持该功能;-1:与设备通信失败;其它大于等于0的为正常 为实现 virtual int get_device_log(string &get_device_log);//获取设备日志 virtual int set_devreboot();//设置设备重启 virtual int set_devshtudown();//设置设备关机 @@ -130,5 +130,6 @@ public: virtual int get_scan_islock(SANE_Bool* islock); virtual int set_scan_lock_check_val(string check_str); virtual int firmware_upgrade(std::string filename); + virtual int clean_paper_road(); //清理纸道 -2:设备不支持该功能;它大于等于0的为正常 };