code_app/sdk/oldwebscan/hgscannersdk/HG_SCANNER_API.h

449 lines
17 KiB
C
Raw Normal View History

2022-11-18 01:12:13 +00:00
#ifndef WRRPER_SANE_SCANNER_H
#define WRRPER_SANE_SCANNER_H
/*********************************************************************************************
*202125 *
*: *
* C++C *
*SANE*SANE接口中 *
* *
* GetInstance *
* *
* Open() USB端口 *
* *
* Start() *
* *
* Get_Image_Info() ,pdata *
* *
* Get_ProcedImgQueueEmpty() *
* *
* *
* AquireImage(pdata) , *
* *
* ReleaseInstance() ,Close(), *
* *
**********************************************************************************************/
typedef void* HG_Scanner_Handle;
#ifdef __cplusplus
extern "C" {
#endif
//#ifdef WIN32
// #ifdef DLL_HG_SCHANNER_EXPORTS
// #define DLL_HG_SCHANNER_API extern "C" _declspec(dllexport)
// #else
// #define DLL_HG_SCHANNER_API extern "C" _declspec(dllimport)
// #endif
//#else
// #define DLL_HG_SCHANNER_API
//#endif
#ifdef __linux__
#define DLL_HG_SCHANNER_API
#else
#define DLL_HG_SCHANNER_API extern "C" _declspec(dllexport)
#endif
/* 幅面枚举类型 */
typedef enum
{
HG_None = 0,
HG_A4Letter = 1,
HG_A4 = 1,
HG_B5Letter = 2,
HG_JISB5 = 2,
HG_B5 = 2,
HG_USLetter = 3,
HG_USLegal = 4,
HG_A5 = 5,
HG_B4 = 6,
HG_ISOB4 = 6,
HG_B6 = 7,
HG_ISOB6 = 7,
HG_USLedger = 9,
HG_USExecutive = 10,
HG_A3 = 11,
HG_B3 = 12,
HG_ISOB3 = 12,
HG_A6 = 13,
HG_C4 = 14,
HG_C5 = 15,
HG_C6 = 16,
HG__4A0 = 17,
HG__2A0 = 18,
HG_A0 = 19,
HG_A1 = 20,
HG_A2 = 21,
HG_A7 = 22,
HG_A8 = 23,
HG_A9 = 24,
HG_A10 = 25,
HG_ISOB0 = 26,
HG_ISOB1 = 27,
HG_ISOB2 = 28,
HG_ISOB5 = 29,
HG_ISOB7 = 30,
HG_ISOB8 = 31,
HG_ISOB9 = 32,
HG_ISOB10 = 33,
HG_JISB0 = 34,
HG_JISB1 = 35,
HG_JISB2 = 36,
HG_JISB3 = 37,
HG_JISB4 = 38,
HG_JISB6 = 39,
HG_JISB7 = 40,
HG_JISB8 = 41,
HG_JISB9 = 42,
HG_JISB10 = 43,
HG_C0 = 44,
HG_C1 = 45,
HG_C2 = 46,
HG_C3 = 47,
HG_C7 = 48,
HG_C8 = 49,
HG_C9 = 50,
HG_C10 = 51,
HG_USStatement = 52,
HG_MaxSize = 54
}HG_PAPERTYPE;
/* 除色类型 */
typedef enum hg_tagFilter
{
HG_FILTER_RED, /* 除红色 */
HG_FILTER_GREEN, /* 除绿色 */
HG_FILTER_BLUE, /* 除蓝色 */
HG_FILTER_NONE, /* 无除色 */
HG_FILTER_ALL, /* 全除色 */
HG_ENHANCE_RED, /* 红色增强 */
HG_ENHANCE_GREEN, /* 绿色增强 */
HG_ENHANCE_BLUE /* 蓝色增强 */
}HG_FILTER;
/* 扫描色彩 */
typedef enum
{
HG_BlackWhite, /* 黑白 */
HG_Gray, /* 灰度 */
HG_RGB /* 彩色 */
}HG_COLORMODE;
/* 多流输出类型 */
typedef enum {
HG_Unused = -1, /* 无 */
HG_All, /* 彩色+灰度+黑白 */
HG_ColorGray, /* 彩色+灰度 */
HG_ColorBw, /* 彩色+黑白 */
HG_GrayBw /* 灰度+黑白 */
}HG_MULTIOUTPUT;
/* 页面方向 */
typedef enum {
HG_Rot0 = 0, /* 纵向 */
HG_Rot270 = 3 /* 横向 */
}HG_PAPERALIGN;
/* 滤镜类型 */
typedef enum
{
HG_STNone, /* 无滤镜 */
HG_Sharpen, /* 锐化 */
HG_SharpenMore, /* 锐化加强 */
HG_Blur, /* 模糊 */
HG_BlurMore /* 模糊加强 */
}HG_SHARPENTYPE;
/* 旋转类型 */
typedef enum
{
HG_ROTATE_NONE = 0, /* 无旋转 */
HG_ROTATE_90, /* 旋转逆时针90度 */
HG_ROTATE_180, /* 旋转180度 */
HG_ROTATE_270, /* 旋转顺时针90度 */
HG_AUTOTEXT_DETECT /* 文稿方向识别 */
}HG_ORENTATION;
/* 设备状态 */
typedef enum
{
HG_STATUS_SCANNING = 1, /* 正在扫描 */
HG_STATUS_SCANSTOP, /* 扫描停止 */
HG_STATUS_NO_FEED, /* 无纸 */
HG_STATUS_COVEROPEN, /* 开盖 */
HG_STATUS_FEED_IN_ERROR, /* 馈纸错误 */
HG_STATUS_PAPER_JAM, /* 卡纸 */
HG_STATUS_DETECT_STAPLE, /* 订书钉 */
HG_STATUS_DETECT_DOUBLE_FEED, /* 双张 */
HG_STATUS_DETECT_SIZECHECKERROR, /* 尺寸检测错误 */
HG_STATUS_PAPER_SKEW, /* 纸张歪斜 */
HG_STATUS_USBCONNECT, /* 设备已连接 */
HG_STATUS_USBDISCONNECT, /* 设备未连接 */
HG_STATUS_USBERROR, /* USB错误 */
HG_STATUS_TIMEOUT, /* 取图超时 */
HG_STATUS_DOGEAR, /* 检查到折角 */
HG_STATUS_AQULRE_ERROR, /* 扫描仪取图错误 */
HG_STATUS_COUNTMODE, /* 计数模式 */
HG_STATUS_SLEEP, /* 设备休眠中 */
}HG_STATUSCODE;
/*缓存文件格式*/
typedef enum {
HG_CJPG,
HG_CPNG,
HG_CBMP,
HG_CTIFF
}HG_CACHEIMGFORMAT;
/* 扫描图像保存模式 */
typedef enum
{
HG_XFERMEMORY, /* 内存保存图像信息 */
HG_XFERFILE /* 图像文件保存图像信息 */
}HG_TRANSFERMODE;
/* 除穿孔参数 */
typedef struct
{
int enable; /* 使能开启该功能为true关闭该功能为false */
int ratio; /* 穿孔搜索范围从边缘到页面中心比例1~50对应1%~50% */
}HG_FILLHOLE;
/* 硬件参数 */
typedef struct
{
int capturepixtype; /* 颜色模式 */
int doubleFeedDetection; /* 双张检测 */
int bindingDetection; /* 订书钉检测 */
}HG_HARDWARECAPS;
/* 跳过空白页(与对折功能互斥) */
typedef struct
{
int Duplex; /* 1: both ; 0: front */
int DiscardBlank; /* 跳过空白页通用 0:disable 1: enbale */
int DiscardBlankVince; /* 跳过空白页发票0:disable 1: enbale */
int Fold; /* 对折 0:disable 1: enbale */
int SwitchFrontBack; /* 互换正反面 0:disable 1: enbale */
}HG_SCANSIDE;
/* 图像数据 */
typedef struct
{
unsigned int width; /* 像素宽度 */
unsigned int height; /* 像素高度 */
unsigned int bitdepth; /* 位深 */
unsigned char* pimgdata; /* 数据指针 */
unsigned int bytesperline; /* 每行数据长度 */
unsigned int bufferlength; /* 数据总长度 */
}HG_IMG;
/* 图像处理 */
typedef struct
{
int AutoCrop; /* 自动裁剪尺寸 */
int Brightness; /* 1~255 */
int Contrast; /* 1~7 */
float Gamma; /* 0.1f~5.0f */
int FillBlackRect; /* 消除黑框 */
int AutoDescrew; /* 自动纠偏 */
int RefuseInflow; /* 防止渗透 */
HG_FILLHOLE FillHole; /* 填穿孔参数 */
HG_FILTER Filter; /* 除色与颜色增强 */
int ColorCorrection; /* 色彩校正 */
int RemoveMorr; /* 去除摩尔纹 */
int ErrorExtention; /* 错误扩散 */
int NosieDetach; /* 噪点优化 */
int NosieDetachEnable;
int TextureRemove; /* 除网纹 */
int Indent; /* 边缘缩进像素 */
int Noise; /* 降噪像素点 */
int AutoCrop_threshold; /* 自动裁剪二值化阀值 */
bool Is_convex; /* 填充黑框方式 */
HG_SHARPENTYPE SharpenType; /* 滤镜类型 */
int MultiOutFilterRed; /* 多流输出除红 */
int AnswerSheetFilterRed; /* 答题卡除红 */
HG_ORENTATION Orentation; /* 图像旋转 */
int BackRotate180; /* 背面旋转180 */
int SplitImage; /* 图像拆分 */
int DiscardBlankThre; /* 跳过空白页阈值*/
}HG_IMAGEPROCESS;
/* 扫描参数 */
typedef struct
{
HG_COLORMODE PixelType; /* 色彩:彩色/灰度/黑白 */
HG_MULTIOUTPUT MultiOutput; /* 多流输出:彩色+灰度+黑白 */
HG_PAPERTYPE PaperSize; /* 幅面 */
HG_PAPERALIGN PaperAlign; /* 文档方向 */
HG_CACHEIMGFORMAT CacheFormat; /* 缓存图像格式*/
int Resolution; /* 分辨率100/150/200/300/600 */
HG_SCANSIDE ScanSide; /* 正反面:正面/正反双面 */
HG_IMAGEPROCESS ImageProcess; /* 图像处理 */
HG_HARDWARECAPS HardwareParam; /* 硬件参数 */
}HG_SCANPARAMS;
/// <summary>
/// 获取图像回调函数
/// </summary>
/// <param name="img">[in]图像数据结构体</param>
typedef void(*HG_OnImage_Callback)(HG_IMG* img, void* obj);
/// <summary>
/// 设备状态变更回调函数
/// </summary>
/// <param name="statuscode">[in]设备状态</param>
typedef void(*HG_OnDevice_Event_Callback)(HG_STATUSCODE statuscode, void* obj);
/// <summary>
/// 初始化设备。该功能在整个扫描流程最开始调用,且仅需调用一次
/// </summary>
DLL_HG_SCHANNER_API void HG_Init();
/// <summary>
/// 设置图像格式 .png .jpg
/// </summary>
DLL_HG_SCHANNER_API void HG_ImgSaveType(const char* img_type);
/// <summary>
/// 获取当前电脑连接的华高扫描仪设备列表
/// </summary>
/// <param name="strSeperator">[in]分隔符</param>
/// <returns>成功返回以 szSeperator 分隔的设备列表; 无设备返回 NULL。</returns>
DLL_HG_SCHANNER_API char* HG_GetDevices(char* strSeperator);
/// <summary>
/// 打开PC端 USB端口并激活
/// </summary>
/// <param name="scannername">[in]设备名称。可通过HG_GetDevices获得</param>
/// <returns>成功返回设备句柄失败返回NULL</returns>
DLL_HG_SCHANNER_API HG_Scanner_Handle HG_OpenScanner(char* scannername);
/// <summary>
/// 关闭USB端口
/// </summary>
/// <param name="pScanner">[in]设备句柄</param>
DLL_HG_SCHANNER_API void HG_CloseScanner(HG_Scanner_Handle pScanner);
/// <summary>
/// 获取扫描参数
/// </summary>
/// <param name="pScanner">[in]设备句柄</param>
/// <param name="param">[out]扫描参数指针</param>
/// <returns>成功返回0失败返回非0</returns>
DLL_HG_SCHANNER_API int HG_Get_Scan_Params(HG_Scanner_Handle pScanner, HG_SCANPARAMS* param);
/// <summary>
/// 配置扫描参数
/// </summary>
/// <param name="pScanner">[in]设备句柄</param>
/// <param name="param">[in]扫描参数</param>
/// <returns>成功返回0失败返回非0</returns>
DLL_HG_SCHANNER_API int HG_Set_Scan_Params(HG_Scanner_Handle pScanner, HG_SCANPARAMS param);
/// <summary>
/// 开始扫描
/// </summary>
/// <param name="pScanner">[in]设备句柄</param>
/// <param name="count">[in]扫描张数。-1位连续扫描≥1为指定页数扫描</param>
/// <returns>成功返回0失败返回非0</returns>
DLL_HG_SCHANNER_API int HG_StartScan(HG_Scanner_Handle pScanner, int count);
/// <summary>
/// 停止扫描
/// </summary>
/// <param name="pScanner">[in]设备句柄</param>
/// <returns>成功返回0失败返回非0</returns>
DLL_HG_SCHANNER_API int HG_StopScan(HG_Scanner_Handle pScanner);
/// <summary>
/// 获取扫描仪扫描状态
/// </summary>
/// <param name="pScanner">[in]设备句柄</param>
/// <returns>正在扫描返回非零反之返回0</returns>
DLL_HG_SCHANNER_API int HG_Is_Running(HG_Scanner_Handle pScanner);
/// <summary>
/// 检测纸槽是否有纸
/// </summary>
/// <param name="pScanner">[in]设备句柄</param>
/// <returns>返回0为无纸返回1为有纸;返回-1为异常</returns>
DLL_HG_SCHANNER_API int HG_Is_FeederLoaded(HG_Scanner_Handle pScanner);
/// <summary>
/// 注册获取图像回调接口
/// </summary>
/// <param name="onimg_callback">[in]图像获取回调函数指针</param>
DLL_HG_SCHANNER_API void HG_Set_AquireImg_callback(HG_OnImage_Callback onimg_callback, void* obj = nullptr);
/// <summary>
/// 注册获取设备状态变更回调接口
/// </summary>
/// <param name="onevent_callback">[in]设备状态变更回调函数指针</param>
DLL_HG_SCHANNER_API void HG_Set_OnDeviceEvent_callback(HG_OnDevice_Event_Callback onevent_callback, void* obj = nullptr);
/// <summary>
/// 创建多页文档。包括PDF和OFD两种格式
/// </summary>
/// <param name="srcFiles">[in]图片名称</param>
/// <param name="srcNum">[in]srcFiles包含图片名称数量</param>
/// <param name="dstFile">[in]合成文档名称。根据 后缀名判定合成格式</param>
/// <returns>成功返回0失败返回非0</returns>
DLL_HG_SCHANNER_API int HG_Create_MultiPageDocument(char** srcFiles, int srcNum, char* dstFile);
/// <summary>
/// 创建多页tiff。
/// </summary>
/// <param name="srcFiles">[in]图片名称</param>
/// <param name="srcNum">[in]srcFiles包含图片名称数量</param>
/// <param name="dstFile">[in]合成tiff名称。根据 后缀名判定合成格式</param>
/// <returns>成功返回0失败返回非0</returns>
DLL_HG_SCHANNER_API int HG_Create_MultiTiff(char** srcFiles, int srcnum, char* dstFile);
/// <summary>
/// 获取SDK版本信息
/// </summary>
/// <returns></returns>
DLL_HG_SCHANNER_API char* HG_GetSDKVersion();
/// <summary>
/// 获取序列号
/// </summary>
/// <returns></returns>
DLL_HG_SCHANNER_API const char* HG_GetSerialNum(HG_Scanner_Handle pScanner);
/// <summary>
/// 获取固件版本号
/// </summary>
/// <returns></returns>
DLL_HG_SCHANNER_API const char* HG_GetFwVersion(HG_Scanner_Handle pScanner);
/// <summary>
/// 获取扫描仪是否在睡眠模式当中
/// </summary>
/// <returns>-1:设备未初始化 0:设备已唤醒 1:唤醒失败</returns>
DLL_HG_SCHANNER_API int HG_GET_IS_SLEEP_STATUS(HG_Scanner_Handle pScanner);
/// <summary>
/// 重启设备 重启设备后usb io会被释放所以需要从新进行初始化
/// </summary>
/// <returns>-1:非正常;1:重启设备</returns>
DLL_HG_SCHANNER_API int HG_REBOOT_DEVICE(HG_Scanner_Handle pScanner);
2022-11-22 09:05:53 +00:00
/// <summary>
/// 根据 HG_ImgSaveType 设置图像压缩率默认JPG
2022-11-23 06:24:15 +00:00
/// 设置图像压缩率JPG 默认80 格式:1-100 值越小压缩比例越高,图像质量越低。
/// 设置图像压缩率PNG 默认30) 格式:10的整数倍10 20 30....100 值越大压缩比例越低,图像质量越高。
/// C#调用时 使用bitmap 请自行压缩
2022-11-22 09:05:53 +00:00
/// </summary>
/// <returns>NULL</returns>
DLL_HG_SCHANNER_API void HG_SET_IMG_COMPRESSION(unsigned int compressiondata);
2022-11-18 01:12:13 +00:00
#ifdef __cplusplus
}
#endif
#endif