2022-08-09 07:59:01 +00:00
|
|
|
|
#pragma once
|
2022-05-03 03:56:07 +00:00
|
|
|
|
|
|
|
|
|
// hg_scanner is the base class of kinds of scanners
|
|
|
|
|
//
|
|
|
|
|
// created on 2022-01-30
|
|
|
|
|
//
|
|
|
|
|
#include <memory>
|
|
|
|
|
#include <string>
|
|
|
|
|
#include <vector>
|
|
|
|
|
#include <algorithm>
|
|
|
|
|
#include <stdio.h>
|
2023-03-03 01:52:39 +00:00
|
|
|
|
#include <list>
|
2022-05-03 03:56:07 +00:00
|
|
|
|
#include "hg_scanner.h"
|
2023-04-08 03:33:44 +00:00
|
|
|
|
//#include <vld.h>
|
2022-05-03 03:56:07 +00:00
|
|
|
|
|
2022-11-16 10:20:10 +00:00
|
|
|
|
//#ifdef OEM_HANWANG
|
|
|
|
|
//#define hg_scanner_239 hw_scanner_239
|
|
|
|
|
//#elif defined(OEM_LISICHENG)
|
|
|
|
|
//#define hg_scanner_239 lsc_scanner_239
|
|
|
|
|
//#endif
|
2022-05-17 07:04:55 +00:00
|
|
|
|
|
2022-05-03 03:56:07 +00:00
|
|
|
|
class hg_scanner_239 : public hg_scanner
|
|
|
|
|
{
|
|
|
|
|
//BlockingQueue<std::shared_ptr<std::vector<unsigned char>>> final_imgs_; // JPG ...
|
|
|
|
|
// image_data final_imgs_; // JPG ..
|
2022-07-06 08:19:14 +00:00
|
|
|
|
|
2022-10-18 08:23:22 +00:00
|
|
|
|
setting_hardware::HGSCANCONF_3399 dev_conf_;
|
2022-05-03 03:56:07 +00:00
|
|
|
|
bool rewrite_conf_;
|
|
|
|
|
bool reset_;
|
2022-08-11 09:19:24 +00:00
|
|
|
|
bool is_start_status;
|
2023-03-03 01:52:39 +00:00
|
|
|
|
std::list<int> svdevs_err_;
|
2022-05-03 03:56:07 +00:00
|
|
|
|
|
|
|
|
|
std::string control_fetch(int addr, int val, int size);
|
|
|
|
|
std::string get_fpga(void);
|
2022-11-11 09:59:08 +00:00
|
|
|
|
int get_status(void);
|
|
|
|
|
int get_image_count(void);
|
|
|
|
|
int get_front_data_size(void);
|
|
|
|
|
int read_register(int addr, int* val);
|
|
|
|
|
int write_register(int addr, int val);
|
|
|
|
|
int write_command(int cmd);
|
2022-11-19 10:16:43 +00:00
|
|
|
|
int writedown_device_configuration(bool type = false, setting_hardware::HGSCANCONF_3399* dev_conf = NULL);//false 在start再把type置为true,其他做设置时不发
|
2022-11-11 09:59:08 +00:00
|
|
|
|
int writedown_image_configuration(void);
|
|
|
|
|
int pop_first_image(void);
|
2023-10-31 06:51:14 +00:00
|
|
|
|
int read_one_image_from_usb(SANE_Image_Statu statu = IMG_STATUS_OK);
|
2022-05-03 03:56:07 +00:00
|
|
|
|
bool is_dev_image_process_done(void);
|
|
|
|
|
bool is_dev_image_keep_last_paper(void);
|
2023-04-14 08:31:12 +00:00
|
|
|
|
|
2023-01-05 10:18:38 +00:00
|
|
|
|
void init_version(void);
|
|
|
|
|
void thread_get_dves_image(void);
|
|
|
|
|
void thread_correction(void);
|
2023-08-21 08:09:57 +00:00
|
|
|
|
|
|
|
|
|
int write_control_device_files(std::string file_path,std::string file_str);
|
|
|
|
|
int read_control_device_files(std::string file_path, std::string &file_str);
|
2022-12-28 01:56:54 +00:00
|
|
|
|
protected:
|
|
|
|
|
virtual void on_device_reconnected(void) override;
|
|
|
|
|
virtual int on_scanner_closing(bool force) override;
|
|
|
|
|
virtual void thread_handle_usb_read(void) override;
|
2023-04-14 08:31:12 +00:00
|
|
|
|
|
|
|
|
|
virtual int discard_all_images(void);
|
2022-05-03 03:56:07 +00:00
|
|
|
|
protected:
|
2022-12-23 08:51:10 +00:00
|
|
|
|
virtual int on_color_mode_changed(int& color_mode) override; //颜色切换
|
|
|
|
|
virtual int on_paper_changed(int& paper) override; //纸张大小设置
|
2023-10-31 06:51:14 +00:00
|
|
|
|
virtual int on_paper_check_changed(bool& check) override; //尺寸检<E5AFB8><E6A380>?
|
|
|
|
|
virtual int on_resolution_changed(int& dpi) override; //分辨率设<E78E87><E8AEBE>?
|
|
|
|
|
virtual int on_ultrasonic_check_changed(bool& check) override; //设置超声波检<E6B3A2><E6A380>?
|
|
|
|
|
virtual int on_staple_check_changed(bool& check) override; //设置订书针检<E99288><E6A380>?
|
|
|
|
|
virtual int on_skew_check_changed(bool& check) override; //设置歪斜检<E6969C><E6A380>?
|
|
|
|
|
virtual int on_skew_check_level_changed(int& check) override; //设置歪斜检测强<E6B58B><E5BCBA>?
|
2022-12-23 08:51:10 +00:00
|
|
|
|
virtual int on_get_feedmode(int& feedmode) override; //获取分纸强度
|
|
|
|
|
virtual int on_set_feedmode(int feedmode) override; //设置分纸强度
|
2023-10-31 06:51:14 +00:00
|
|
|
|
virtual int on_pic_type(bool& pic)override; //照片模式或者文本模<E69CAC><E6A8A1>?
|
2022-12-23 08:51:10 +00:00
|
|
|
|
virtual int on_pick_paper(bool autostrength)override; //自动分纸强度
|
|
|
|
|
virtual int on_pick_paper_threshold(double threshold)override;
|
2022-12-28 01:56:54 +00:00
|
|
|
|
virtual int on_is_auto_paper(bool isautopaper)override; //待纸扫描
|
|
|
|
|
virtual int on_cis_get_image(bool isautopaper) override; //cis 原图获取
|
|
|
|
|
|
|
|
|
|
|
2022-05-03 03:56:07 +00:00
|
|
|
|
public:
|
2023-11-01 07:12:11 +00:00
|
|
|
|
hg_scanner_239(const char* dev_name, const char* model, int pid,usb_io* io);
|
2022-05-03 03:56:07 +00:00
|
|
|
|
~hg_scanner_239();
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
//virtual int get_image_info(IMG_PARAM* ii) override;
|
|
|
|
|
//virtual int read_image_data(unsigned char* buf, int* len) override;
|
2023-10-31 06:51:14 +00:00
|
|
|
|
virtual int do_start(void) override;
|
|
|
|
|
virtual int do_stop(void) override;
|
2022-05-03 03:56:07 +00:00
|
|
|
|
virtual int reset(void) override;
|
|
|
|
|
virtual int device_io_control(unsigned long code, void* data, unsigned* len) override;
|
2023-06-13 04:28:20 +00:00
|
|
|
|
virtual int get_roller_life(void) override;
|
2022-06-28 09:16:03 +00:00
|
|
|
|
|
2022-05-03 03:56:07 +00:00
|
|
|
|
public:
|
2023-01-03 03:12:26 +00:00
|
|
|
|
//////////////固定的硬件信息设置或获取//////////////
|
|
|
|
|
virtual std::string get_firmware_version(void)override;
|
|
|
|
|
virtual std::string get_serial_num(void)override;
|
|
|
|
|
virtual std::string get_ip(void)override;
|
2023-02-03 02:30:57 +00:00
|
|
|
|
virtual std::string get_device_model(void);
|
2023-01-03 03:12:26 +00:00
|
|
|
|
|
2023-03-20 04:09:33 +00:00
|
|
|
|
virtual int set_device_model(string str);
|
2023-10-31 06:51:14 +00:00
|
|
|
|
virtual int set_serial_num(string str) override; //设置序列<E5BA8F><E58897>?
|
2023-01-03 03:12:26 +00:00
|
|
|
|
virtual int set_vid_pid(int data) override; //设置vidpid
|
|
|
|
|
virtual int get_vid_pid(int& data)override; //获取vidpid
|
2022-12-22 10:37:53 +00:00
|
|
|
|
|
|
|
|
|
/////////////////成功返回:SCANNER_ERR_OK /////////////
|
2023-10-31 06:51:14 +00:00
|
|
|
|
/////////////////失败返回:IO错误<E99499><E8AFAF>?or SCANNER_ERR_DEVICE_NOT_SUPPORT /////////////
|
2022-12-22 10:37:53 +00:00
|
|
|
|
virtual int set_leaflet_scan(void) override; //单张扫描
|
|
|
|
|
|
|
|
|
|
virtual int set_clear_roller_num(void) override; //清除滚轴计数
|
2023-03-06 03:37:37 +00:00
|
|
|
|
virtual int set_clear_history_num(void) override; //清除历史张数
|
2022-12-22 10:37:53 +00:00
|
|
|
|
|
2023-10-31 06:51:14 +00:00
|
|
|
|
virtual int get_device_code(void); //获取设备编码 不支<E4B88D><E694AF>?
|
2022-12-22 10:37:53 +00:00
|
|
|
|
|
2022-12-23 08:51:10 +00:00
|
|
|
|
virtual int get_scanner_paperon(SANE_Bool& type) override; //获取设备有无纸张 /*/ type : 0无纸 1有纸 */
|
2022-12-22 10:37:53 +00:00
|
|
|
|
|
2023-10-31 06:51:14 +00:00
|
|
|
|
virtual int get_scan_is_sleep(SANE_Bool& type) override; //获取设备是否休眠当中 /*/ type : 0休眠 1唤醒状<E98692><E78AB6>?/
|
|
|
|
|
virtual int get_sleep_time(int& data) override; //获取功耗模式(休眠<E4BC91><E79CA0>? /*/ data > 0*/
|
|
|
|
|
virtual int set_sleep_time(int data) override; //设置功耗模式(休眠<E4BC91><E79CA0>? /*/ data > 0*/
|
2023-03-06 03:37:37 +00:00
|
|
|
|
virtual int get_history_scan_count(int& data) override; //获取历史扫描张数 /*/ data > 0*/
|
2022-12-22 10:37:53 +00:00
|
|
|
|
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 :储存路径*/
|
2023-01-03 08:26:43 +00:00
|
|
|
|
virtual int set_devreboot(int data) override; //设置设备重启
|
2022-12-22 10:37:53 +00:00
|
|
|
|
virtual int set_devshtudown() override; //设置设备关机
|
2023-10-31 06:51:14 +00:00
|
|
|
|
virtual int set_scan_islock(SANE_Bool type) override; //设置设备是否锁定 /*/ type:0解锁<E8A7A3><E99481>?锁定*/
|
|
|
|
|
virtual int get_scan_islock(SANE_Bool& type) override; //获取设备是否锁定 /*/ type:0解锁<E8A7A3><E99481>?锁定*/
|
|
|
|
|
virtual int set_scan_lock_check_val(string str) override; //获取设备是否锁定 /*/ str:校验<E6A0A1><E9AA8C>?/
|
|
|
|
|
virtual int set_firmware_upgrade(std::string str) override; //固件升级 /*/ str:文件名路<E5908D><E8B7AF>?/
|
2022-12-22 10:37:53 +00:00
|
|
|
|
virtual int set_clean_paper_road() override; //清理纸道
|
2023-10-31 06:51:14 +00:00
|
|
|
|
virtual int get_dev_islock_file(int& data) override; //获取设备文件 /*/ data:0 未上锁,1 上锁<E4B88A><E99481>?1 未发现黑名单列表 -2列表没有信息*/
|
2022-12-22 10:37:53 +00:00
|
|
|
|
virtual int set_dev_islock_file(int data) override; //设置设备文件 /*/ data:0 未上锁,1 上锁*/
|
2023-10-31 06:51:14 +00:00
|
|
|
|
virtual int get_scan_mode(bool& type); //获取是否是计数模<E695B0><E6A8A1>? /*/ type : fasle计数模式 true非计<E99D9E><E8AEA1>?*/
|
2022-12-28 01:56:54 +00:00
|
|
|
|
|
|
|
|
|
virtual int set_speed_mode(int data) override; //设置速度模式 /*/ data:100,110,120
|
2022-12-29 10:05:59 +00:00
|
|
|
|
virtual int get_speed_mode(int& data)override; //获取速度模式 /*/ data:100,110,120
|
2023-03-17 14:27:06 +00:00
|
|
|
|
|
2023-10-31 06:51:14 +00:00
|
|
|
|
virtual int set_devs_distortion_check_val(float data) override; //设置畸变矫正<E79FAB><E6ADA3>?
|
|
|
|
|
virtual int get_devs_distortion_check_val(float &data) override; //获取畸变矫正<E79FAB><E6ADA3>?
|
2023-03-17 14:27:06 +00:00
|
|
|
|
|
2023-03-06 03:37:37 +00:00
|
|
|
|
virtual int set_auto_flat(int data); //设置自动平场校正
|
|
|
|
|
// data:0(ALL) 1(200dpi、gray) 2(200dpi、color) 3(300dpi、gray) 4(300dpi、color) 5(600dpi、gray) 6(600dpi、color)
|
|
|
|
|
|
2023-06-16 10:01:28 +00:00
|
|
|
|
virtual int get_motor_board_ver(string &ver);
|
2023-08-21 08:09:57 +00:00
|
|
|
|
|
|
|
|
|
virtual int set_devs_time(string times); //设置设备时间 //3399设备支持
|
|
|
|
|
virtual int get_devs_time(string& times); //获取设备时间 //3399设备支持
|
2022-05-03 03:56:07 +00:00
|
|
|
|
};
|
2022-07-06 08:19:14 +00:00
|
|
|
|
|