code_device/hgdriver/hgdev/hg_scanner_300.h

139 lines
6.8 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 "../wrapper/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 int discard_all_images(void) override;
virtual int get_roller_life(void) override;
protected:
virtual int on_color_mode_changed(int& color_mode) override; //颜色切æ<E280A1>¢
virtual int on_paper_changed(int& paper) override; //纸张大å°<C3A5>设置
virtual int on_paper_check_changed(bool& check) override; //尺寸检�
virtual int on_resolution_changed(int& dpi) override; //分辨率设�
virtual int on_ultrasonic_check_changed(bool& check) override; //设置超声波检�
virtual int on_staple_check_changed(bool& check) override; //设置订书针检�
virtual int on_skew_check_changed(bool& check) override; //设置歪斜检�
virtual int on_skew_check_level_changed(int& check) override; //设置歪斜检测强�
virtual int on_get_feedmode(int& feedmode) override; //获å<C2B7>分纸强度
virtual int on_set_feedmode(int feedmode) override; //设置分纸强度
virtual int on_pic_type(bool& pic)override; //照片模å¼<C3A5>æˆè€…æ‡æœ¬æ¨¡å¼?
virtual int on_pick_paper(bool autostrength)override; //自动分纸强度
virtual int on_pick_paper_threshold(double threshold)override;
virtual int on_is_auto_paper(bool isautopaper)override; //待纸扫æ<C2AB><C3A6>
virtual int on_cis_get_image(bool isautopaper) override; //cis 原å¾èŽ·å<C2B7>
virtual int on_process_double_paper(bool type) override; //å<>Œå¼ å¾åƒ<C3A5>校验
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(bool from_user = false)override;
private:
int set_kernelsnap_ver();
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 get_img_data_7010();
int writedown_device_configuration(bool type =false,setting_hardware::HGSCANCONF_3288 *d = NULL);
void writedown_image_configuration(void);
void printf_devconfig(setting_hardware::HGSCANCONF_3288 *d = NULL);
int get_device_type(bool &type);
int get_devs_distortion_check_val(float& data, int dpi, int dir);//获å<C2B7>设备畸å<C2B8>˜å€?DPI=1ã€?ã€?ï¼?dir = 0,1;
setting3288dsp::HG_JpegCompressInfo frame_info_;
///////////////////////7010专有å<E280B0><C3A5>议,获å<C2B7>校正数æ<C2B0>?/////////////////////
//inx:åº<C3A5>å<EFBFBD>·//
//dpi:1--->200 2--->300 3--->600//
//mode:0 ç<>°åº¦ 1彩色
int get_correction_image(int inx ,int dpi,int mode);
private:
std::vector<int> savestatus_;
setting_hardware::HGSCANCONF_3288 dsp_config;
Device::PaperSize papersize;
bool is_devs_sleep_;
int first_frame_total; //设置的帧�
int last_frame_total; //实际采集的帧�
std::vector<unsigned char> jpgdata_;
int index_;
public:
//////////////åºå®šçš„硬件信æ<C2A1>¯è®¾ç½®æˆèŽ·å<C2B7>//////////////
virtual std::string get_firmware_version(void)override;
virtual std::string get_serial_num(void)override;
virtual std::string get_ip(void)override;
virtual int set_serial_num(string str) override; //设置åº<C3A5>列å<E28094>?
virtual int set_vid_pid(int data) override; //设置vidpid
virtual int get_vid_pid(int& data)override; //获å<C2B7>vidpid
/////////////////æˆ<C3A6>功返åž:SCANNER_ERR_OK /////////////
/////////////////失败返回:IO错误� /////////////
virtual int set_leaflet_scan(void) override; //å<>•å¼ æ‰«æ<C2AB><C3A6>
virtual int set_clear_roller_num(void) override; //清除滚轴计数
virtual int set_clear_history_num(void) override; //清除历å<E280A0>²å¼ æ•° 0303åºä»¶ç‰ˆæœ¬æ‰<C3A6>支æŒ?
virtual int get_device_code(void); //获å<C2B7>设备ç¼ç <C3A7> ä¸<C3A4>支æŒ?
virtual int get_scanner_paperon(SANE_Bool& type) override; //获å<C2B7>设备有无纸张 /*/ type : 0无纸 1有纸 */
virtual int get_scan_is_sleep(SANE_Bool& type) override; //获å<C2B7>设备是å<C2AF>¦ä¼çœ å½“中 /*/ type : 0ä¼çœ  1唤é†çŠ¶æ€?/
virtual int get_sleep_time(int& data) override; //获å<C2B7>功耗模å¼<C3A5>(ä¼çœ ï¼? /*/ data > 0*/
virtual int set_sleep_time(int data) override; //设置功耗模å¼<C3A5>(ä¼çœ ï¼? /*/ data > 0*/
virtual int get_history_scan_count(int& data) override; //获å<C2B7>历å<E280A0>²æ‰«æ<C2AB><C3A6>å¼ æ•° /*/ data > 0*/
virtual int get_roller_num(int& data) override; //获å<C2B7>滚轮张数 /*/ data > 0*/
virtual int set_notify_sleep(void) override; //唤醒设备
virtual int get_device_log(string& log) override; //获å<C2B7>设备日志 /*/ log :储存路径*/
virtual int set_devreboot(int data) override; //设置设备é‡<C3A9>å<EFBFBD>¯
virtual int set_devshtudown() override; //设置设备关机
virtual int set_scan_islock(SANE_Bool type) override; //设置设备是å<C2AF>¦é”<C3A9>定 /*/ type:0解é”<C3A9>ï¼?é”<C3A9>定*/
virtual int get_scan_islock(SANE_Bool& type) override; //获å<C2B7>设备是å<C2AF>¦é”<C3A9>定 /*/ type:0解é”<C3A9>ï¼?é”<C3A9>定*/
virtual int set_scan_lock_check_val(string str) override; //获å<C2B7>设备是å<C2AF>¦é”<C3A9>定 /*/ str:校验ç ?/
virtual int set_firmware_upgrade(std::string str) override; //åºä»¶å<C2B6>‡çº§ /*/ str:æ‡ä»¶å<C2B6><C3A5>è·¯å¾?/
virtual int set_clean_paper_road() override; //清ç<E280A6>†çº¸é<C2B8>
virtual int get_dev_islock_file(int& data) override; //获å<C2B7>设备æ‡ä»¶ /*/ data:0 未上é”<C3A9>,1 上é”<C3A9>ã€?1 未å<C2AA>现é»å<E28098><C3A5>å<EFBFBD>•åˆ—表 -2列表没有信æ<C2A1>¯*/
virtual int set_dev_islock_file(int data) override; //设置设备文件 /*/ data:0 未上é”<C3A9>,1 上é”<C3A9>*
virtual int set_speed_mode(int data) override; //设置速度模å¼<C3A5> /*/ data:40,50,60,70
virtual int get_speed_mode(int& data)override; //获å<C2B7>速度模å¼<C3A5> /*/ data:40,50,60,70
virtual int set_devs_distortion_check_val(float data) override; //设置畸å<C2B8>˜çŸ«æ­£
virtual int get_devs_distortion_check_val(float& data)override;//获å<C2B7>设备畸å<C2B8>˜å€? float to int;
virtual int set_auto_flat(int data)override; //设置自动平场校正
// data:0(ALL) 1(200dpiã€<C3A3>gray) 2(200dpiã€<C3A3>color) 3(300dpiã€<C3A3>gray) 4(300dpiã€<C3A3>color) 5(600dpiã€<C3A3>gray) 6(600dpiã€<C3A3>color)
virtual int set_updata0303(void)override;
virtual int get_devs_cpu(string& cpu); //获å<C2B7>设备内存大å°<C3A5>
virtual int get_devs_disk(string& disk); //获å<C2B7>设备硬ç˜å®¹é‡<C3A9>大å°<C3A5>
};