2022-05-03 03:56:07 +00:00
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
// hg_scanner_cfg is the base configuration definitions
|
|
|
|
|
//
|
|
|
|
|
// created on 2022-02-23
|
|
|
|
|
//
|
|
|
|
|
#include <string>
|
|
|
|
|
#include "char_const.h"
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
// 硬件配置项定义
|
|
|
|
|
//
|
|
|
|
|
#define STR_SETTING(enum_val) HUAGAO_SETTING_STR_##enum_val
|
|
|
|
|
#define MAKE_STR_AND_ENUM(enum_val) {HUAGAO_SETTING_STR_##enum_val, enum_val}
|
|
|
|
|
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
|
|
|
|
|
|
|
|
|
|
enum hg_scanner_type
|
|
|
|
|
{
|
|
|
|
|
HG_SCANNER_TYPE_NONE = 0,
|
|
|
|
|
HG_SCANNER_TYPE_G100,
|
|
|
|
|
HG_SCANNER_TYPE_G200,
|
|
|
|
|
HG_SCANNER_TYPE_G300,
|
|
|
|
|
HG_SCANNER_TYPE_G400,
|
|
|
|
|
HG_SCANNER_TYPE_G139,
|
|
|
|
|
HG_SCANNER_TYPE_G239,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//100 200 3399 协议
|
|
|
|
|
typedef union hg_scanner_config
|
|
|
|
|
{
|
|
|
|
|
unsigned int value;
|
|
|
|
|
struct
|
|
|
|
|
{
|
|
|
|
|
unsigned int paper : 5; // 纸张类型 (每个型号有不同的映射表)
|
|
|
|
|
unsigned int color : 1; // 是否彩色 0 - 黑白, 1 - 彩色
|
|
|
|
|
unsigned int dpi : 2; // DPI (映射表)
|
|
|
|
|
unsigned int ultrasonic_enable : 1; // 是否进行超声波检测(双/多张进纸检测)
|
|
|
|
|
unsigned int staple_enbale : 1; // 是否进行钉书钉检测
|
|
|
|
|
unsigned int screw_detect_enable : 1; // 是否歪斜检测
|
|
|
|
|
unsigned int screw_detect_level : 3; // 歪斜检测水平
|
|
|
|
|
unsigned int iscorrect_mod : 1; // 是否自动校正
|
|
|
|
|
unsigned int is_autopaper : 1; // 是否自动进纸
|
|
|
|
|
unsigned int reserved1 : 4; // 保留
|
|
|
|
|
unsigned int pc_correct : 1; // 是否在PC端校正
|
|
|
|
|
unsigned int enable_sizecheck : 1; // 是否进行尺寸检测
|
|
|
|
|
unsigned int enabledsp_cache : 1; // 是否在片上缓存
|
|
|
|
|
unsigned int sizeerror_errorratio : 9; // 幅面检测
|
|
|
|
|
}g200params;
|
|
|
|
|
}HGSCANCONF;
|
|
|
|
|
|
|
|
|
|
//300 400
|
|
|
|
|
typedef union hg_scanner_config_dsp
|
|
|
|
|
{
|
|
|
|
|
unsigned int value;
|
|
|
|
|
struct
|
|
|
|
|
{
|
|
|
|
|
unsigned int paper : 5;
|
|
|
|
|
unsigned int color : 1;
|
|
|
|
|
unsigned int dpi : 2;
|
|
|
|
|
unsigned int double_feed_enbale : 1;
|
|
|
|
|
unsigned int stable_enbale : 1;
|
|
|
|
|
unsigned int screw_detect_enable : 1;
|
|
|
|
|
unsigned int screw_detect_level : 3;
|
|
|
|
|
unsigned int unused_one : 6;
|
|
|
|
|
unsigned int pc_correct : 1;
|
|
|
|
|
unsigned int enable_sizecheck : 1;
|
|
|
|
|
unsigned int unused_two : 10;
|
|
|
|
|
}params;
|
|
|
|
|
}HGSCANCONF_DSP;
|
|
|
|
|
|
|
|
|
|
typedef union hg_scanner_config_G400
|
|
|
|
|
{
|
|
|
|
|
unsigned int value;
|
|
|
|
|
struct
|
|
|
|
|
{
|
|
|
|
|
unsigned int pageSize : 5;
|
|
|
|
|
unsigned int isColor : 1;
|
|
|
|
|
unsigned int dpi : 2;
|
|
|
|
|
unsigned int doubleFeeded : 1;
|
|
|
|
|
unsigned int enableUV : 1;
|
|
|
|
|
unsigned int enableLed : 1;
|
|
|
|
|
unsigned int sizedetece : 1;
|
|
|
|
|
unsigned int reversed1 : 5;
|
|
|
|
|
unsigned int isCorrect : 1;
|
|
|
|
|
unsigned int dstHeight : 8;
|
|
|
|
|
unsigned int reversed2 : 6;
|
|
|
|
|
}params;
|
|
|
|
|
}HGSCANCONF_G400;
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
// 设置项字符串定义
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
// int match_best_xxx(std::string& val, bool* exact) 函数簇原型说明
|
|
|
|
|
//
|
|
|
|
|
// Function: 匹配最接近的字符串,并返回对应的枚举值
|
|
|
|
|
//
|
|
|
|
|
// Parameter: val - [in] 用户传入的设置参数字符串
|
|
|
|
|
// [out] 如果传入的参数不能精确匹配固定值,则修改为最接近的值或默认值
|
|
|
|
|
//
|
|
|
|
|
// exact - [out] 如果val与固定选项精确匹配, 则返回true;
|
|
|
|
|
// 否则返回false,并在val中返回精确的选项值
|
|
|
|
|
//
|
|
|
|
|
// Return: 匹配字符串值的枚举值
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// 注意:下列所有文本定义,必须与设备JSON配置文件中的相关内容保持一致,否则将导致设备参数设置不正确,行为不可控!!!
|
|
|
|
|
//
|
|
|
|
|
// 颜色模式 选项
|
|
|
|
|
//#define HUAGAO_SETTING_STR_COLOR_MODE_BLACK_WHITE "黑白"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_COLOR_MODE_256_GRAY "256级灰度"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_COLOR_MODE_24_BITS "24位彩色"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_COLOR_MODE_AUTO_MATCH "颜色自动识别"
|
|
|
|
|
enum
|
|
|
|
|
{
|
|
|
|
|
COLOR_MODE_BLACK_WHITE = 0,
|
|
|
|
|
COLOR_MODE_256_GRAY,
|
|
|
|
|
COLOR_MODE_24_BITS,
|
|
|
|
|
COLOR_MODE_AUTO_MATCH,
|
|
|
|
|
};
|
|
|
|
|
int match_best_color_mode(std::string& val, bool* exact);
|
|
|
|
|
std::string color_mode_string(int clr_mode);
|
|
|
|
|
|
|
|
|
|
//#define HUAGAO_SETTING_STR_MULTI_OUT_NOT "不选择输出模式"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_MULTI_OUT_ALL "彩色+灰度+黑白"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_MULTI_COLOR_ADN_GRAY "彩色+灰度"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_MULTI_COLOR_ADN_BW "彩色+黑白"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_MULTI_GRAY_ADN_BW "灰度+黑白"
|
|
|
|
|
enum
|
|
|
|
|
{
|
|
|
|
|
MULTI_OUT_NOT = 0,
|
|
|
|
|
MULTI_OUT_ALL,
|
|
|
|
|
MULTI_COLOR_ADN_GRAY,
|
|
|
|
|
MULTI_COLOR_ADN_BW,
|
|
|
|
|
MULTI_GRAY_ADN_BW
|
|
|
|
|
};
|
|
|
|
|
int match_best_multi_out(std::string& val, bool* exact);
|
|
|
|
|
std::string multi_out_string(int clr_mode);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 除色 选项
|
|
|
|
|
//#define HUAGAO_SETTING_STR_RID_COLOR_NONE "不除色"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_RID_COLOR_RID_RED "除红色"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_RID_COLOR_RID_GREEN "除绿色"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_RID_COLOR_RID_BLUE "除蓝色"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_RID_COLOR_ENHANCE_RED "红色增强"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_RID_COLOR_ENHANCE_GREEN "绿色增强"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_RID_COLOR_ENHANCE_BLUE "蓝色增强"
|
|
|
|
|
enum
|
|
|
|
|
{
|
|
|
|
|
RID_COLOR_NONE = 0,
|
|
|
|
|
RID_COLOR_RID_RED,
|
|
|
|
|
RID_COLOR_RID_GREEN,
|
|
|
|
|
RID_COLOR_RID_BLUE,
|
|
|
|
|
RID_COLOR_ENHANCE_RED,
|
|
|
|
|
RID_COLOR_ENHANCE_GREEN,
|
|
|
|
|
RID_COLOR_ENHANCE_BLUE,
|
|
|
|
|
};
|
|
|
|
|
int match_best_rid_color(std::string& val, bool* exact);
|
|
|
|
|
std::string rid_color_string(int rid_color);
|
|
|
|
|
|
|
|
|
|
// 纸张 选项
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAPER_A3 "A3"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAPER_A4 "A4"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAPER_A5 "A5"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAPER_A6 "A6"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAPER_B4 "B4"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAPER_B5 "B5"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAPER_B6 "B6"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAPER_8K "8开"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAPER_16K "16开"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAPER_LETTER "Letter"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAPER_A4_LATERAL "A4横向"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAPER_A5_LATERAL "A5横向"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAPER_A6_LATERAL "A6横向"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAPER_B5_LATERAL "B5横向"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAPER_B6_LATERAL "B6横向"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAPER_16K_LATERAL "16开横向"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAPER_LETTER_LATERAL "Letter横向"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAPER_DOUBLE_LETTER "Double Letter"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAPER_LEGAL "LEGAL"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAPER_AUTO_MATCH "匹配原始尺寸"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAPER_MAX_SIZE "最大扫描尺寸"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAPER_MAX_SIZE_CLIP "最大扫描尺寸自动裁切"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAPER_TRIGEMINY "三联试卷"
|
|
|
|
|
enum
|
|
|
|
|
{
|
|
|
|
|
PAPER_A3 = 0,
|
|
|
|
|
PAPER_A4,
|
|
|
|
|
PAPER_A5,
|
|
|
|
|
PAPER_A6,
|
|
|
|
|
PAPER_B4,
|
|
|
|
|
PAPER_B5,
|
|
|
|
|
PAPER_B6,
|
|
|
|
|
PAPER_8K,
|
|
|
|
|
PAPER_16K,
|
|
|
|
|
PAPER_LETTER,
|
|
|
|
|
PAPER_A4_LATERAL,
|
|
|
|
|
PAPER_A5_LATERAL,
|
|
|
|
|
PAPER_A6_LATERAL,
|
|
|
|
|
PAPER_B5_LATERAL,
|
|
|
|
|
PAPER_B6_LATERAL,
|
|
|
|
|
PAPER_16K_LATERAL,
|
|
|
|
|
PAPER_LETTER_LATERAL,
|
|
|
|
|
PAPER_DOUBLE_LETTER,
|
|
|
|
|
PAPER_LEGAL,
|
|
|
|
|
PAPER_AUTO_MATCH,
|
|
|
|
|
PAPER_MAX_SIZE,
|
|
|
|
|
PAPER_MAX_SIZE_CLIP,
|
|
|
|
|
PAPER_TRIGEMINY,
|
|
|
|
|
};
|
|
|
|
|
int match_best_paper(std::string& val, bool* exact);
|
|
|
|
|
std::string paper_string(int paper);
|
|
|
|
|
bool is_lateral(int paper);
|
|
|
|
|
|
|
|
|
|
// 页面扫描模式 选项
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAGE_SINGLE "单面"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAGE_DOUBLE "双面"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAGE_OMIT_EMPTY "跳过空白页(通用)"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAGE_OMIT_EMPTY_RECEIPT "跳过空白页(发票纸)"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PAGE_FOLIO "对折"
|
|
|
|
|
enum {
|
|
|
|
|
PAGE_SINGLE = 0,
|
|
|
|
|
PAGE_DOUBLE,
|
|
|
|
|
PAGE_OMIT_EMPTY,
|
|
|
|
|
PAGE_OMIT_EMPTY_RECEIPT,
|
|
|
|
|
PAGE_FOLIO,
|
|
|
|
|
};
|
|
|
|
|
int match_best_page(std::string& val, bool* exact);
|
|
|
|
|
std::string page_string(int page);
|
|
|
|
|
|
|
|
|
|
// 锐化 选项
|
|
|
|
|
//#define HUAGAO_SETTING_STR_SHARPEN_NONE "无"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_SHARPEN_SHARPEN "锐化"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_SHARPEN_SHARPEN_MORE "进一步锐化"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_SHARPEN_HAZY "模糊"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_SHARPEN_HAZY_MORE "进一步模糊"
|
|
|
|
|
enum
|
|
|
|
|
{
|
|
|
|
|
SHARPEN_NONE = 0,
|
|
|
|
|
SHARPEN_SHARPEN,
|
|
|
|
|
SHARPEN_SHARPEN_MORE,
|
|
|
|
|
SHARPEN_HAZY,
|
|
|
|
|
SHARPEN_HAZY_MORE,
|
|
|
|
|
};
|
|
|
|
|
int match_best_sharpen(std::string& val, bool* exact);
|
|
|
|
|
std::string sharpen_string(int sharpen);
|
|
|
|
|
|
|
|
|
|
//背景填充方式 选项
|
|
|
|
|
//#define HUAGAO_SETTING_STR_FILL_BKG_CONVEX_POLYGON "凸多边形"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_FILL_BKG_CONCAVE_POLYGON "凹多边形"
|
|
|
|
|
enum
|
|
|
|
|
{
|
|
|
|
|
FILL_BKG_CONVEX_POLYGON = 0,
|
|
|
|
|
FILL_BKG_CONCAVE_POLYGON,
|
|
|
|
|
};
|
|
|
|
|
int match_best_fill_background(std::string& val, bool* exact);
|
|
|
|
|
std::string fill_background_string(int fill);
|
|
|
|
|
|
|
|
|
|
// 扫描数量 选项
|
|
|
|
|
//#define HUAGAO_SETTING_STR_SCAN_MODE_CONTINUOUS "连续扫描"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_SCAN_MODE_GIVEN_COUNT "扫描指定张数"
|
|
|
|
|
enum
|
|
|
|
|
{
|
|
|
|
|
SCAN_MODE_CONTINUOUS = 0,
|
|
|
|
|
SCAN_MODE_GIVEN_COUNT,
|
|
|
|
|
};
|
|
|
|
|
int match_best_scan_mode(std::string& val, bool* exact);
|
|
|
|
|
std::string scan_mode_string(int mode);
|
|
|
|
|
|
|
|
|
|
// 文稿方向 选项
|
|
|
|
|
//#define HUAGAO_SETTING_STR_TEXT_DIRECTION_0 "0°"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_TEXT_DIRECTION_90 "90°"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_TEXT_DIRECTION_180 "180°"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_TEXT_DIRECTION_270 "-90°"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_TEXT_DIRECTION_AUTO "自动文本方向识别°"
|
|
|
|
|
enum
|
|
|
|
|
{
|
|
|
|
|
TEXT_DIRECTION_0 = 0,
|
|
|
|
|
TEXT_DIRECTION_90,
|
|
|
|
|
TEXT_DIRECTION_180,
|
|
|
|
|
TEXT_DIRECTION_270,
|
|
|
|
|
TEXT_DIRECTION_AUTO,
|
|
|
|
|
};
|
|
|
|
|
int match_best_text_direction(std::string& val, bool* exact);
|
|
|
|
|
std::string text_direction_string(int text_dir);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PERMAEATE_WEAKER "较弱"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PERMAEATE_WEAK "弱"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PERMAEATE_ORDINARY "一般"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PERMAEATE_STRONG "强"
|
|
|
|
|
//#define HUAGAO_SETTING_STR_PERMAEATE_STRONGER "较强"
|
|
|
|
|
enum
|
|
|
|
|
{
|
|
|
|
|
PERMAEATE_WEAKER = 0,
|
|
|
|
|
PERMAEATE_WEAK,
|
|
|
|
|
PERMAEATE_ORDINARY,
|
|
|
|
|
PERMAEATE_STRONG,
|
|
|
|
|
PERMAEATE_STRONGER,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
int match_best_permaeate_lv(std::string& val, bool* exact);
|
|
|
|
|
std::string is_permaeate_string(int text_dir);
|
|
|
|
|
|
2022-05-09 07:02:00 +00:00
|
|
|
|
//画质
|
|
|
|
|
enum
|
|
|
|
|
{
|
|
|
|
|
IMG_NONE = -1,
|
|
|
|
|
IMG_SPEED ,
|
|
|
|
|
IMG_QUALITY,
|
|
|
|
|
};
|
|
|
|
|
int match_best_img_quality(std::string& val, bool* exact);
|
|
|
|
|
std::string is_img_quality(int is_quakuty);
|
2022-05-03 03:56:07 +00:00
|
|
|
|
|
|
|
|
|
typedef union _img_proc_fixed_param
|
|
|
|
|
{
|
|
|
|
|
unsigned long long value;
|
|
|
|
|
struct
|
|
|
|
|
{
|
|
|
|
|
unsigned long long rid_red : 1; // 多流输出除红
|
|
|
|
|
unsigned long long rid_answer_red : 1; // 答题卡除红
|
|
|
|
|
unsigned long long erase_bakground : 1; // 背景移除
|
|
|
|
|
unsigned long long noise_optimize : 1; // 噪点优化
|
|
|
|
|
unsigned long long exchange : 1; // 交换正反面
|
|
|
|
|
unsigned long long split : 1; // 图像拆分
|
|
|
|
|
unsigned long long rid_hole : 1; // 穿孔移除
|
|
|
|
|
unsigned long long dark_sample : 1; // 深色样张
|
|
|
|
|
|
|
|
|
|
unsigned long long rotate_back_180 : 1; // 背面旋转180度
|
|
|
|
|
unsigned long long fractate_check : 1; // 折角检测
|
|
|
|
|
unsigned long long is_permeate : 1; // 防止渗透
|
|
|
|
|
unsigned long long remove_morr : 1; // 去除摩尔纹
|
|
|
|
|
unsigned long long error_extention : 1; // 错误扩散
|
|
|
|
|
unsigned long long remove_txtture : 1; // 去网纹
|
|
|
|
|
unsigned long long fill_background : 2; // 背景填充方式
|
|
|
|
|
|
|
|
|
|
unsigned long long is_permeate_lv_ : 3; // 渗透等级 1 - 5
|
|
|
|
|
unsigned long long multi_out : 3; // 多流输出
|
|
|
|
|
unsigned long long erase_black_frame: 1; // 消除黑框
|
|
|
|
|
unsigned long long automatic_skew : 1; // 自动纠偏
|
|
|
|
|
|
|
|
|
|
unsigned long long rid_color : 3; // 除色
|
|
|
|
|
unsigned long long color_mode : 3; // 颜色模式
|
|
|
|
|
unsigned long long page : 3; // 页面模式
|
|
|
|
|
|
|
|
|
|
unsigned long long paper : 8; // 纸张类型
|
|
|
|
|
|
|
|
|
|
unsigned long long sharpen : 4; // 锐化模式
|
|
|
|
|
unsigned long long text_direction : 4; // 文稿方向
|
|
|
|
|
|
|
|
|
|
unsigned long long reserved2 : 14; // 保留
|
|
|
|
|
}bits;
|
|
|
|
|
}IMGPRCFIXPARAM;
|
|
|
|
|
|
|
|
|
|
// 设置项字符串定义 - OVER
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
// 状态信息描述符
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
// 状态信息描述符 - OVER
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////图像参数及设备协议///////////////////////////////////////////////////////
|
|
|
|
|
// #ifndef uint8_t
|
|
|
|
|
// #define uint8_t unsigned char
|
|
|
|
|
// #endif
|
|
|
|
|
// #ifndef uint32_t
|
|
|
|
|
// #define uint32_t unsigned int
|
|
|
|
|
// #endif
|
|
|
|
|
|
|
|
|
|
//DSP设备USB读写协议结构
|
|
|
|
|
//
|
|
|
|
|
typedef struct tag_USBCB {
|
|
|
|
|
unsigned int u32_CMD;
|
|
|
|
|
unsigned int u32_Data;
|
|
|
|
|
unsigned int u32_Count;
|
|
|
|
|
}USBCB, * PUSBCB;
|
|
|
|
|
|
|
|
|
|
//DSP设备USB读写协议结构 - OVER
|
|
|
|
|
|
|
|
|
|
typedef struct hg_tag_SIZE
|
|
|
|
|
{
|
|
|
|
|
long cx;
|
|
|
|
|
long cy;
|
|
|
|
|
}CSSIZE, *PCSSIZE, *LPCSSIZE;
|
|
|
|
|
|
|
|
|
|
typedef CSSIZE CSSIZEL;
|
|
|
|
|
typedef CSSIZE *PCSSIZEL, *LPCSSIZEL;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
enum PaperAlign :unsigned char {
|
|
|
|
|
Rot0 = 0,
|
|
|
|
|
Rot270 = 3,
|
|
|
|
|
AutoTextOrientation = 5
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum LowPowerMode :unsigned int {
|
|
|
|
|
Min_None = 0,
|
|
|
|
|
Min_5,
|
|
|
|
|
Min_10,
|
|
|
|
|
Min_20,
|
|
|
|
|
Min_30,
|
|
|
|
|
Min_60,
|
|
|
|
|
Min_120,
|
|
|
|
|
Min_240
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//纸张类型
|
|
|
|
|
//
|
|
|
|
|
enum TwSS : unsigned short
|
|
|
|
|
{
|
|
|
|
|
None = 0,
|
|
|
|
|
A4Letter = 1,
|
|
|
|
|
A4 = 1,
|
|
|
|
|
B5Letter = 2,
|
|
|
|
|
JISB5 = 2,
|
|
|
|
|
B5 = 2,
|
|
|
|
|
USLetter = 3,
|
|
|
|
|
USLegal = 4,
|
|
|
|
|
A5 = 5,
|
|
|
|
|
B4 = 6,
|
|
|
|
|
ISOB4 = 6,
|
|
|
|
|
B6 = 7,
|
|
|
|
|
ISOB6 = 7,
|
|
|
|
|
USLedger = 9,
|
|
|
|
|
USExecutive = 10,
|
|
|
|
|
A3 = 11,
|
|
|
|
|
B3 = 12,
|
|
|
|
|
ISOB3 = 12,
|
|
|
|
|
A6 = 13,
|
|
|
|
|
C4 = 14,
|
|
|
|
|
C5 = 15,
|
|
|
|
|
C6 = 16,
|
|
|
|
|
_4A0 = 17,
|
|
|
|
|
_2A0 = 18,
|
|
|
|
|
A0 = 19,
|
|
|
|
|
A1 = 20,
|
|
|
|
|
A2 = 21,
|
|
|
|
|
A7 = 22,
|
|
|
|
|
A8 = 23,
|
|
|
|
|
A9 = 24,
|
|
|
|
|
A10 = 25,
|
|
|
|
|
ISOB0 = 26,
|
|
|
|
|
ISOB1 = 27,
|
|
|
|
|
ISOB2 = 28,
|
|
|
|
|
ISOB5 = 29,
|
|
|
|
|
ISOB7 = 30,
|
|
|
|
|
ISOB8 = 31,
|
|
|
|
|
ISOB9 = 32,
|
|
|
|
|
ISOB10 = 33,
|
|
|
|
|
JISB0 = 34,
|
|
|
|
|
JISB1 = 35,
|
|
|
|
|
JISB2 = 36,
|
|
|
|
|
JISB3 = 37,
|
|
|
|
|
JISB4 = 38,
|
|
|
|
|
JISB6 = 39,
|
|
|
|
|
JISB7 = 40,
|
|
|
|
|
JISB8 = 41,
|
|
|
|
|
JISB9 = 42,
|
|
|
|
|
JISB10 = 43,
|
|
|
|
|
C0 = 44,
|
|
|
|
|
C1 = 45,
|
|
|
|
|
C2 = 46,
|
|
|
|
|
C3 = 47,
|
|
|
|
|
C7 = 48,
|
|
|
|
|
C8 = 49,
|
|
|
|
|
C9 = 50,
|
|
|
|
|
C10 = 51,
|
|
|
|
|
USStatement = 52,
|
|
|
|
|
BusinessCard = 53,
|
|
|
|
|
MaxSize = 54,
|
|
|
|
|
K8 = 0x81,
|
|
|
|
|
K16 = 0x82,
|
|
|
|
|
Trigeminy = 0x83,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//纸张类型 - OVER
|
|
|
|
|
|
|
|
|
|
enum ScannerSerial
|
|
|
|
|
{
|
|
|
|
|
G100Serial,
|
|
|
|
|
G200Serial,
|
|
|
|
|
G300Serial,
|
|
|
|
|
G400Serial,
|
|
|
|
|
G10039Serial,
|
|
|
|
|
G20039Serial,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//设备状态
|
|
|
|
|
//
|
|
|
|
|
typedef enum tagUsbSupported {
|
|
|
|
|
//停止扫描
|
|
|
|
|
SCAN_STOP = -2,
|
|
|
|
|
//异常
|
|
|
|
|
HAVE_ERROR = -1,
|
|
|
|
|
//正常状态
|
|
|
|
|
NORMAL = 0,
|
|
|
|
|
//开盖
|
|
|
|
|
OPEN_COVER = 1,
|
|
|
|
|
// 无纸
|
|
|
|
|
NO_FEED = 2,
|
|
|
|
|
// 搓纸失败
|
|
|
|
|
FEED_IN_ERROR = 4,
|
|
|
|
|
// 卡纸
|
|
|
|
|
PAPER_JAM = 8,
|
|
|
|
|
// 检测到双张
|
|
|
|
|
DETECT_DOUBLE_FEED = 16,
|
|
|
|
|
// 检测到订书钉
|
|
|
|
|
DETECT_STAPLE = 32,
|
|
|
|
|
// 纸张倾斜
|
|
|
|
|
PAPER_SKEW = 64,
|
|
|
|
|
// 自动模式
|
|
|
|
|
AUTO_SCAN_MODE = 65,
|
|
|
|
|
// 手动模式
|
|
|
|
|
MANAUL_SCAN_MODE = 66,
|
|
|
|
|
// 计数模式
|
|
|
|
|
COUNT_MODE = 67,
|
|
|
|
|
// 硬件错误
|
|
|
|
|
HARDWARE_ERROR = 68,
|
|
|
|
|
// FPGA崩溃
|
|
|
|
|
FPGA_ERROR = 68,
|
|
|
|
|
// 开始
|
|
|
|
|
START_SCAN = 69,
|
|
|
|
|
//停止
|
|
|
|
|
STOP_SCAN = 70,
|
|
|
|
|
//有图
|
|
|
|
|
HAVE_IMAGE = 71,
|
|
|
|
|
// 更新扫描参数
|
|
|
|
|
UPDATE_SCAN_PARAMETER = 72,
|
|
|
|
|
// PC繁忙或出错
|
|
|
|
|
PC_SCAN_BUSY_or_ERROR = 73,
|
|
|
|
|
//摺角
|
|
|
|
|
DOG_EAR = 74,
|
|
|
|
|
//幅面检测错误
|
|
|
|
|
SIZE_ERROR = 75,
|
|
|
|
|
//取图超时
|
|
|
|
|
AQUIRE_IMAGE_TIMEOUT = 76,
|
|
|
|
|
//获取图片与扫描张数不匹配
|
|
|
|
|
LOSE_IMAGE = 77,
|
|
|
|
|
//usb读取数据错误
|
|
|
|
|
USB_BULK_ERROR = 78,
|
|
|
|
|
//v4l2取图失败
|
|
|
|
|
V4L2_AQULRE_ERROR = 79,
|
|
|
|
|
//扫描仪内部图片丢失
|
|
|
|
|
V4L2_IMAGE_EMPTY = 80,
|
|
|
|
|
//处于休眠中
|
|
|
|
|
SLEEPING = 81,
|
|
|
|
|
//检测到有折角
|
|
|
|
|
HAVE_DOGEAR = 82,
|
|
|
|
|
//USB 未连接
|
|
|
|
|
USB_DISCONNECTED = 200,
|
|
|
|
|
//用户点击停止
|
|
|
|
|
USER_STOP = 201,
|
|
|
|
|
//自动校正完成
|
|
|
|
|
AUTO_FLAT_FINISHED = 202,
|
|
|
|
|
//usb 已连接
|
|
|
|
|
USB_CONNECTED,
|
|
|
|
|
HAVE_PAPER,
|
|
|
|
|
/*USB链接断开***/
|
|
|
|
|
DEVICE_OFF_LINE,
|
|
|
|
|
} UsbSupported, * PUsbSupported;
|
|
|
|
|
//
|
|
|
|
|
//设备状态 - OVER
|
|
|
|
|
|
|
|
|
|
//G300 G400 纸张类型协议
|
|
|
|
|
//
|
|
|
|
|
enum G400_PaperSize {
|
|
|
|
|
G400_A3 = 0,
|
|
|
|
|
G400_A4,
|
|
|
|
|
G400_A4R,
|
|
|
|
|
G400_A5,
|
|
|
|
|
G400_A5R,
|
|
|
|
|
G400_A6,
|
|
|
|
|
G400_A6R,
|
|
|
|
|
G400_B4,
|
|
|
|
|
G400_B5,
|
|
|
|
|
G400_B5R,
|
|
|
|
|
G400_B6,
|
|
|
|
|
G400_B6R,
|
|
|
|
|
G400_DOUBLELETTER,
|
|
|
|
|
G400_LEGAL,
|
|
|
|
|
G400_LETTER,
|
|
|
|
|
G400_LETTERR,
|
|
|
|
|
G400_LONGLETTER,
|
|
|
|
|
G400_MAXSIZE,
|
|
|
|
|
G400_AUTO
|
|
|
|
|
};
|
|
|
|
|
//
|
|
|
|
|
//G300 G400 纸张类型协议 - OVER
|
|
|
|
|
|
|
|
|
|
//G100 G200 3399设备协议
|
|
|
|
|
//
|
|
|
|
|
enum tagUsbKeyWords
|
|
|
|
|
{
|
|
|
|
|
NO_COMMAND = 0,
|
|
|
|
|
GET_DSP_STATUS = 1,
|
|
|
|
|
GET_IMAGE = 2,
|
|
|
|
|
POP_IMAGE = 3,
|
|
|
|
|
START_COMMAND = 4,
|
|
|
|
|
STOP = 5,
|
|
|
|
|
GET_SCAN_MODE = 6,
|
|
|
|
|
GET_FW_VERSION = 7,
|
|
|
|
|
SEND_STATUS_PC = 8,
|
|
|
|
|
CONFIGURED_DATA = 9,
|
|
|
|
|
SEND_FW = 10,
|
|
|
|
|
GET_CONFIG_DATA = 11,
|
|
|
|
|
GET_SCANN_NUM = 12,
|
|
|
|
|
GET_PAPERFEEDER_STATUS = 13,
|
|
|
|
|
INIT_HARDWARE_SYS = 14,
|
|
|
|
|
GET_PAPER_STATUS = 0x0d,
|
|
|
|
|
SEND_COMPONENTS_GR = 15,
|
|
|
|
|
SEND_COMPONENTS_GB = 16,
|
|
|
|
|
SEND_SCAN_MODE = 17,
|
|
|
|
|
START_FLAT = 18,
|
|
|
|
|
STOP_FLAT = 19,
|
|
|
|
|
SEND_200_COLOR_FLAT_DATA = 20,
|
|
|
|
|
SEND_300_COLOR_FLAT_DATA = 21,
|
|
|
|
|
GET_200_COLOR_FLAT_DATA = 22,
|
|
|
|
|
GET_300_COLOR_FLAT_DATA = 23,
|
|
|
|
|
SEND_200_GRAY_FLAT_DATA = 24,
|
|
|
|
|
SEND_300_GRAY_FLAT_DATA = 25,
|
|
|
|
|
GET_200_GRAY_FLAT_DATA = 26,
|
|
|
|
|
GET_300_GRAY_FLAT_DATA = 27,
|
|
|
|
|
SEND_SERIAL = 28,
|
|
|
|
|
GET_SERIAL = 29,
|
|
|
|
|
GET_ROLLER_NUM = 30,
|
|
|
|
|
CLR_ROLLER_NUM = 31,
|
|
|
|
|
START_COMMAND_COUNT = 38,
|
|
|
|
|
SET_SLEEP_TIME = 39,
|
|
|
|
|
GET_SLEEP_TIME = 40,
|
2022-05-06 05:37:14 +00:00
|
|
|
|
CLR_HARDWARE_CACHE = 41,
|
|
|
|
|
|
|
|
|
|
CHECK_IS_SLEEP = 0x100,
|
2022-05-03 03:56:07 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//G100 G200 3399设备协议 - OVER
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#pragma pack(push)
|
|
|
|
|
#pragma pack(4)
|
|
|
|
|
|
|
|
|
|
//除色和增强
|
|
|
|
|
//
|
|
|
|
|
typedef enum tagColor_Filter
|
|
|
|
|
{
|
|
|
|
|
FILTER_RED,
|
|
|
|
|
FILTER_GREEN,
|
|
|
|
|
FILTER_BLUE,
|
|
|
|
|
FILTER_NONE,
|
|
|
|
|
FILTER_ALL,
|
|
|
|
|
ENHANCE_RED,
|
|
|
|
|
ENHANCE_GREEN,
|
|
|
|
|
ENHANCE_BLUE
|
|
|
|
|
}ColorFilter;
|
|
|
|
|
|
|
|
|
|
//除色和增强 - OVER
|
|
|
|
|
|
|
|
|
|
//填穿孔
|
|
|
|
|
//
|
|
|
|
|
typedef struct tagFillHole
|
|
|
|
|
{
|
|
|
|
|
uint8_t is_fillhole;
|
|
|
|
|
int fillholeratio;
|
|
|
|
|
}FillHole;
|
|
|
|
|
|
|
|
|
|
//填穿孔 - OVER
|
|
|
|
|
|
|
|
|
|
//黑白降噪
|
|
|
|
|
//
|
|
|
|
|
typedef struct tagDetachNoise
|
|
|
|
|
{
|
|
|
|
|
unsigned char is_detachnoise;
|
|
|
|
|
int detachnoise;
|
|
|
|
|
}DetachNoise;
|
|
|
|
|
|
|
|
|
|
//黑白降噪 -OVER
|
|
|
|
|
|
|
|
|
|
//自定义裁切
|
|
|
|
|
//
|
|
|
|
|
typedef struct tagCrop_Rect
|
|
|
|
|
{
|
|
|
|
|
int enable;
|
|
|
|
|
int x; /*****自定义裁切区域左上角x坐标*/
|
|
|
|
|
int y; /*****自定义裁切区域左上角y坐标*/
|
|
|
|
|
int width; /*****自定义裁切区域宽度*******/
|
|
|
|
|
int height; /*****自定义裁切区域高度*******/
|
|
|
|
|
}CropRect;
|
|
|
|
|
|
|
|
|
|
//自定义裁切 -OVER
|
|
|
|
|
|
|
|
|
|
//多留输出
|
|
|
|
|
//
|
|
|
|
|
typedef enum tagMulti_Output {
|
|
|
|
|
Unused = -1,
|
|
|
|
|
All,
|
|
|
|
|
ColorGray,
|
|
|
|
|
ColorBw,
|
|
|
|
|
GrayBw
|
|
|
|
|
}MultiOutput;
|
|
|
|
|
|
|
|
|
|
//多留输出 -OVER
|
|
|
|
|
|
|
|
|
|
//设置设备硬件状态
|
|
|
|
|
//
|
|
|
|
|
typedef struct tagHhardware_Params
|
|
|
|
|
{
|
|
|
|
|
unsigned char capturepixtype;
|
|
|
|
|
unsigned char en_doublefeed;
|
|
|
|
|
unsigned char en_stapledetect;
|
|
|
|
|
unsigned char en_skrewdetect;
|
|
|
|
|
unsigned char skrewdetectlevel;
|
|
|
|
|
LowPowerMode lowpowermode;
|
|
|
|
|
#ifdef UV
|
|
|
|
|
unsigned char en_uv;
|
|
|
|
|
#endif
|
|
|
|
|
}HardwareCaps;
|
|
|
|
|
|
|
|
|
|
//设置设备硬件状态 -OVER
|
|
|
|
|
|
|
|
|
|
//图像参数设置
|
|
|
|
|
//
|
|
|
|
|
typedef struct _scan_conf
|
|
|
|
|
{
|
|
|
|
|
unsigned char papertype; /**< the current paper source ADF or Flatbed*/
|
|
|
|
|
unsigned char paperAlign;
|
|
|
|
|
unsigned char en_sizecheck; /**< 尺寸检测*/
|
2022-05-11 03:27:11 +00:00
|
|
|
|
float imageRotateDegree; /**< 旋转 */
|
2022-05-03 03:56:07 +00:00
|
|
|
|
unsigned char is_duplex; /**< True to use duplex false for simplex, ignored if flatbed*/
|
|
|
|
|
unsigned char en_fold; /**<对折*/
|
|
|
|
|
int pixtype; /**< type of pixels to transfer image as */
|
|
|
|
|
int automaticcolor; /**<顔色自動識別*/
|
|
|
|
|
int automaticcolortype; /**<顔色自動識別后非彩色上傳類型*/
|
|
|
|
|
//ScanRect scanrect;
|
|
|
|
|
float resolution_dst; /**< horizontal resolution */
|
|
|
|
|
float resolution_native;
|
|
|
|
|
float gamma; /**< Gamma */
|
|
|
|
|
float contrast; /**< Contrast */
|
|
|
|
|
float brightness; /**< Brightness */
|
|
|
|
|
float threshold; /**< Threshold */
|
|
|
|
|
unsigned char is_autocontrast; /**< 自动对比度*/
|
|
|
|
|
unsigned char is_autocrop; /**< 自动裁切*/
|
|
|
|
|
unsigned char is_autodiscradblank_normal; /**< 自动丢弃空白页通用*/
|
|
|
|
|
int discardblank_percent; /**<跳过空白页阀值*/
|
|
|
|
|
unsigned char is_autodiscradblank_vince;/**自动丢弃空白页发票*/
|
|
|
|
|
unsigned char is_switchfrontback; /**交换正反面*/
|
|
|
|
|
unsigned char autodescrew; /**< 自动纠偏*/
|
|
|
|
|
unsigned char multi_output_red; /*多流输出*/
|
|
|
|
|
unsigned char hsvcorrect; /**<答题卡除红*/
|
|
|
|
|
unsigned char filter; /**< 除色*/
|
|
|
|
|
unsigned char sharpen;
|
|
|
|
|
unsigned char enhance_color; /**< 颜色增强*/
|
|
|
|
|
unsigned char fillbackground; /**< 填黑框*/
|
|
|
|
|
bool is_convex; /**< 填黑框模式,true为凸多边形填充,false为凹多边形填充,默认true*/
|
|
|
|
|
int noise; /**< 除噪像素,能够消除noise宽度的背景竖条纹干扰,默认40*/
|
|
|
|
|
int indent; /**< 轮廓缩进,裁剪、纠偏或者黑底填充时,对探索到的纸张轮廓进行缩进indent像素,默认5*/
|
|
|
|
|
int AutoCrop_threshold; /**< 自动裁剪二值化阈值,取值范围(0, 255),默认40*/
|
|
|
|
|
unsigned short scannum; /**< 扫描张数*/
|
|
|
|
|
unsigned char is_backrotate180; /**< 背面旋转180*/
|
|
|
|
|
unsigned char is_dogeardetection; /**<折角检测*/
|
|
|
|
|
HardwareCaps hardwarecaps; /**< 硬件扫描参数*/
|
|
|
|
|
FillHole fillhole; /**< 填穿孔*/
|
|
|
|
|
DetachNoise detachnoise; /**< 黑白降噪*/
|
|
|
|
|
unsigned char is_autotext; /**< 自动文本方向识别*/
|
|
|
|
|
bool isfillcolor; /**< 自动裁切颜色填充>*/
|
|
|
|
|
int refuseInflow; /**< 防止渗透>*/
|
|
|
|
|
int colorCorrection; /**< 色彩校正>*/
|
|
|
|
|
int removeMorr; /**< 去除摩尔纹>*/
|
|
|
|
|
int errorExtention; /** < 错误扩散>*/
|
|
|
|
|
int textureRemove; /** < 除网纹>*/
|
|
|
|
|
int splitImage; /** < 图像拆分>*/
|
|
|
|
|
CropRect cropRect; /**< 自定义裁切>*/
|
|
|
|
|
MultiOutput multiOutput; /**< 多流输出>*/
|
|
|
|
|
bool normalCrop; /**< 自动裁切深色样张>*/
|
|
|
|
|
uint32_t dogeardistabce;
|
|
|
|
|
bool fadeback; /**< 背景除色>*/
|
|
|
|
|
int fadebackrange;
|
|
|
|
|
uint32_t reserve[1024]; /**< 预留4096字节做协议扩展*/
|
|
|
|
|
}SCANCONF ,*LPSCANCONF;
|
|
|
|
|
|
|
|
|
|
//图像参数设置 -OVER
|
|
|
|
|
#pragma pack(pop)
|