code_device/hgdriver/hgdev/common_setting.h

822 lines
23 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_cfg is the base configuration definitions
//
// created on 2022-02-23
//
#include <string>
#include "char_const.h"
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 硬件配置项定义
//
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
typedef struct hg_tag_SIZE
{
long cx;
long cy;
}CSSIZE, * PCSSIZE, * LPCSSIZE;
typedef CSSIZE CSSIZEL;
typedef CSSIZE* PCSSIZEL, * LPCSSIZEL;
#if defined(WIN32) || defined(_WIN64)
#include <Windows.h>
#else
typedef CSSIZE Size;
typedef CSSIZE SIZE;
typedef unsigned long DWORD;
typedef long LONG;
#endif
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 is_textcorrect : 1; // 1 - 照片模式0 - 文本模式。默认值为 0
unsigned int is_fixedpaper : 1; //
unsigned int en_anlogic_key : 1; //
unsigned int en_autosize : 1; //
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;
struct // changed on 2022-07-25
{
unsigned int pageSize : 5;
unsigned int isColor : 1;
unsigned int dpi : 2;
unsigned int doubleFeeded : 1;
unsigned int enableStable : 1;
unsigned int enableLed : 1;
unsigned int enableSizeDetect : 1;
unsigned int lutmode : 1; // 设置文本和照片模式, 0 - 文本1 - 照片。默认值为“0”
unsigned int reversed1 : 4;
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_ALL = 0,
MULTI_COLOR_AND_GRAY,
MULTI_COLOR_AND_BW,
MULTI_GRAY_AND_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,
};
SIZE paper_size(int paper); // unit: mm
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);
//画质
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);
// 双张处理
enum
{
DOUBLE_PAPER_CONTINUE = 0x01, // 继续扫描
DOUBLE_PAPER_SAVE_IMG = 0x02, // 保存图片
};
int double_paper_flag_from_option_value(std::string& opt_val, bool* exact);
std::string double_paper_flag_to_option_value(int flag);
bool is_continue_when_double_paper(int flag);
bool is_save_img_when_double_paper(int flag);
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
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,
CLR_HARDWARE_CACHE = 41,
CHECK_IS_SLEEP = 0x100,
};
//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; /**< 尺寸检测*/
float imageRotateDegree; /**< 旋转 */
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;
bool isuoloadexceptionimage; /**< 是否保留双张出图>*/
uint32_t reserve[1024]; /**< 预留4096字节做协议扩展*/
}SCANCONF ,*LPSCANCONF;
//图像参数设置 -OVER
#pragma pack(pop)