code_device/hgdriver/hgdev/hg_scanner_300.h

96 lines
3.4 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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"
#include "PaperSize.h"
#ifdef OEM_HANWANG
#define hg_scanner_300 hw_scanner_300
#elif defined(OEM_LISICHENG)
#define hg_scanner_300 lsc_scanner_300
#endif
class hg_scanner_300 : public hg_scanner
{
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_300(const char* dev_name,int pid, usb_io* io);
~hg_scanner_300();
public:
virtual int start(void)override;
virtual int stop(void)override;
void init_setting_map(int* setting_map, int count)override;
private:
int agreement();
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);
int get_img_data(std::shared_ptr<std::vector<char>> &imagedata);
int writedown_device_configuration(bool type =false,HGSCANCONF_G400 *d = NULL);
void writedown_image_configuration(void);
void printf_devconfig(HGSCANCONF_G400 *d = NULL);
virtual std::string get_firmware_version() override;
virtual std::string get_serial_num(void) override;
private:
int pid_;
std::vector<int> savestatus_;
HGSCANCONF_G400 dsp_config;
Device::PaperSize papersize;
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(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);//获取设备是否休眠当中
};