code_device/hgdriver/hgdev/hg_scanner_300.h

98 lines
3.6 KiB
C
Raw Normal View History

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 "../wrapper/hg_log.h"
2022-05-03 03:56:07 +00:00
#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
2022-05-03 03:56:07 +00:00
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<tiny_buffer>& buff) ;
2022-05-03 03:56:07 +00:00
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);
virtual int on_get_feedmode(int& feedmode);//获取分纸强度
virtual int on_set_feedmode(int feedmode);//设置分纸强度
2022-05-03 03:56:07 +00:00
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;
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<tiny_buffer> &imagedata);
int writedown_device_configuration(bool type =false,setting_hardware::HGSCANCONF_3288 *d = NULL);
2022-05-03 03:56:07 +00:00
void writedown_image_configuration(void);
void printf_devconfig(setting_hardware::HGSCANCONF_3288 *d = NULL);
2022-05-03 03:56:07 +00:00
virtual std::string get_firmware_version() override;
virtual std::string get_serial_num(void) override;
private:
std::vector<int> savestatus_;
setting_hardware::HGSCANCONF_3288 dsp_config;
2022-05-03 03:56:07 +00:00
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);//获取设备是否休眠当中
virtual int get_device_log(string &log);//获取设备日志
virtual int notify_sleep(void);//唤醒设备
2022-05-03 03:56:07 +00:00
};