2022-05-03 03:56:07 +00:00
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
// hg_scanner is the base class of kinds of scanners
|
|
|
|
|
//
|
|
|
|
|
// created on 2022-01-30
|
|
|
|
|
//
|
|
|
|
|
#include <memory>
|
|
|
|
|
#include <string>
|
|
|
|
|
#include <vector>
|
|
|
|
|
#include <algorithm>
|
|
|
|
|
|
|
|
|
|
#include "hg_scanner.h"
|
|
|
|
|
#include "../../sdk/hginclude/hg_log.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class hg_scanner_200 : public hg_scanner
|
|
|
|
|
{
|
2022-05-06 05:37:14 +00:00
|
|
|
|
// reading buffers ... (for overlapped IO maybe rewrite the buffer after the timeout)
|
|
|
|
|
typedef struct _usb_block
|
|
|
|
|
{
|
|
|
|
|
USBCB data;
|
|
|
|
|
int len;
|
|
|
|
|
}USBBLOCK;
|
|
|
|
|
const int buf_read_img_len_;
|
|
|
|
|
char *buf_read_img_;
|
|
|
|
|
int io_read_img_;
|
|
|
|
|
|
|
|
|
|
char buf_mini_str_[20];
|
|
|
|
|
|
|
|
|
|
USBBLOCK buf_sleep_;
|
|
|
|
|
USBBLOCK buf_paper_on_;
|
|
|
|
|
USBBLOCK buf_is_sleep_;
|
|
|
|
|
USBBLOCK buf_statu_;
|
|
|
|
|
|
2022-05-03 03:56:07 +00:00
|
|
|
|
void discard_prev(void);
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual int on_scanner_closing(bool force) override;
|
|
|
|
|
virtual void thread_handle_usb_read(void) override;
|
|
|
|
|
virtual void image_process(std::shared_ptr<std::vector<char>>& 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_200(const char* dev_name,int vid, usb_io* io);
|
|
|
|
|
~hg_scanner_200();
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual int start(void)override;
|
|
|
|
|
virtual int stop(void)override;
|
|
|
|
|
void init_setting_map(int* setting_map, int count)override;
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
int initdevice();
|
|
|
|
|
int writeusb(USBCB &usb);
|
|
|
|
|
int pop_image();
|
2022-05-06 05:37:14 +00:00
|
|
|
|
int get_scanner_status(void);
|
2022-05-03 03:56:07 +00:00
|
|
|
|
int get_img_data(unsigned int bytes);
|
|
|
|
|
int writedown_device_configuration(bool type =false,HGSCANCONF_DSP *d = NULL);
|
|
|
|
|
void writedown_image_configuration(void);
|
|
|
|
|
void printf_devconfig(HGSCANCONF_DSP *d = NULL);
|
|
|
|
|
virtual std::string get_firmware_version(void) override;
|
|
|
|
|
virtual std::string get_serial_num(void) override;
|
|
|
|
|
HGSCANCONF_DSP dsp_config_;
|
|
|
|
|
int agreement();
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
int pid_;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual int set_leaflet_scan(void);//单张扫描
|
|
|
|
|
virtual int get_abuot_info(void);//获取软件关于信息
|
|
|
|
|
virtual int restore_default_setting(void);//恢复默认设置
|
|
|
|
|
virtual int set_img_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);//获取设备是否休眠当中
|
|
|
|
|
};
|