SANE属性name及fixed-id定义,单独放sane_name.h文件中统一管理
This commit is contained in:
parent
6ee98a3369
commit
aae6249d68
|
@ -173,29 +173,29 @@ void scanner_hw::init(void)
|
|||
CLEAN_ARRAY(gain_);
|
||||
CLEAN_ARRAY(off_);
|
||||
|
||||
opt_handler_[SANE_FULL_NAME(WAIT_TO_SCAN)] = a;
|
||||
opt_handler_[SANE_FULL_NAME(WAIT_SCAN_EXIT)] = e;
|
||||
opt_handler_[SANE_OPT_NAME(WAIT_TO_SCAN)] = a;
|
||||
opt_handler_[SANE_OPT_NAME(WAIT_SCAN_EXIT)] = e;
|
||||
|
||||
opt_handler_[SANE_FULL_NAME(CIS_MODE)] = m;
|
||||
opt_handler_[SANE_FULL_NAME(CIS_DPI)] = r;
|
||||
opt_handler_[SANE_FULL_NAME(Y_DPI)] = y;
|
||||
opt_handler_[SANE_FULL_NAME(CIS_BAUD)] = b;
|
||||
opt_handler_[SANE_FULL_NAME(CIS_DELAY)] = d;
|
||||
opt_handler_[SANE_FULL_NAME(CIS_FRAME_H)] = f;
|
||||
opt_handler_[SANE_FULL_NAME(CIS_SAMPLE)] = s;
|
||||
opt_handler_[SANE_FULL_NAME(CIS_SP)] = sp;
|
||||
opt_handler_[SANE_FULL_NAME(PHASE_FRONT)] = pha;
|
||||
opt_handler_[SANE_FULL_NAME(PHASE_BACK)] = phb;
|
||||
opt_handler_[SANE_FULL_NAME(CIS_LED)] = led;
|
||||
opt_handler_[SANE_FULL_NAME(CIS_STRETCH_H)] = stretch_h;
|
||||
opt_handler_[SANE_FULL_NAME(CIS_STRETCH_V)] = stretch_v;
|
||||
opt_handler_[SANE_OPT_NAME(CIS_MODE)] = m;
|
||||
opt_handler_[SANE_OPT_NAME(CIS_DPI)] = r;
|
||||
opt_handler_[SANE_OPT_NAME(Y_DPI)] = y;
|
||||
opt_handler_[SANE_OPT_NAME(CIS_BAUD)] = b;
|
||||
opt_handler_[SANE_OPT_NAME(CIS_DELAY)] = d;
|
||||
opt_handler_[SANE_OPT_NAME(CIS_FRAME_H)] = f;
|
||||
opt_handler_[SANE_OPT_NAME(CIS_SAMPLE)] = s;
|
||||
opt_handler_[SANE_OPT_NAME(CIS_SP)] = sp;
|
||||
opt_handler_[SANE_OPT_NAME(PHASE_FRONT)] = pha;
|
||||
opt_handler_[SANE_OPT_NAME(PHASE_BACK)] = phb;
|
||||
opt_handler_[SANE_OPT_NAME(CIS_LED)] = led;
|
||||
opt_handler_[SANE_OPT_NAME(CIS_STRETCH_H)] = stretch_h;
|
||||
opt_handler_[SANE_OPT_NAME(CIS_STRETCH_V)] = stretch_v;
|
||||
|
||||
opt_handler_[SANE_FULL_NAME(CIS_EXPO_FB)] = efb;
|
||||
opt_handler_[SANE_FULL_NAME(CIS_EXPO_FG)] = efg;
|
||||
opt_handler_[SANE_FULL_NAME(CIS_EXPO_FR)] = efr;
|
||||
opt_handler_[SANE_FULL_NAME(CIS_EXPO_BB)] = ebb;
|
||||
opt_handler_[SANE_FULL_NAME(CIS_EXPO_BG)] = ebg;
|
||||
opt_handler_[SANE_FULL_NAME(CIS_EXPO_BR)] = ebr;
|
||||
opt_handler_[SANE_OPT_NAME(CIS_EXPO_FB)] = efb;
|
||||
opt_handler_[SANE_OPT_NAME(CIS_EXPO_FG)] = efg;
|
||||
opt_handler_[SANE_OPT_NAME(CIS_EXPO_FR)] = efr;
|
||||
opt_handler_[SANE_OPT_NAME(CIS_EXPO_BB)] = ebb;
|
||||
opt_handler_[SANE_OPT_NAME(CIS_EXPO_BG)] = ebg;
|
||||
opt_handler_[SANE_OPT_NAME(CIS_EXPO_BR)] = ebr;
|
||||
|
||||
|
||||
auto p = [this](void* value) -> void
|
||||
|
@ -207,8 +207,8 @@ void scanner_hw::init(void)
|
|||
lateral_ = *(bool*)value;
|
||||
};
|
||||
|
||||
opt_handler_[SANE_FULL_NAME(PAPER)] = p;
|
||||
opt_handler_[SANE_FULL_NAME(LATERAL)] = l;
|
||||
opt_handler_[SANE_OPT_NAME(PAPER)] = p;
|
||||
opt_handler_[SANE_OPT_NAME(LATERAL)] = l;
|
||||
|
||||
auto staple = [this](void* value) -> void
|
||||
{
|
||||
|
@ -283,18 +283,18 @@ void scanner_hw::init(void)
|
|||
|
||||
};
|
||||
|
||||
opt_handler_[SANE_FULL_NAME(IS_CHECK_STAPLE)] = staple;
|
||||
opt_handler_[SANE_FULL_NAME(IS_CHECK_ASKEW)] = screw;
|
||||
opt_handler_[SANE_FULL_NAME(ASKEW_RANGE)] = screwl;
|
||||
opt_handler_[SANE_FULL_NAME(DOUBLE_CHECK)] = dbchk;
|
||||
opt_handler_[SANE_FULL_NAME(MOTOR_SPEED)] = motsp;
|
||||
opt_handler_[SANE_FULL_NAME(DEVICE_MODEL)] = fm;
|
||||
opt_handler_[SANE_FULL_NAME(SCAN_MODE)] = cntm;
|
||||
opt_handler_[SANE_FULL_NAME(SCAN_COUNT)] = cnt;
|
||||
opt_handler_[SANE_FULL_NAME(IS_AUTO_FEED_STRENGTH)] = afs;
|
||||
opt_handler_[SANE_FULL_NAME(FEED_STRENGTH_VALUE)] = ff;
|
||||
opt_handler_[SANE_FULL_NAME(FEED_STRENGTH)] = fs;
|
||||
opt_handler_[SANE_FULL_NAME(TIME_TO_SLEEP)] = slp;
|
||||
opt_handler_[SANE_OPT_NAME(IS_CHECK_STAPLE)] = staple;
|
||||
opt_handler_[SANE_OPT_NAME(IS_CHECK_ASKEW)] = screw;
|
||||
opt_handler_[SANE_OPT_NAME(ASKEW_RANGE)] = screwl;
|
||||
opt_handler_[SANE_OPT_NAME(DOUBLE_CHECK)] = dbchk;
|
||||
opt_handler_[SANE_OPT_NAME(MOTOR_SPEED)] = motsp;
|
||||
opt_handler_[SANE_OPT_NAME(DEVICE_MODEL)] = fm;
|
||||
opt_handler_[SANE_OPT_NAME(SCAN_MODE)] = cntm;
|
||||
opt_handler_[SANE_OPT_NAME(SCAN_COUNT)] = cnt;
|
||||
opt_handler_[SANE_OPT_NAME(IS_AUTO_FEED_STRENGTH)] = afs;
|
||||
opt_handler_[SANE_OPT_NAME(FEED_STRENGTH_VALUE)] = ff;
|
||||
opt_handler_[SANE_OPT_NAME(FEED_STRENGTH)] = fs;
|
||||
opt_handler_[SANE_OPT_NAME(TIME_TO_SLEEP)] = slp;
|
||||
}
|
||||
void scanner_hw::init_version(std::string& text)
|
||||
{
|
||||
|
@ -303,7 +303,7 @@ void scanner_hw::init_version(std::string& text)
|
|||
if(jsn->attach_text(&text[0]))
|
||||
{
|
||||
gb_json *child = nullptr;
|
||||
jsn->get_value(SANE_FULL_NAME(MOTOR_VER), child);
|
||||
jsn->get_value(SANE_OPT_NAME(MOTOR_VER), child);
|
||||
if(child)
|
||||
{
|
||||
unsigned int val = 0;
|
||||
|
@ -320,7 +320,7 @@ void scanner_hw::init_version(std::string& text)
|
|||
child->release();
|
||||
}
|
||||
|
||||
jsn->get_value(SANE_FULL_NAME(FPGA_VER), child);
|
||||
jsn->get_value(SANE_OPT_NAME(FPGA_VER), child);
|
||||
if(child)
|
||||
{
|
||||
unsigned int val = 0;
|
||||
|
@ -336,7 +336,7 @@ void scanner_hw::init_version(std::string& text)
|
|||
child->release();
|
||||
}
|
||||
|
||||
jsn->get_value(SANE_FULL_NAME(CIS_LENGTH), child);
|
||||
jsn->get_value(SANE_OPT_NAME(CIS_LENGTH), child);
|
||||
if(child)
|
||||
{
|
||||
child->get_value("default", cis_length_);
|
||||
|
@ -542,7 +542,7 @@ char* scanner_hw::get_value(const char* name, void* value, size_t* size, int* er
|
|||
if(err)
|
||||
*err = SCANNER_ERR_OK;
|
||||
|
||||
if(strcmp(name, SANE_FULL_NAME(PAPER_ON)) == 0)
|
||||
if(strcmp(name, SANE_OPT_NAME(PAPER_ON)) == 0)
|
||||
{
|
||||
ret = (char*)malloc(sizeof(int));
|
||||
*(int*)ret = 0;
|
||||
|
@ -550,7 +550,7 @@ char* scanner_hw::get_value(const char* name, void* value, size_t* size, int* er
|
|||
if(size)
|
||||
*size = sizeof(bool);
|
||||
}
|
||||
else if(strcmp(name, SANE_FULL_NAME(PAPER_W)) == 0)
|
||||
else if(strcmp(name, SANE_OPT_NAME(PAPER_W)) == 0)
|
||||
{
|
||||
SIZE sz = paper::size(paper_.c_str());
|
||||
double mm = lateral_ && lateral_en_ ? sz.cy : sz.cx;
|
||||
|
@ -560,7 +560,7 @@ char* scanner_hw::get_value(const char* name, void* value, size_t* size, int* er
|
|||
if(size)
|
||||
*size = sizeof(double);
|
||||
}
|
||||
else if(strcmp(name, SANE_FULL_NAME(PAPER_H)) == 0)
|
||||
else if(strcmp(name, SANE_OPT_NAME(PAPER_H)) == 0)
|
||||
{
|
||||
SIZE sz = paper::size(paper_.c_str());
|
||||
double mm = lateral_ && lateral_en_ ? sz.cx : sz.cy;
|
||||
|
@ -570,14 +570,14 @@ char* scanner_hw::get_value(const char* name, void* value, size_t* size, int* er
|
|||
if(size)
|
||||
*size = sizeof(double);
|
||||
}
|
||||
else if(strcmp(name, SANE_FULL_NAME(CIS_MODE)) == 0)
|
||||
else if(strcmp(name, SANE_OPT_NAME(CIS_MODE)) == 0)
|
||||
{
|
||||
ret = (char*)malloc(mode_.length() + 1);
|
||||
strcpy(ret, mode_.c_str());
|
||||
if(size)
|
||||
*size = mode_.length();
|
||||
}
|
||||
else if(strcmp(name, SANE_FULL_NAME(CIS_DPI)) == 0)
|
||||
else if(strcmp(name, SANE_OPT_NAME(CIS_DPI)) == 0)
|
||||
{
|
||||
ret = (char*)malloc(sizeof(int));
|
||||
*(int*)ret = dpi_;
|
||||
|
@ -600,24 +600,24 @@ int scanner_hw::set_value(const char* name, void* val)
|
|||
{
|
||||
opt_handler_[name](val);
|
||||
}
|
||||
else if(strstr(name, SANE_FULL_NAME(CIS_GAIN_FRONT)) == name)
|
||||
else if(strstr(name, SANE_OPT_NAME(CIS_GAIN_FRONT)) == name)
|
||||
{
|
||||
name += strlen(SANE_FULL_NAME(CIS_GAIN_FRONT)) + 1;
|
||||
name += strlen(SANE_OPT_NAME(CIS_GAIN_FRONT)) + 1;
|
||||
set_gain_value(true, true, atoi(name), *(int*)val);
|
||||
}
|
||||
else if(strstr(name, SANE_FULL_NAME(CIS_GAIN_BACK)) == name)
|
||||
else if(strstr(name, SANE_OPT_NAME(CIS_GAIN_BACK)) == name)
|
||||
{
|
||||
name += strlen(SANE_FULL_NAME(CIS_GAIN_BACK)) + 1;
|
||||
name += strlen(SANE_OPT_NAME(CIS_GAIN_BACK)) + 1;
|
||||
set_gain_value(false, true, atoi(name), *(int*)val);
|
||||
}
|
||||
else if(strstr(name, SANE_FULL_NAME(CIS_OFFSET_FRONT)) == name)
|
||||
else if(strstr(name, SANE_OPT_NAME(CIS_OFFSET_FRONT)) == name)
|
||||
{
|
||||
name += strlen(SANE_FULL_NAME(CIS_OFFSET_FRONT)) + 1;
|
||||
name += strlen(SANE_OPT_NAME(CIS_OFFSET_FRONT)) + 1;
|
||||
set_gain_value(true, false, atoi(name), *(int*)val);
|
||||
}
|
||||
else if(strstr(name, SANE_FULL_NAME(CIS_OFFSET_BACK)) == name)
|
||||
else if(strstr(name, SANE_OPT_NAME(CIS_OFFSET_BACK)) == name)
|
||||
{
|
||||
name += strlen(SANE_FULL_NAME(CIS_OFFSET_BACK)) + 1;
|
||||
name += strlen(SANE_OPT_NAME(CIS_OFFSET_BACK)) + 1;
|
||||
set_gain_value(false, false, atoi(name), *(int*)val);
|
||||
}
|
||||
else
|
||||
|
@ -629,7 +629,7 @@ int scanner_hw::set_value(const char* name, void* val)
|
|||
}
|
||||
void scanner_hw::enable(const char* name, bool able)
|
||||
{
|
||||
if(strcmp(name, SANE_FULL_NAME(LATERAL)) == 0)
|
||||
if(strcmp(name, SANE_OPT_NAME(LATERAL)) == 0)
|
||||
lateral_en_ = able;
|
||||
}
|
||||
|
||||
|
|
|
@ -110,14 +110,14 @@ void auto_crop::init(void)
|
|||
lateral_ = *(bool*)val;
|
||||
};
|
||||
|
||||
opt_handler_[SANE_FULL_NAME(ANTI_SKEW)] = deskew;
|
||||
opt_handler_[SANE_FULL_NAME(ERASE_BLACK_FRAME)] = bg;
|
||||
opt_handler_[SANE_FULL_NAME(FILL_BKG_MODE)] = bgm;
|
||||
opt_handler_[SANE_FULL_NAME(THRESHOLD)] = thr;
|
||||
opt_handler_[SANE_FULL_NAME(ANTI_NOISE_LEVEL)] = noise;
|
||||
opt_handler_[SANE_FULL_NAME(MARGIN)] = margin;
|
||||
opt_handler_[SANE_FULL_NAME(PAPER)] = paper;
|
||||
opt_handler_[SANE_FULL_NAME(LATERAL)] = lat;
|
||||
opt_handler_[SANE_OPT_NAME(ANTI_SKEW)] = deskew;
|
||||
opt_handler_[SANE_OPT_NAME(ERASE_BLACK_FRAME)] = bg;
|
||||
opt_handler_[SANE_OPT_NAME(FILL_BKG_MODE)] = bgm;
|
||||
opt_handler_[SANE_OPT_NAME(THRESHOLD)] = thr;
|
||||
opt_handler_[SANE_OPT_NAME(ANTI_NOISE_LEVEL)] = noise;
|
||||
opt_handler_[SANE_OPT_NAME(MARGIN)] = margin;
|
||||
opt_handler_[SANE_OPT_NAME(PAPER)] = paper;
|
||||
opt_handler_[SANE_OPT_NAME(LATERAL)] = lat;
|
||||
}
|
||||
int auto_crop::work(PROCIMGINFO& in, PROCIMGINFO& out)
|
||||
{
|
||||
|
|
|
@ -34,9 +34,9 @@ int color_correct::set_value(const char* name/*nullptr for all options*/, void*
|
|||
{
|
||||
int ret = SCANNER_ERR_OK;
|
||||
|
||||
if(strcmp(name, SANE_FULL_NAME(COLOR_CORRECT)) == 0)
|
||||
if(strcmp(name, SANE_OPT_NAME(COLOR_CORRECT)) == 0)
|
||||
enabled_ = correct_ = *(bool*)val;
|
||||
else if(strcmp(name, SANE_FULL_NAME(LUT_FILE)) == 0)
|
||||
else if(strcmp(name, SANE_OPT_NAME(LUT_FILE)) == 0)
|
||||
{
|
||||
if(lut_path_ != (char*)val)
|
||||
{
|
||||
|
@ -44,7 +44,7 @@ int color_correct::set_value(const char* name/*nullptr for all options*/, void*
|
|||
hg::initLut(lut_path_.c_str(), clr_);
|
||||
}
|
||||
}
|
||||
else if(strcmp(name, SANE_FULL_NAME(CIS_MODE)) == 0)
|
||||
else if(strcmp(name, SANE_OPT_NAME(CIS_MODE)) == 0)
|
||||
{
|
||||
bool pre = clr_;
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ int rebuild::set_value(const char* name/*nullptr for all options*/, void* val/*n
|
|||
{
|
||||
int ret = SCANNER_ERR_OK;
|
||||
|
||||
if(strcmp(name, SANE_FULL_NAME(CIS_REBUILD)) == 0)
|
||||
if(strcmp(name, SANE_OPT_NAME(CIS_REBUILD)) == 0)
|
||||
rebuild_ = *(bool*)val;
|
||||
else
|
||||
ret = SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
||||
|
|
|
@ -28,7 +28,7 @@ int stretch::set_value(const char* name/*nullptr for all options*/, void* val/*n
|
|||
{
|
||||
int ret = SCANNER_ERR_OK;
|
||||
|
||||
if(strcmp(name, SANE_FULL_NAME(RESOLUTION)) == 0)
|
||||
if(strcmp(name, SANE_OPT_NAME(RESOLUTION)) == 0)
|
||||
dpi_ = *(int*)val;
|
||||
else
|
||||
ret = SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
||||
|
|
|
@ -237,11 +237,11 @@ int imgproc_mgr::set_value(const char* name, void* val)
|
|||
{
|
||||
int ret = SCANNER_ERR_OK;
|
||||
|
||||
if(strcmp(name, SANE_FULL_NAME(DUMP_IMG)) == 0)
|
||||
if(strcmp(name, SANE_OPT_NAME(DUMP_IMG)) == 0)
|
||||
dump_img_ = *(bool*)val;
|
||||
else if(strcmp(name, SANE_FULL_NAME(CIS_REBUILD)) == 0)
|
||||
else if(strcmp(name, SANE_OPT_NAME(CIS_REBUILD)) == 0)
|
||||
do_rebuild_ = *(bool*)val;
|
||||
else if(strcmp(name, SANE_FULL_NAME(CIS_STRETCH)) == 0)
|
||||
else if(strcmp(name, SANE_OPT_NAME(CIS_STRETCH)) == 0)
|
||||
{
|
||||
if(*(bool*)val)
|
||||
{
|
||||
|
|
|
@ -168,7 +168,7 @@ async_scanner::async_scanner() : usb_(nullptr), cfg_mgr_(nullptr), scan_id_(0)
|
|||
user_ = new user_priv();
|
||||
|
||||
cfg_mgr_->add(const_opts_);
|
||||
cis_->set_value(SANE_FULL_NAME(DEVICE_MODEL), &cfg_mgr_->get_option_value(SANE_FULL_NAME(DEVICE_MODEL), SANE_ACTION_GET_VALUE)[0]);
|
||||
cis_->set_value(SANE_OPT_NAME(DEVICE_MODEL), &cfg_mgr_->get_option_value(SANE_OPT_NAME(DEVICE_MODEL), SANE_ACTION_GET_VALUE)[0]);
|
||||
cfg_mgr_->add(cis_);
|
||||
cfg_mgr_->add(user_);
|
||||
img_prcr_ = new imgproc_mgr(sender, cfg_mgr_);
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
#define OS_WIN 0
|
||||
#endif
|
||||
|
||||
#include <math.h> // for fabs
|
||||
|
||||
#define SIZE_KB(n) ((n) * 1024)
|
||||
#define SIZE_MB(n) SIZE_KB((n) * 1024)
|
||||
#define SIZE_GB(n) SIZE_MB((n) * 1024)
|
||||
|
@ -15,6 +17,7 @@
|
|||
#define SEC_2_US(s) MSEC_2_US(SEC_2_MS(s))
|
||||
|
||||
#define MM_PER_INCH 25.4f
|
||||
#define IS_DOUBLE_EQUAL(a, b) fabs((a) - (b)) < .000001
|
||||
|
||||
#define ALIGN_TO(v, align) (((v) + (align) - 1) / (align) * (align))
|
||||
#define ALIGN_INT(v) ALIGN_TO(v, sizeof(int))
|
||||
|
|
|
@ -18,18 +18,8 @@
|
|||
#define sane_ex_h
|
||||
|
||||
|
||||
#define SIZE_KB(n) ((n) * 1024)
|
||||
#define SIZE_MB(n) SIZE_KB(n * 1024)
|
||||
#define SIZE_GB(n) SIZE_MB(n * 1024)
|
||||
|
||||
#define SEC_2_MS(s) ((s) * 1000)
|
||||
#define MSEC_2_US(ms) ((ms) * 1000)
|
||||
#define SEC_2_US(s) MSEC_2_US(SEC_2_MS(s))
|
||||
|
||||
#define ALIGN_TO(v, align) (((v) + (align) - 1) / (align) * (align))
|
||||
#define ALIGN_INT(v) ALIGN_TO(v, sizeof(int))
|
||||
|
||||
#include <base/plat_types.h>
|
||||
#include "sane_name.h"
|
||||
|
||||
#ifndef EXPORT_SANE_API
|
||||
#ifdef OEM_HANWANG
|
||||
|
@ -73,17 +63,6 @@
|
|||
#endif
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
#define SANE_OPT_NAME(name) SANE_STD_OPT_NAME_##name
|
||||
#define SANE_OPT_FIXED_ID(id) SANE_OPT_ID_##id
|
||||
#define IS_SANE_OPT(v, sd) strcmp(v, SANE_OPT_NAME(sd)) == 0
|
||||
#define MAX_OPT_NAME_LEN 64
|
||||
#define JSON_SANE_TYPE_BOOL "bool"
|
||||
#define JSON_SANE_TYPE_INT "int"
|
||||
#define JSON_SANE_TYPE_FIXED "float"
|
||||
#define JSON_SANE_TYPE_STRING "string"
|
||||
#define JSON_SANE_TYPE_GROUP "group"
|
||||
#define JSON_SANE_TYPE_BUTTON "button"
|
||||
|
||||
// 用户权限
|
||||
enum
|
||||
{
|
||||
|
@ -102,309 +81,11 @@ enum opt_visible_level // "visible" field
|
|||
OPT_VISIBLE_NOT_SUPPORT, // device does not support this option
|
||||
};
|
||||
|
||||
// sane-standard-option-name defined by third-app
|
||||
#define SANE_FULL_NAME(n) SANE_STD_OPT_NAME_##n
|
||||
//
|
||||
// PART I: 参数类型与华高一致,可直接通过改name字段为标准值实现
|
||||
#define SANE_STD_OPT_NAME_RESTORE "restore" // OPTION_TITLE_HFMRSZ
|
||||
#define SANE_STD_OPT_NAME_HELP "help" // OPTION_TITLE_BZ
|
||||
#define SANE_STD_OPT_NAME_IS_MULTI_OUT "is-multiout" // OPTION_TITLE_DLSC
|
||||
#define SANE_STD_OPT_NAME_MULTI_OUT_TYPE "multiout-type" // OPTION_TITLE_DLSCLX
|
||||
#define SANE_STD_OPT_NAME_COLOR_MODE "mode" // OPTION_TITLE_YSMS
|
||||
#define SANE_STD_OPT_NAME_BINARY_THRESHOLD "binary-threshold" // OPTION_TITLE_HBTXYZ
|
||||
#define SANE_STD_OPT_NAME_REVERSE_01 "reverse-bw" // OPTION_TITLE_HBTXFSSC
|
||||
#define SANE_STD_OPT_NAME_FILTER "filter" // OPTION_TITLE_HDHHBTX_CSYZQ
|
||||
#define SANE_STD_OPT_NAME_RID_MULTIOUT_RED "is-rid-multiout-red" // OPTION_TITLE_24WCSTX_DLSCCH
|
||||
#define SANE_STD_OPT_NAME_RID_ANSWER_SHEET_RED "is-rid-answer-sheet-red" // OPTION_TITLE_24WCSTX_DTKCH
|
||||
#define SANE_STD_OPT_NAME_ERASE_BACKGROUND "is-erase-bkg" // OPTION_TITLE_BJYC
|
||||
#define SANE_STD_OPT_NAME_BKG_COLOR_RANGE "bkg-color-range" // OPTION_TITLE_BJSCFDFW
|
||||
#define SANE_STD_OPT_NAME_SHARPEN "sharpen" // OPTION_TITLE_RHYMH
|
||||
#define SANE_STD_OPT_NAME_RID_MORR "is-rid-morr" // OPTION_TITLE_QCMW
|
||||
#define SANE_STD_OPT_NAME_RID_GRID "is-rid-grid" // OPTION_TITLE_CWW
|
||||
#define SANE_STD_OPT_NAME_ERROR_EXTENSION "is-err-extension" // OPTION_TITLE_CWKS
|
||||
#define SANE_STD_OPT_NAME_NOISE_OPTIMIZE "is-noise-optimize" // OPTION_TITLE_HBTXZDYH
|
||||
#define SANE_STD_OPT_NAME_NOISE_SIZE "noise-size" // OPTION_TITLE_ZDYHCC
|
||||
#define SANE_STD_OPT_NAME_PAPER "paper" // OPTION_TITLE_ZZCC
|
||||
#define SANE_STD_OPT_NAME_PAPER_W "paper-w" // 纸张宽度
|
||||
#define SANE_STD_OPT_NAME_PAPER_H "paper-h" // 纸张高度
|
||||
#define SANE_STD_OPT_NAME_LATERAL "lateral" // 纸张横向标志
|
||||
#define SANE_STD_OPT_NAME_CUSTOM_AREA "is-custom-area" // OPTION_TITLE_ZDYSMQY
|
||||
#define SANE_STD_OPT_NAME_CUSTOM_AREA_LEFT "tl-x" // OPTION_TITLE_SMQYZCmm
|
||||
#define SANE_STD_OPT_NAME_CUSTOM_AREA_RIGHT "br-x" // OPTION_TITLE_SMQYYCmm
|
||||
#define SANE_STD_OPT_NAME_CUSTOM_AREA_TOP "tl-y" // OPTION_TITLE_SMQYSCmm
|
||||
#define SANE_STD_OPT_NAME_CUSTOM_AREA_BOTTOM "br-y" // OPTION_TITLE_SMQYXCmm
|
||||
#define SANE_STD_OPT_NAME_SIZE_CHECK "is-size-check" // OPTION_TITLE_CCJC
|
||||
#define SANE_STD_OPT_NAME_PAGE "page" // OPTION_TITLE_SMYM
|
||||
#define SANE_STD_OPT_NAME_DISCARD_BLANK_SENS "blank-sensitivity" // OPTION_TITLE_TGKBYLMD
|
||||
#define SANE_STD_OPT_NAME_RESOLUTION "resolution" // OPTION_TITLE_FBL
|
||||
#define SANE_STD_OPT_NAME_TIME_TO_SLEEP "time-to-sleep" // OPTION_TITLE_XMSJ
|
||||
#define SANE_STD_OPT_NAME_IMAGE_QUALITY "image-quality" // OPTION_TITLE_HZ
|
||||
#define SANE_STD_OPT_NAME_EXCHANGE "is-exchange" // OPTION_TITLE_JHZFM
|
||||
#define SANE_STD_OPT_NAME_SPLIT "is-split" // OPTION_TITLE_TXCF
|
||||
#define SANE_STD_OPT_NAME_ANTI_SKEW "is-anti-skew" // OPTION_TITLE_ZDJP
|
||||
#define SANE_STD_OPT_NAME_IS_CUSTOM_GAMMA "is-custom-gamma" // OPTION_TITLE_QYSDQX
|
||||
#define SANE_STD_OPT_NAME_GAMMA "gamma" // OPTION_TITLE_JMZ
|
||||
#define SANE_STD_OPT_NAME_CUSTOM_GAMMA "custom-gamma" // OPTION_TITLE_CUSTOM_JMZ; data - SANE_Gamma*
|
||||
#define SANE_STD_OPT_NAME_GRAY_GAMMA "gray-gamma-table"
|
||||
#define SANE_STD_OPT_NAME_COLOR_GAMMA "color-gamma-table"
|
||||
#define SANE_STD_OPT_NAME_RED_GAMMA "red-gamma-table"
|
||||
#define SANE_STD_OPT_NAME_GREEN_GAMMA "green-gamma-table"
|
||||
#define SANE_STD_OPT_NAME_BLUE_GAMMA "blue-gamma-table"
|
||||
#define SANE_STD_OPT_NAME_BRIGHTNESS "brightness" // OPTION_TITLE_LDZ
|
||||
#define SANE_STD_OPT_NAME_CONTRAST "contrast" // OPTION_TITLE_DBD
|
||||
#define SANE_STD_OPT_NAME_IS_PHOTO_MODE "is-photo-mode" // OPTION_TITLE_ZPMS
|
||||
#define SANE_STD_OPT_NAME_ERASE_BLACK_FRAME "is-erase-black-frame" // OPTION_TITLE_XCHK
|
||||
#define SANE_STD_OPT_NAME_DARK_SAMPLE "is-dark-sample" // OPTION_TITLE_SSYZ
|
||||
#define SANE_STD_OPT_NAME_THRESHOLD "threshold" // OPTION_TITLE_YZ
|
||||
#define SANE_STD_OPT_NAME_ANTI_NOISE_LEVEL "anti-noise-level" // OPTION_TITLE_BJKZDJ
|
||||
#define SANE_STD_OPT_NAME_MARGIN "margin" // OPTION_TITLE_BYSJ
|
||||
#define SANE_STD_OPT_NAME_FILL_BKG_MODE "bkg-fill-mode" // OPTION_TITLE_BJTCFS
|
||||
#define SANE_STD_OPT_NAME_IS_ANTI_PERMEATE "is-anti-permeate" // OPTION_TITLE_FZST
|
||||
#define SANE_STD_OPT_NAME_ANTI_PERMEATE_LEVEL "permeate-level" // OPTION_TITLE_FZSTDJ
|
||||
#define SANE_STD_OPT_NAME_RID_HOLE "is-rid-hole" // OPTION_TITLE_CKYC
|
||||
#define SANE_STD_OPT_NAME_HOLE_THRESHOLD "hole-threshold" //
|
||||
#define SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE "search-hole-range" // OPTION_TITLE_CKSSFWZFMBL
|
||||
#define SANE_STD_OPT_NAME_RID_HOLE_L "is-rid-hole-l" // OPTION_TITLE_CKYCZC
|
||||
#define SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_L "search-hole-range-l" // OPTION_TITLE_ZCCKSSFWZFMBL
|
||||
#define SANE_STD_OPT_NAME_RID_HOLE_R "is-rid-hole-r" // OPTION_TITLE_CKYCYC
|
||||
#define SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_R "search-hole-range-r" // OPTION_TITLE_YCCKSSFWZFMBL
|
||||
#define SANE_STD_OPT_NAME_RID_HOLE_T "is-rid-hole-t" // OPTION_TITLE_CKYCSC
|
||||
#define SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_T "search-hole-range-t" // OPTION_TITLE_SCCKSSFWZFMBL
|
||||
#define SANE_STD_OPT_NAME_RID_HOLE_B "is-rid-hole-b" // OPTION_TITLE_CKYCXC
|
||||
#define SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_B "search-hole-range-b" // OPTION_TITLE_XCCKSSFWZFMBL
|
||||
#define SANE_STD_OPT_NAME_IS_FILL_COLOR "is-fill-color" // OPTION_TITLE_SCTC
|
||||
#define SANE_STD_OPT_NAME_IS_ULTROSONIC_CHECK "is-ultrosonic" // OPTION_TITLE_CSBJC
|
||||
#define SANE_STD_OPT_NAME_DOUBLE_CHECK "double-chk"
|
||||
#define SANE_STD_OPT_NAME_DOUBLE_FEED_HANDLE "double-feed" // OPTION_TITLE_SZTPCL
|
||||
#define SANE_STD_OPT_NAME_IS_CHECK_STAPLE "is-staple" // OPTION_TITLE_ZDJC
|
||||
#define SANE_STD_OPT_NAME_SCAN_MODE "scan-mode" // OPTION_TITLE_SMZS
|
||||
#define SANE_STD_OPT_NAME_SCAN_COUNT "scan-count" // OPTION_TITLE_SMSL
|
||||
#define SANE_STD_OPT_NAME_TEXT_DIRECTION "direction" // OPTION_TITLE_WGFX
|
||||
#define SANE_STD_OPT_NAME_IS_ROTATE_BKG_180 "is-rotate-bkg-180" // OPTION_TITLE_BMXZ180
|
||||
#define SANE_STD_OPT_NAME_IS_CHECK_DOG_EAR "is-check-dog-ear" // OPTION_TITLE_ZJJC
|
||||
#define SANE_STD_OPT_NAME_DOG_EAR_SIZE "dog-ear-size" // OPTION_TITLE_ZJDX
|
||||
#define SANE_STD_OPT_NAME_IS_CHECK_ASKEW "is-check-askew" // OPTION_TITLE_WXJC
|
||||
#define SANE_STD_OPT_NAME_ASKEW_RANGE "askew-range" // OPTION_TITLE_WXRRD
|
||||
#define SANE_STD_OPT_NAME_FEED_STRENGTH "feed-strength" // OPTION_TITLE_FZQD
|
||||
#define SANE_STD_OPT_NAME_IS_AUTO_FEED_STRENGTH "is-auto-strength" // OPTION_TITLE_ZDFZQD
|
||||
#define SANE_STD_OPT_NAME_FEED_STRENGTH_VALUE "feed-strength-value" // OPTION_TITLE_JZSBL
|
||||
#define SANE_STD_OPT_NAME_WAIT_TO_SCAN "is-wait-scan" // OPTION_TITLE_DZSM
|
||||
#define SANE_STD_OPT_NAME_FOLD_TYPE "fold-type" // OPTION_TITLE_DZMS
|
||||
#define SANE_STD_OPT_NAME_COLOR_CORRECTION "color-correction" // OPTION_TITLE_SPJZ
|
||||
#define SANE_STD_OPT_NAME_WAIT_SCAN_EXIT "wait-scan-exit" // OPTION_TITLE_DZSMTCSJ
|
||||
#define SANE_STD_OPT_NAME_DISCARDBLANK "discardblank" // OPTION_TITLE_TGKBY
|
||||
|
||||
#define SANE_STD_OPT_NAME_DEVICE_NAME "dev-name" // 设备名称
|
||||
#define SANE_STD_OPT_NAME_DEVICE_VID "dev-vid" // 设备VID
|
||||
#define SANE_STD_OPT_NAME_DEVICE_PID "dev-pid" // 设备PID
|
||||
#define SANE_STD_OPT_NAME_DEVICE_MODEL "dev-model" // 设备系列
|
||||
#define SANE_STD_OPT_NAME_DEV_NAME SANE_STD_OPT_NAME_DEVICE_NAME
|
||||
#define SANE_STD_OPT_NAME_VID SANE_STD_OPT_NAME_DEVICE_VID
|
||||
#define SANE_STD_OPT_NAME_PID SANE_STD_OPT_NAME_DEVICE_PID
|
||||
#define SANE_STD_OPT_NAME_DEV_FAMILY SANE_STD_OPT_NAME_DEVICE_MODEL
|
||||
#define SANE_STD_OPT_NAME_DEVICE_TYPE "dev-type" // 设备型号
|
||||
#define SANE_STD_OPT_NAME_DEVICE_SERIAL_NO "dev-sn" // 设备序列号
|
||||
#define SANE_STD_OPT_NAME_FIRMWARE_VERSION "fmw-ver" // 固件版本
|
||||
#define SANE_STD_OPT_NAME_DEVICE_IP_ADDR "ip-addr" // 设备IP地址
|
||||
#define SANE_STD_OPT_NAME_DEVICE_MAC_ADDR "mac-addr" // 设备MAC地址
|
||||
#define SANE_STD_OPT_NAME_ROLLER_COUNT "roll-cnt" // 滚轴张数
|
||||
#define SANE_STD_OPT_NAME_TOTAL_COUNT "total-cnt" // 历史总张数
|
||||
#define SANE_STD_OPT_NAME_HISTORY_COUNT SANE_STD_OPT_NAME_TOTAL_COUNT
|
||||
#define SANE_STD_OPT_NAME_GET_DEVS_L0G "devs-log" // 获取设备日志
|
||||
#define SANE_STD_OPT_NAME_DRIVER_VERSION "drv-ver" // 设备VID
|
||||
#define SANE_STD_OPT_NAME_MANUFACTURER "company" // 公司名称
|
||||
#define SANE_STD_OPT_NAME_COPYRIGHT "copyright" // 版权
|
||||
#define SANE_STD_OPT_NAME_CO_URL "co-url" // 公司网址
|
||||
#define SANE_STD_OPT_NAME_CO_TEL "co-tel" // 公司电话
|
||||
#define SANE_STD_OPT_NAME_CO_ADDR "co-addr" // 公司地址
|
||||
#define SANE_STD_OPT_NAME_CO_GPS "co-gps" // 公司地图定位
|
||||
#define SANE_STD_OPT_NAME_USER_NAME "user-name" // 登录账号
|
||||
#define SANE_STD_OPT_NAME_USER_PASSWORD "user-pwd" // 登录密码
|
||||
#define SANE_STD_OPT_NAME_LOGIN "login" // 登录
|
||||
#define SANE_STD_OPT_NAME_LOGOUT "logout" // 登出
|
||||
#define SANE_STD_OPT_NAME_DRIVER_LOG "drv-log" // 驱动日志
|
||||
#define SANE_STD_OPT_NAME_DEVICE_LOG SANE_STD_OPT_NAME_GET_DEVS_L0G
|
||||
#define SANE_STD_OPT_NAME_ROLLER_LIFE "roller-life" // 滚轴最大寿命(过纸张数)
|
||||
#define SANE_STD_OPT_NAME_LANGUAGE "language" // 语言
|
||||
#define SANE_STD_OPT_NAME_MOTOR_VER "motor-ver" // 电机固件版本, data = char*
|
||||
#define SANE_STD_OPT_NAME_FPGA_VER "fpga-ver" // CIS控制器(FPGA)版本, data = char*
|
||||
#define SANE_STD_OPT_NAME_TRANSFORM_IMAGE_FORMAT "trans-img-fmt" // 图像格式转换, data - SANE_ImageFormatConvert*, dst.data 调用SANE_STD_OPT_NAME_FREE_BUFFER释放
|
||||
#define SANE_STD_OPT_NAME_FREE_BUFFER "free-buf" // 释放由驱动返回的内存, data - (void**)&buf
|
||||
#define SANE_STD_OPT_NAME_PAPER_ON "paper-on" // check whether paper is on
|
||||
#define SANE_STD_OPT_NAME_INITIAL_BOOT_TIME "initial-boot-time" // 设备的初始开机时间
|
||||
#define SANE_STD_OPT_NAME_DUMP_IMG "dump-img" // 是否输出算法各阶段中间图像
|
||||
#define SANE_STD_OPT_NAME_DUMP_IMG_PATH "dump-path" // 中间图像输出路径
|
||||
#define SANE_STD_OPT_NAME_CIS_LENGTH "cis-len" // CIS 长度(采集图像的最大宽度)
|
||||
#define SANE_STD_OPT_NAME_CIS_REBUILD "rebuild" // 复原从CIS出来的数据流为原始图像
|
||||
|
||||
// PART II: 参数类型与华高不一致,需要通过“hgsane”组件在中间转换
|
||||
#define SANE_STD_OPT_NAME_PAGE_W "page-width" // OPTION_TITLE_ZZCC
|
||||
#define SANE_STD_OPT_NAME_PAGE_H "page-height" // OPTION_TITLE_ZZCC
|
||||
#define SANE_STD_OPT_NAME_DUPLEX "duplex" // OPTION_TITLE_SMYM
|
||||
// END for sane-standard-option-name defined by third-app
|
||||
//
|
||||
|
||||
// PART III: inner option on device
|
||||
#define SANE_STD_OPT_NAME_CIS_MODE "cis-mode"
|
||||
#define SANE_STD_OPT_NAME_CIS_DPI "cis-dpi"
|
||||
#define SANE_STD_OPT_NAME_Y_DPI "y-dpi"
|
||||
#define SANE_STD_OPT_NAME_CIS_BAUD "baud"
|
||||
#define SANE_STD_OPT_NAME_CIS_DELAY "act-after"
|
||||
#define SANE_STD_OPT_NAME_CIS_FRAME_H "frame-h"
|
||||
#define SANE_STD_OPT_NAME_CIS_SAMPLE "sample"
|
||||
#define SANE_STD_OPT_NAME_CIS_SP "cis-sp"
|
||||
#define SANE_STD_OPT_NAME_CIS_LED "cis-led"
|
||||
#define SANE_STD_OPT_NAME_CIS_REBUILD "cis-rebuild"
|
||||
#define SANE_STD_OPT_NAME_CIS_STRETCH "stretch"
|
||||
#define SANE_STD_OPT_NAME_CIS_EXPO_FB "expo-fb"
|
||||
#define SANE_STD_OPT_NAME_CIS_EXPO_FG "expo-fg"
|
||||
#define SANE_STD_OPT_NAME_CIS_EXPO_FR "expo-fr"
|
||||
#define SANE_STD_OPT_NAME_CIS_EXPO_BB "expo-bb"
|
||||
#define SANE_STD_OPT_NAME_CIS_EXPO_BG "expo-bg"
|
||||
#define SANE_STD_OPT_NAME_CIS_EXPO_BR "expo-br"
|
||||
#define SANE_STD_OPT_NAME_CIS_GAIN_FRONT "gain-f"
|
||||
#define SANE_STD_OPT_NAME_CIS_GAIN_BACK "gain-b"
|
||||
#define SANE_STD_OPT_NAME_CIS_OFFSET_FRONT "off-f"
|
||||
#define SANE_STD_OPT_NAME_CIS_OFFSET_BACK "off-b"
|
||||
#define SANE_STD_OPT_NAME_CIS_STRETCH_H "stretch-h"
|
||||
#define SANE_STD_OPT_NAME_CIS_STRETCH_V "stretch-v"
|
||||
#define SANE_STD_OPT_NAME_MOTOR_SPEED "motor-speed"
|
||||
#define SANE_STD_OPT_NAME_COLOR_CORRECT "clr-correct"
|
||||
#define SANE_STD_OPT_NAME_LUT_FILE "lut-file"
|
||||
#define SANE_STD_OPT_NAME_PHASE_FRONT "phase-f"
|
||||
#define SANE_STD_OPT_NAME_PHASE_BACK "phase-b"
|
||||
|
||||
//
|
||||
// 借鉴TWAIN协议固定ID的做法,定义SANE属性的固定ID - 这里与TWAIN中的ID保持一致,以方便TWAIN的调用
|
||||
enum sane_option_id
|
||||
{
|
||||
SANE_OPT_ID_BASE = 0x8800,
|
||||
SANE_OPT_ID_IS_MULTI_OUT = 0x8801,
|
||||
SANE_OPT_ID_MULTI_OUT_TYPE = 0x8802,
|
||||
SANE_OPT_ID_COLOR_MODE = 0x8803,
|
||||
SANE_OPT_ID_FILTER = 0x8804,
|
||||
SANE_OPT_ID_RID_MULTIOUT_RED = 0x8805,
|
||||
SANE_OPT_ID_RID_ANSWER_SHEET_RED = 0x8806,
|
||||
SANE_OPT_ID_ERASE_BACKGROUND = 0x8807,
|
||||
SANE_OPT_ID_BKG_COLOR_RANGE = 0x8808,
|
||||
SANE_OPT_ID_SHARPEN = 0x8809,
|
||||
SANE_OPT_ID_RID_MORR = 0x880A,
|
||||
SANE_OPT_ID_RID_GRID = 0x880B,
|
||||
SANE_OPT_ID_ERROR_EXTENSION = 0x880C,
|
||||
SANE_OPT_ID_NOISE_OPTIMIZE = 0x880D,
|
||||
SANE_OPT_ID_NOISE_SIZE = 0x880E,
|
||||
SANE_OPT_ID_PAPER = 0x880F,
|
||||
SANE_OPT_ID_CUSTOM_AREA = 0x8810,
|
||||
SANE_OPT_ID_CUSTOM_AREA_LEFT = 0x8811,
|
||||
SANE_OPT_ID_CUSTOM_AREA_RIGHT = 0x8812,
|
||||
SANE_OPT_ID_CUSTOM_AREA_TOP = 0x8813,
|
||||
SANE_OPT_ID_CUSTOM_AREA_BOTTOM = 0x8814,
|
||||
SANE_OPT_ID_SIZE_CHECK = 0x8815,
|
||||
SANE_OPT_ID_PAGE = 0x8816,
|
||||
SANE_OPT_ID_DISCARD_BLANK_SENS = 0x8817,
|
||||
SANE_OPT_ID_RESOLUTION = 0x8818,
|
||||
SANE_OPT_ID_IMAGE_QUALITY = 0x8819,
|
||||
SANE_OPT_ID_EXCHANGE = 0x881A,
|
||||
SANE_OPT_ID_SPLIT = 0x881B,
|
||||
SANE_OPT_ID_ANTI_SKEW = 0x881C,
|
||||
SANE_OPT_ID_IS_CUSTOM_GAMMA = 0x881D,
|
||||
SANE_OPT_ID_BRIGHTNESS = 0x881E,
|
||||
SANE_OPT_ID_CONTRAST = 0x881F,
|
||||
SANE_OPT_ID_GAMMA = 0x8820,
|
||||
SANE_OPT_ID_ERASE_BLACK_FRAME = 0x8821,
|
||||
SANE_OPT_ID_DARK_SAMPLE = 0x8822,
|
||||
SANE_OPT_ID_THRESHOLD = 0x8823,
|
||||
SANE_OPT_ID_ANTI_NOISE_LEVEL = 0x8824,
|
||||
SANE_OPT_ID_MARGIN = 0x8825,
|
||||
SANE_OPT_ID_FILL_BKG_MODE = 0x8826,
|
||||
SANE_OPT_ID_IS_ANTI_PERMEATE = 0x8827,
|
||||
SANE_OPT_ID_ANTI_PERMEATE_LEVEL = 0x8828,
|
||||
SANE_OPT_ID_RID_HOLE = 0x8829,
|
||||
SANE_OPT_ID_SEARCH_HOLE_RANGE = 0x882A,
|
||||
SANE_OPT_ID_IS_FILL_COLOR = 0x882B,
|
||||
SANE_OPT_ID_IS_ULTROSONIC_CHECK = 0x882C,
|
||||
SANE_OPT_ID_IS_CHECK_STAPLE = 0x882D,
|
||||
SANE_OPT_ID_SCAN_MODE = 0x882E,
|
||||
SANE_OPT_ID_SCAN_COUNT = 0x882F,
|
||||
SANE_OPT_ID_TEXT_DIRECTION = 0x8830,
|
||||
SANE_OPT_ID_IS_ROTATE_BKG_180 = 0x8831,
|
||||
SANE_OPT_ID_IS_CHECK_DOG_EAR = 0x8832,
|
||||
SANE_OPT_ID_DOG_EAR_SIZE = 0x8833,
|
||||
SANE_OPT_ID_IS_CHECK_ASKEW = 0x8834,
|
||||
SANE_OPT_ID_ASKEW_RANGE = 0x8835,
|
||||
SANE_OPT_ID_BINARY_THRESHOLD = 0x8836,
|
||||
SANE_OPT_ID_IS_PHOTO_MODE = 0x8837,
|
||||
SANE_OPT_ID_DOUBLE_FEED_HANDLE = 0x8838,
|
||||
SANE_OPT_ID_WAIT_TO_SCAN = 0x8839,
|
||||
SANE_OPT_ID_FEED_STRENGTH = 0x883A,
|
||||
SANE_OPT_ID_TIME_TO_SLEEP = 0x883B,
|
||||
SANE_OPT_ID_IS_AUTO_FEED_STRENGTH = 0x883C,
|
||||
SANE_OPT_ID_FEED_STRENGTH_VALUE = 0x883D,
|
||||
SANE_OPT_ID_REVERSE_01 = 0x883E,
|
||||
SANE_OPT_ID_RID_HOLE_L = 0x883F,
|
||||
SANE_OPT_ID_SEARCH_HOLE_RANGE_L = 0x8840,
|
||||
SANE_OPT_ID_RID_HOLE_R = 0x8841,
|
||||
SANE_OPT_ID_SEARCH_HOLE_RANGE_R = 0x8842,
|
||||
SANE_OPT_ID_RID_HOLE_T = 0x8843,
|
||||
SANE_OPT_ID_SEARCH_HOLE_RANGE_T = 0x8844,
|
||||
SANE_OPT_ID_RID_HOLE_B = 0x8845,
|
||||
SANE_OPT_ID_SEARCH_HOLE_RANGE_B = 0x8846,
|
||||
SANE_OPT_ID_FOLD_TYPE = 0x8847,
|
||||
SANE_OPT_ID_COLOR_CORRECTION = 0x8848,
|
||||
SANE_OPT_ID_HISTORY_COUNT = 0x8849,
|
||||
SANE_OPT_ID_DRIVER_VERSION = 0x884A,
|
||||
SANE_OPT_ID_MANUFACTURER = 0x884B,
|
||||
SANE_OPT_ID_COPYRIGHT = 0x884C,
|
||||
SANE_OPT_ID_CO_URL = 0x884D,
|
||||
SANE_OPT_ID_CO_TEL = 0x884E,
|
||||
SANE_OPT_ID_CO_ADDR = 0x884F,
|
||||
SANE_OPT_ID_CO_GPS = 0x8850,
|
||||
SANE_OPT_ID_HELP = 0x8851,
|
||||
SANE_OPT_ID_VID = 0x8852,
|
||||
SANE_OPT_ID_PID = 0x8853,
|
||||
SANE_OPT_ID_DEV_NAME = 0x8854,
|
||||
SANE_OPT_ID_DEV_FAMILY = 0x8855,
|
||||
SANE_OPT_ID_DEVICE_SERIAL_NO = 0x8856,
|
||||
SANE_OPT_ID_FIRMWARE_VERSION = 0x8857,
|
||||
SANE_OPT_ID_DEVICE_IP_ADDR = 0x8858,
|
||||
SANE_OPT_ID_DEVICE_MAC_ADDR = 0x8859,
|
||||
SANE_OPT_ID_CUSTOM_GAMMA = 0x885A, // data: SANE_Gamma*
|
||||
SANE_OPT_ID_ROLLER_LIFE = 0x885B, // data: uint32_t*
|
||||
SANE_OPT_ID_LANGUAGE = 0x885C, // data: char*
|
||||
SANE_OPT_ID_MOTOR_VER = 0x885D, // 电机固件版本, data - char*
|
||||
SANE_OPT_ID_TRANSFORM_IMAGE_FORMAT = 0x885E,// 图像格式转换, data - SANE_ImageFormatConvert*, dst.data 调用SANE_STD_OPT_NAME_FREE_BUFFER释放
|
||||
SANE_OPT_ID_FREE_BUFFER = 0x885F, // 释放由驱动返回的内存, data - (void**)&buf
|
||||
SANE_OPT_ID_PAPER_ON = 0x8860, // 是否有纸张, data - SANE_Bool*
|
||||
|
||||
SANE_OPT_ID_GRAY_GAMMA = 0x8861, // gray-gamma-table
|
||||
SANE_OPT_ID_COLOR_GAMMA = 0x8862, // color-gamma-table
|
||||
SANE_OPT_ID_RED_GAMMA = 0x8863, // red-gamma-table
|
||||
SANE_OPT_ID_GREEN_GAMMA = 0x8864, // green-gamma-table
|
||||
SANE_OPT_ID_BLUE_GAMMA = 0x8865, // blue-gamma-table
|
||||
SANE_OPT_ID_INITIAL_BOOT_TIME = 0x8866,
|
||||
SANE_OPT_ID_DISCARDBLANK = 0x8867,
|
||||
SANE_OPT_ID_WAIT_SCAN_EXIT = 0x8868,
|
||||
SANE_OPT_ID_RESTORE = 0x8869,
|
||||
SANE_OPT_ID_PAPER_W = 0x886A, // 纸张宽度,单位为mm
|
||||
SANE_OPT_ID_PAPER_H = 0x886B, // 纸张高度,单位为mm
|
||||
SANE_OPT_ID_LATERAL = 0x886C, // 纸张横向标志,bool
|
||||
|
||||
SANE_OPT_ID_LOGIN = 0x9900,
|
||||
SANE_OPT_ID_LOGOUT = 0x9901,
|
||||
SANE_OPT_ID_ROLLER_COUNT = 0x9902,
|
||||
SANE_OPT_ID_DRIVER_LOG = 0x9903,
|
||||
SANE_OPT_ID_DEVICE_LOG = 0x9904,
|
||||
SANE_OPT_ID_USER_NAME = 0x9905,
|
||||
SANE_OPT_ID_USER_PASSWORD = 0x9906,
|
||||
};
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// 属性相关
|
||||
#include "sane.h"
|
||||
#include <math.h>
|
||||
|
||||
#define MAX_STRING_LEN 256
|
||||
#define IS_DOUBLE_EQUAL(a, b) fabs((a) - (b)) < .000001
|
||||
#define IS_PTR_NUMBER(ptr) (((unsigned long long)(ptr)) < 0x10000)
|
||||
|
||||
#define CAPABILITY_ORDINARY (SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT)
|
||||
#define CAPABILITY_READONLY SANE_CAP_SOFT_DETECT
|
||||
|
@ -440,6 +121,9 @@ enum sane_option_id
|
|||
cap |= can_read ? SANE_CAP_SOFT_DETECT | CAPABILITY_ORDINARY : CAPABILITY_ORDINARY;\
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// 接口
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
@ -920,17 +604,4 @@ extern "C" {
|
|||
}
|
||||
#endif
|
||||
|
||||
//#include <string>
|
||||
//
|
||||
//template<typename ... Args>
|
||||
//std::string format_string(int level, const char* fmt, Args ... args)
|
||||
//{
|
||||
// size_t size = snprintf(nullptr, 0, fmt, args ...) + 2;
|
||||
// std::string str(size);
|
||||
//
|
||||
// snprintf(&str[0], size, fmt, args ...);
|
||||
//
|
||||
// return std::move(str);
|
||||
//}
|
||||
|
||||
#endif /* sane_ex_h */
|
||||
|
|
|
@ -0,0 +1,320 @@
|
|||
// sane option names && fixed-id definitions
|
||||
//
|
||||
// Date: 2024-01-31
|
||||
#pragma once
|
||||
|
||||
#define SANE_OPT_NAME(name) SANE_STD_OPT_NAME_##name
|
||||
#define SANE_OPT_FIXED_ID(id) SANE_OPT_ID_##id
|
||||
#define MAX_OPT_NAME_LEN 64
|
||||
#define JSON_SANE_TYPE_BOOL "bool"
|
||||
#define JSON_SANE_TYPE_INT "int"
|
||||
#define JSON_SANE_TYPE_FIXED "float"
|
||||
#define JSON_SANE_TYPE_STRING "string"
|
||||
#define JSON_SANE_TYPE_GROUP "group"
|
||||
#define JSON_SANE_TYPE_BUTTON "button"
|
||||
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Names ...
|
||||
//
|
||||
// PART I: 参数类型与华高一致,可直接通过改name字段为标准值实现
|
||||
#define SANE_STD_OPT_NAME_RESTORE "restore" // OPTION_TITLE_HFMRSZ
|
||||
#define SANE_STD_OPT_NAME_HELP "help" // OPTION_TITLE_BZ
|
||||
#define SANE_STD_OPT_NAME_IS_MULTI_OUT "is-multiout" // OPTION_TITLE_DLSC
|
||||
#define SANE_STD_OPT_NAME_MULTI_OUT_TYPE "multiout-type" // OPTION_TITLE_DLSCLX
|
||||
#define SANE_STD_OPT_NAME_COLOR_MODE "mode" // OPTION_TITLE_YSMS
|
||||
#define SANE_STD_OPT_NAME_BINARY_THRESHOLD "binary-threshold" // OPTION_TITLE_HBTXYZ
|
||||
#define SANE_STD_OPT_NAME_REVERSE_01 "reverse-bw" // OPTION_TITLE_HBTXFSSC
|
||||
#define SANE_STD_OPT_NAME_FILTER "filter" // OPTION_TITLE_HDHHBTX_CSYZQ
|
||||
#define SANE_STD_OPT_NAME_RID_MULTIOUT_RED "is-rid-multiout-red" // OPTION_TITLE_24WCSTX_DLSCCH
|
||||
#define SANE_STD_OPT_NAME_RID_ANSWER_SHEET_RED "is-rid-answer-sheet-red" // OPTION_TITLE_24WCSTX_DTKCH
|
||||
#define SANE_STD_OPT_NAME_ERASE_BACKGROUND "is-erase-bkg" // OPTION_TITLE_BJYC
|
||||
#define SANE_STD_OPT_NAME_BKG_COLOR_RANGE "bkg-color-range" // OPTION_TITLE_BJSCFDFW
|
||||
#define SANE_STD_OPT_NAME_SHARPEN "sharpen" // OPTION_TITLE_RHYMH
|
||||
#define SANE_STD_OPT_NAME_RID_MORR "is-rid-morr" // OPTION_TITLE_QCMW
|
||||
#define SANE_STD_OPT_NAME_RID_GRID "is-rid-grid" // OPTION_TITLE_CWW
|
||||
#define SANE_STD_OPT_NAME_ERROR_EXTENSION "is-err-extension" // OPTION_TITLE_CWKS
|
||||
#define SANE_STD_OPT_NAME_NOISE_OPTIMIZE "is-noise-optimize" // OPTION_TITLE_HBTXZDYH
|
||||
#define SANE_STD_OPT_NAME_NOISE_SIZE "noise-size" // OPTION_TITLE_ZDYHCC
|
||||
#define SANE_STD_OPT_NAME_PAPER "paper" // OPTION_TITLE_ZZCC
|
||||
#define SANE_STD_OPT_NAME_PAPER_W "paper-w" // 纸张宽度
|
||||
#define SANE_STD_OPT_NAME_PAPER_H "paper-h" // 纸张高度
|
||||
#define SANE_STD_OPT_NAME_LATERAL "lateral" // 纸张横向标志
|
||||
#define SANE_STD_OPT_NAME_CUSTOM_AREA "is-custom-area" // OPTION_TITLE_ZDYSMQY
|
||||
#define SANE_STD_OPT_NAME_CUSTOM_AREA_LEFT "tl-x" // OPTION_TITLE_SMQYZCmm
|
||||
#define SANE_STD_OPT_NAME_CUSTOM_AREA_RIGHT "br-x" // OPTION_TITLE_SMQYYCmm
|
||||
#define SANE_STD_OPT_NAME_CUSTOM_AREA_TOP "tl-y" // OPTION_TITLE_SMQYSCmm
|
||||
#define SANE_STD_OPT_NAME_CUSTOM_AREA_BOTTOM "br-y" // OPTION_TITLE_SMQYXCmm
|
||||
#define SANE_STD_OPT_NAME_SIZE_CHECK "is-size-check" // OPTION_TITLE_CCJC
|
||||
#define SANE_STD_OPT_NAME_PAGE "page" // OPTION_TITLE_SMYM
|
||||
#define SANE_STD_OPT_NAME_DISCARD_BLANK_SENS "blank-sensitivity" // OPTION_TITLE_TGKBYLMD
|
||||
#define SANE_STD_OPT_NAME_RESOLUTION "resolution" // OPTION_TITLE_FBL
|
||||
#define SANE_STD_OPT_NAME_TIME_TO_SLEEP "time-to-sleep" // OPTION_TITLE_XMSJ
|
||||
#define SANE_STD_OPT_NAME_IMAGE_QUALITY "image-quality" // OPTION_TITLE_HZ
|
||||
#define SANE_STD_OPT_NAME_EXCHANGE "is-exchange" // OPTION_TITLE_JHZFM
|
||||
#define SANE_STD_OPT_NAME_SPLIT "is-split" // OPTION_TITLE_TXCF
|
||||
#define SANE_STD_OPT_NAME_ANTI_SKEW "is-anti-skew" // OPTION_TITLE_ZDJP
|
||||
#define SANE_STD_OPT_NAME_IS_CUSTOM_GAMMA "is-custom-gamma" // OPTION_TITLE_QYSDQX
|
||||
#define SANE_STD_OPT_NAME_GAMMA "gamma" // OPTION_TITLE_JMZ
|
||||
#define SANE_STD_OPT_NAME_CUSTOM_GAMMA "custom-gamma" // OPTION_TITLE_CUSTOM_JMZ; data - SANE_Gamma*
|
||||
#define SANE_STD_OPT_NAME_GRAY_GAMMA "gray-gamma-table"
|
||||
#define SANE_STD_OPT_NAME_COLOR_GAMMA "color-gamma-table"
|
||||
#define SANE_STD_OPT_NAME_RED_GAMMA "red-gamma-table"
|
||||
#define SANE_STD_OPT_NAME_GREEN_GAMMA "green-gamma-table"
|
||||
#define SANE_STD_OPT_NAME_BLUE_GAMMA "blue-gamma-table"
|
||||
#define SANE_STD_OPT_NAME_BRIGHTNESS "brightness" // OPTION_TITLE_LDZ
|
||||
#define SANE_STD_OPT_NAME_CONTRAST "contrast" // OPTION_TITLE_DBD
|
||||
#define SANE_STD_OPT_NAME_IS_PHOTO_MODE "is-photo-mode" // OPTION_TITLE_ZPMS
|
||||
#define SANE_STD_OPT_NAME_ERASE_BLACK_FRAME "is-erase-black-frame" // OPTION_TITLE_XCHK
|
||||
#define SANE_STD_OPT_NAME_DARK_SAMPLE "is-dark-sample" // OPTION_TITLE_SSYZ
|
||||
#define SANE_STD_OPT_NAME_THRESHOLD "threshold" // OPTION_TITLE_YZ
|
||||
#define SANE_STD_OPT_NAME_ANTI_NOISE_LEVEL "anti-noise-level" // OPTION_TITLE_BJKZDJ
|
||||
#define SANE_STD_OPT_NAME_MARGIN "margin" // OPTION_TITLE_BYSJ
|
||||
#define SANE_STD_OPT_NAME_FILL_BKG_MODE "bkg-fill-mode" // OPTION_TITLE_BJTCFS
|
||||
#define SANE_STD_OPT_NAME_IS_ANTI_PERMEATE "is-anti-permeate" // OPTION_TITLE_FZST
|
||||
#define SANE_STD_OPT_NAME_ANTI_PERMEATE_LEVEL "permeate-level" // OPTION_TITLE_FZSTDJ
|
||||
#define SANE_STD_OPT_NAME_RID_HOLE "is-rid-hole" // OPTION_TITLE_CKYC
|
||||
#define SANE_STD_OPT_NAME_HOLE_THRESHOLD "hole-threshold" //
|
||||
#define SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE "search-hole-range" // OPTION_TITLE_CKSSFWZFMBL
|
||||
#define SANE_STD_OPT_NAME_RID_HOLE_L "is-rid-hole-l" // OPTION_TITLE_CKYCZC
|
||||
#define SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_L "search-hole-range-l" // OPTION_TITLE_ZCCKSSFWZFMBL
|
||||
#define SANE_STD_OPT_NAME_RID_HOLE_R "is-rid-hole-r" // OPTION_TITLE_CKYCYC
|
||||
#define SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_R "search-hole-range-r" // OPTION_TITLE_YCCKSSFWZFMBL
|
||||
#define SANE_STD_OPT_NAME_RID_HOLE_T "is-rid-hole-t" // OPTION_TITLE_CKYCSC
|
||||
#define SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_T "search-hole-range-t" // OPTION_TITLE_SCCKSSFWZFMBL
|
||||
#define SANE_STD_OPT_NAME_RID_HOLE_B "is-rid-hole-b" // OPTION_TITLE_CKYCXC
|
||||
#define SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_B "search-hole-range-b" // OPTION_TITLE_XCCKSSFWZFMBL
|
||||
#define SANE_STD_OPT_NAME_IS_FILL_COLOR "is-fill-color" // OPTION_TITLE_SCTC
|
||||
#define SANE_STD_OPT_NAME_IS_ULTROSONIC_CHECK "is-ultrosonic" // OPTION_TITLE_CSBJC
|
||||
#define SANE_STD_OPT_NAME_DOUBLE_CHECK "double-chk"
|
||||
#define SANE_STD_OPT_NAME_DOUBLE_FEED_HANDLE "double-feed" // OPTION_TITLE_SZTPCL
|
||||
#define SANE_STD_OPT_NAME_IS_CHECK_STAPLE "is-staple" // OPTION_TITLE_ZDJC
|
||||
#define SANE_STD_OPT_NAME_SCAN_MODE "scan-mode" // OPTION_TITLE_SMZS
|
||||
#define SANE_STD_OPT_NAME_SCAN_COUNT "scan-count" // OPTION_TITLE_SMSL
|
||||
#define SANE_STD_OPT_NAME_TEXT_DIRECTION "direction" // OPTION_TITLE_WGFX
|
||||
#define SANE_STD_OPT_NAME_IS_ROTATE_BKG_180 "is-rotate-bkg-180" // OPTION_TITLE_BMXZ180
|
||||
#define SANE_STD_OPT_NAME_IS_CHECK_DOG_EAR "is-check-dog-ear" // OPTION_TITLE_ZJJC
|
||||
#define SANE_STD_OPT_NAME_DOG_EAR_SIZE "dog-ear-size" // OPTION_TITLE_ZJDX
|
||||
#define SANE_STD_OPT_NAME_IS_CHECK_ASKEW "is-check-askew" // OPTION_TITLE_WXJC
|
||||
#define SANE_STD_OPT_NAME_ASKEW_RANGE "askew-range" // OPTION_TITLE_WXRRD
|
||||
#define SANE_STD_OPT_NAME_FEED_STRENGTH "feed-strength" // OPTION_TITLE_FZQD
|
||||
#define SANE_STD_OPT_NAME_IS_AUTO_FEED_STRENGTH "is-auto-strength" // OPTION_TITLE_ZDFZQD
|
||||
#define SANE_STD_OPT_NAME_FEED_STRENGTH_VALUE "feed-strength-value" // OPTION_TITLE_JZSBL
|
||||
#define SANE_STD_OPT_NAME_WAIT_TO_SCAN "is-wait-scan" // OPTION_TITLE_DZSM
|
||||
#define SANE_STD_OPT_NAME_FOLD_TYPE "fold-type" // OPTION_TITLE_DZMS
|
||||
#define SANE_STD_OPT_NAME_COLOR_CORRECTION "color-correction" // OPTION_TITLE_SPJZ
|
||||
#define SANE_STD_OPT_NAME_WAIT_SCAN_EXIT "wait-scan-exit" // OPTION_TITLE_DZSMTCSJ
|
||||
#define SANE_STD_OPT_NAME_DISCARDBLANK "discardblank" // OPTION_TITLE_TGKBY
|
||||
|
||||
#define SANE_STD_OPT_NAME_DEVICE_NAME "dev-name" // 设备名称
|
||||
#define SANE_STD_OPT_NAME_DEVICE_VID "dev-vid" // 设备VID
|
||||
#define SANE_STD_OPT_NAME_DEVICE_PID "dev-pid" // 设备PID
|
||||
#define SANE_STD_OPT_NAME_DEVICE_MODEL "dev-model" // 设备系列
|
||||
#define SANE_STD_OPT_NAME_DEV_NAME SANE_STD_OPT_NAME_DEVICE_NAME
|
||||
#define SANE_STD_OPT_NAME_VID SANE_STD_OPT_NAME_DEVICE_VID
|
||||
#define SANE_STD_OPT_NAME_PID SANE_STD_OPT_NAME_DEVICE_PID
|
||||
#define SANE_STD_OPT_NAME_DEV_FAMILY SANE_STD_OPT_NAME_DEVICE_MODEL
|
||||
#define SANE_STD_OPT_NAME_DEVICE_TYPE "dev-type" // 设备型号
|
||||
#define SANE_STD_OPT_NAME_DEVICE_SERIAL_NO "dev-sn" // 设备序列号
|
||||
#define SANE_STD_OPT_NAME_FIRMWARE_VERSION "fmw-ver" // 固件版本
|
||||
#define SANE_STD_OPT_NAME_DEVICE_IP_ADDR "ip-addr" // 设备IP地址
|
||||
#define SANE_STD_OPT_NAME_DEVICE_MAC_ADDR "mac-addr" // 设备MAC地址
|
||||
#define SANE_STD_OPT_NAME_ROLLER_COUNT "roll-cnt" // 滚轴张数
|
||||
#define SANE_STD_OPT_NAME_TOTAL_COUNT "total-cnt" // 历史总张数
|
||||
#define SANE_STD_OPT_NAME_HISTORY_COUNT SANE_STD_OPT_NAME_TOTAL_COUNT
|
||||
#define SANE_STD_OPT_NAME_GET_DEVS_L0G "devs-log" // 获取设备日志
|
||||
#define SANE_STD_OPT_NAME_DRIVER_VERSION "drv-ver" // 设备VID
|
||||
#define SANE_STD_OPT_NAME_MANUFACTURER "company" // 公司名称
|
||||
#define SANE_STD_OPT_NAME_COPYRIGHT "copyright" // 版权
|
||||
#define SANE_STD_OPT_NAME_CO_URL "co-url" // 公司网址
|
||||
#define SANE_STD_OPT_NAME_CO_TEL "co-tel" // 公司电话
|
||||
#define SANE_STD_OPT_NAME_CO_ADDR "co-addr" // 公司地址
|
||||
#define SANE_STD_OPT_NAME_CO_GPS "co-gps" // 公司地图定位
|
||||
#define SANE_STD_OPT_NAME_USER_NAME "user-name" // 登录账号
|
||||
#define SANE_STD_OPT_NAME_USER_PASSWORD "user-pwd" // 登录密码
|
||||
#define SANE_STD_OPT_NAME_LOGIN "login" // 登录
|
||||
#define SANE_STD_OPT_NAME_LOGOUT "logout" // 登出
|
||||
#define SANE_STD_OPT_NAME_DRIVER_LOG "drv-log" // 驱动日志
|
||||
#define SANE_STD_OPT_NAME_DEVICE_LOG SANE_STD_OPT_NAME_GET_DEVS_L0G
|
||||
#define SANE_STD_OPT_NAME_ROLLER_LIFE "roller-life" // 滚轴最大寿命(过纸张数)
|
||||
#define SANE_STD_OPT_NAME_LANGUAGE "language" // 语言
|
||||
#define SANE_STD_OPT_NAME_MOTOR_VER "motor-ver" // 电机固件版本, data = char*
|
||||
#define SANE_STD_OPT_NAME_FPGA_VER "fpga-ver" // CIS控制器(FPGA)版本, data = char*
|
||||
#define SANE_STD_OPT_NAME_TRANSFORM_IMAGE_FORMAT "trans-img-fmt" // 图像格式转换, data - SANE_ImageFormatConvert*, dst.data 调用SANE_STD_OPT_NAME_FREE_BUFFER释放
|
||||
#define SANE_STD_OPT_NAME_FREE_BUFFER "free-buf" // 释放由驱动返回的内存, data - (void**)&buf
|
||||
#define SANE_STD_OPT_NAME_PAPER_ON "paper-on" // check whether paper is on
|
||||
#define SANE_STD_OPT_NAME_INITIAL_BOOT_TIME "initial-boot-time" // 设备的初始开机时间
|
||||
#define SANE_STD_OPT_NAME_DUMP_IMG "dump-img" // 是否输出算法各阶段中间图像
|
||||
#define SANE_STD_OPT_NAME_DUMP_IMG_PATH "dump-path" // 中间图像输出路径
|
||||
#define SANE_STD_OPT_NAME_CIS_LENGTH "cis-len" // CIS 长度(采集图像的最大宽度)
|
||||
#define SANE_STD_OPT_NAME_CIS_REBUILD "rebuild" // 复原从CIS出来的数据流为原始图像
|
||||
|
||||
// PART II: 参数类型与华高不一致,需要通过“hgsane”组件在中间转换
|
||||
#define SANE_STD_OPT_NAME_PAGE_W "page-width" // OPTION_TITLE_ZZCC
|
||||
#define SANE_STD_OPT_NAME_PAGE_H "page-height" // OPTION_TITLE_ZZCC
|
||||
#define SANE_STD_OPT_NAME_DUPLEX "duplex" // OPTION_TITLE_SMYM
|
||||
// END for sane-standard-option-name defined by third-app
|
||||
//
|
||||
|
||||
// PART III: inner option on device
|
||||
#define SANE_STD_OPT_NAME_CIS_MODE "cis-mode"
|
||||
#define SANE_STD_OPT_NAME_CIS_DPI "cis-dpi"
|
||||
#define SANE_STD_OPT_NAME_Y_DPI "y-dpi"
|
||||
#define SANE_STD_OPT_NAME_CIS_BAUD "baud"
|
||||
#define SANE_STD_OPT_NAME_CIS_DELAY "act-after"
|
||||
#define SANE_STD_OPT_NAME_CIS_FRAME_H "frame-h"
|
||||
#define SANE_STD_OPT_NAME_CIS_SAMPLE "sample"
|
||||
#define SANE_STD_OPT_NAME_CIS_SP "cis-sp"
|
||||
#define SANE_STD_OPT_NAME_CIS_LED "cis-led"
|
||||
#define SANE_STD_OPT_NAME_CIS_REBUILD "cis-rebuild"
|
||||
#define SANE_STD_OPT_NAME_CIS_STRETCH "stretch"
|
||||
#define SANE_STD_OPT_NAME_CIS_EXPO_FB "expo-fb"
|
||||
#define SANE_STD_OPT_NAME_CIS_EXPO_FG "expo-fg"
|
||||
#define SANE_STD_OPT_NAME_CIS_EXPO_FR "expo-fr"
|
||||
#define SANE_STD_OPT_NAME_CIS_EXPO_BB "expo-bb"
|
||||
#define SANE_STD_OPT_NAME_CIS_EXPO_BG "expo-bg"
|
||||
#define SANE_STD_OPT_NAME_CIS_EXPO_BR "expo-br"
|
||||
#define SANE_STD_OPT_NAME_CIS_GAIN_FRONT "gain-f"
|
||||
#define SANE_STD_OPT_NAME_CIS_GAIN_BACK "gain-b"
|
||||
#define SANE_STD_OPT_NAME_CIS_OFFSET_FRONT "off-f"
|
||||
#define SANE_STD_OPT_NAME_CIS_OFFSET_BACK "off-b"
|
||||
#define SANE_STD_OPT_NAME_CIS_STRETCH_H "stretch-h"
|
||||
#define SANE_STD_OPT_NAME_CIS_STRETCH_V "stretch-v"
|
||||
#define SANE_STD_OPT_NAME_MOTOR_SPEED "motor-speed"
|
||||
#define SANE_STD_OPT_NAME_COLOR_CORRECT "clr-correct"
|
||||
#define SANE_STD_OPT_NAME_LUT_FILE "lut-file"
|
||||
#define SANE_STD_OPT_NAME_PHASE_FRONT "phase-f"
|
||||
#define SANE_STD_OPT_NAME_PHASE_BACK "phase-b"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// fixed-ids ...
|
||||
//
|
||||
// 借鉴TWAIN协议固定ID的做法,定义SANE属性的固定ID - 这里与TWAIN中的ID保持一致,以方便TWAIN的调用
|
||||
enum sane_option_id
|
||||
{
|
||||
SANE_OPT_ID_BASE = 0x8800,
|
||||
SANE_OPT_ID_IS_MULTI_OUT = 0x8801,
|
||||
SANE_OPT_ID_MULTI_OUT_TYPE = 0x8802,
|
||||
SANE_OPT_ID_COLOR_MODE = 0x8803,
|
||||
SANE_OPT_ID_FILTER = 0x8804,
|
||||
SANE_OPT_ID_RID_MULTIOUT_RED = 0x8805,
|
||||
SANE_OPT_ID_RID_ANSWER_SHEET_RED = 0x8806,
|
||||
SANE_OPT_ID_ERASE_BACKGROUND = 0x8807,
|
||||
SANE_OPT_ID_BKG_COLOR_RANGE = 0x8808,
|
||||
SANE_OPT_ID_SHARPEN = 0x8809,
|
||||
SANE_OPT_ID_RID_MORR = 0x880A,
|
||||
SANE_OPT_ID_RID_GRID = 0x880B,
|
||||
SANE_OPT_ID_ERROR_EXTENSION = 0x880C,
|
||||
SANE_OPT_ID_NOISE_OPTIMIZE = 0x880D,
|
||||
SANE_OPT_ID_NOISE_SIZE = 0x880E,
|
||||
SANE_OPT_ID_PAPER = 0x880F,
|
||||
SANE_OPT_ID_CUSTOM_AREA = 0x8810,
|
||||
SANE_OPT_ID_CUSTOM_AREA_LEFT = 0x8811,
|
||||
SANE_OPT_ID_CUSTOM_AREA_RIGHT = 0x8812,
|
||||
SANE_OPT_ID_CUSTOM_AREA_TOP = 0x8813,
|
||||
SANE_OPT_ID_CUSTOM_AREA_BOTTOM = 0x8814,
|
||||
SANE_OPT_ID_SIZE_CHECK = 0x8815,
|
||||
SANE_OPT_ID_PAGE = 0x8816,
|
||||
SANE_OPT_ID_DISCARD_BLANK_SENS = 0x8817,
|
||||
SANE_OPT_ID_RESOLUTION = 0x8818,
|
||||
SANE_OPT_ID_IMAGE_QUALITY = 0x8819,
|
||||
SANE_OPT_ID_EXCHANGE = 0x881A,
|
||||
SANE_OPT_ID_SPLIT = 0x881B,
|
||||
SANE_OPT_ID_ANTI_SKEW = 0x881C,
|
||||
SANE_OPT_ID_IS_CUSTOM_GAMMA = 0x881D,
|
||||
SANE_OPT_ID_BRIGHTNESS = 0x881E,
|
||||
SANE_OPT_ID_CONTRAST = 0x881F,
|
||||
SANE_OPT_ID_GAMMA = 0x8820,
|
||||
SANE_OPT_ID_ERASE_BLACK_FRAME = 0x8821,
|
||||
SANE_OPT_ID_DARK_SAMPLE = 0x8822,
|
||||
SANE_OPT_ID_THRESHOLD = 0x8823,
|
||||
SANE_OPT_ID_ANTI_NOISE_LEVEL = 0x8824,
|
||||
SANE_OPT_ID_MARGIN = 0x8825,
|
||||
SANE_OPT_ID_FILL_BKG_MODE = 0x8826,
|
||||
SANE_OPT_ID_IS_ANTI_PERMEATE = 0x8827,
|
||||
SANE_OPT_ID_ANTI_PERMEATE_LEVEL = 0x8828,
|
||||
SANE_OPT_ID_RID_HOLE = 0x8829,
|
||||
SANE_OPT_ID_SEARCH_HOLE_RANGE = 0x882A,
|
||||
SANE_OPT_ID_IS_FILL_COLOR = 0x882B,
|
||||
SANE_OPT_ID_IS_ULTROSONIC_CHECK = 0x882C,
|
||||
SANE_OPT_ID_IS_CHECK_STAPLE = 0x882D,
|
||||
SANE_OPT_ID_SCAN_MODE = 0x882E,
|
||||
SANE_OPT_ID_SCAN_COUNT = 0x882F,
|
||||
SANE_OPT_ID_TEXT_DIRECTION = 0x8830,
|
||||
SANE_OPT_ID_IS_ROTATE_BKG_180 = 0x8831,
|
||||
SANE_OPT_ID_IS_CHECK_DOG_EAR = 0x8832,
|
||||
SANE_OPT_ID_DOG_EAR_SIZE = 0x8833,
|
||||
SANE_OPT_ID_IS_CHECK_ASKEW = 0x8834,
|
||||
SANE_OPT_ID_ASKEW_RANGE = 0x8835,
|
||||
SANE_OPT_ID_BINARY_THRESHOLD = 0x8836,
|
||||
SANE_OPT_ID_IS_PHOTO_MODE = 0x8837,
|
||||
SANE_OPT_ID_DOUBLE_FEED_HANDLE = 0x8838,
|
||||
SANE_OPT_ID_WAIT_TO_SCAN = 0x8839,
|
||||
SANE_OPT_ID_FEED_STRENGTH = 0x883A,
|
||||
SANE_OPT_ID_TIME_TO_SLEEP = 0x883B,
|
||||
SANE_OPT_ID_IS_AUTO_FEED_STRENGTH = 0x883C,
|
||||
SANE_OPT_ID_FEED_STRENGTH_VALUE = 0x883D,
|
||||
SANE_OPT_ID_REVERSE_01 = 0x883E,
|
||||
SANE_OPT_ID_RID_HOLE_L = 0x883F,
|
||||
SANE_OPT_ID_SEARCH_HOLE_RANGE_L = 0x8840,
|
||||
SANE_OPT_ID_RID_HOLE_R = 0x8841,
|
||||
SANE_OPT_ID_SEARCH_HOLE_RANGE_R = 0x8842,
|
||||
SANE_OPT_ID_RID_HOLE_T = 0x8843,
|
||||
SANE_OPT_ID_SEARCH_HOLE_RANGE_T = 0x8844,
|
||||
SANE_OPT_ID_RID_HOLE_B = 0x8845,
|
||||
SANE_OPT_ID_SEARCH_HOLE_RANGE_B = 0x8846,
|
||||
SANE_OPT_ID_FOLD_TYPE = 0x8847,
|
||||
SANE_OPT_ID_COLOR_CORRECTION = 0x8848,
|
||||
SANE_OPT_ID_HISTORY_COUNT = 0x8849,
|
||||
SANE_OPT_ID_DRIVER_VERSION = 0x884A,
|
||||
SANE_OPT_ID_MANUFACTURER = 0x884B,
|
||||
SANE_OPT_ID_COPYRIGHT = 0x884C,
|
||||
SANE_OPT_ID_CO_URL = 0x884D,
|
||||
SANE_OPT_ID_CO_TEL = 0x884E,
|
||||
SANE_OPT_ID_CO_ADDR = 0x884F,
|
||||
SANE_OPT_ID_CO_GPS = 0x8850,
|
||||
SANE_OPT_ID_HELP = 0x8851,
|
||||
SANE_OPT_ID_VID = 0x8852,
|
||||
SANE_OPT_ID_PID = 0x8853,
|
||||
SANE_OPT_ID_DEV_NAME = 0x8854,
|
||||
SANE_OPT_ID_DEV_FAMILY = 0x8855,
|
||||
SANE_OPT_ID_DEVICE_SERIAL_NO = 0x8856,
|
||||
SANE_OPT_ID_FIRMWARE_VERSION = 0x8857,
|
||||
SANE_OPT_ID_DEVICE_IP_ADDR = 0x8858,
|
||||
SANE_OPT_ID_DEVICE_MAC_ADDR = 0x8859,
|
||||
SANE_OPT_ID_CUSTOM_GAMMA = 0x885A, // data: SANE_Gamma*
|
||||
SANE_OPT_ID_ROLLER_LIFE = 0x885B, // data: uint32_t*
|
||||
SANE_OPT_ID_LANGUAGE = 0x885C, // data: char*
|
||||
SANE_OPT_ID_MOTOR_VER = 0x885D, // 电机固件版本, data - char*
|
||||
SANE_OPT_ID_TRANSFORM_IMAGE_FORMAT = 0x885E,// 图像格式转换, data - SANE_ImageFormatConvert*, dst.data 调用SANE_STD_OPT_NAME_FREE_BUFFER释放
|
||||
SANE_OPT_ID_FREE_BUFFER = 0x885F, // 释放由驱动返回的内存, data - (void**)&buf
|
||||
SANE_OPT_ID_PAPER_ON = 0x8860, // 是否有纸张, data - SANE_Bool*
|
||||
|
||||
SANE_OPT_ID_GRAY_GAMMA = 0x8861, // gray-gamma-table
|
||||
SANE_OPT_ID_COLOR_GAMMA = 0x8862, // color-gamma-table
|
||||
SANE_OPT_ID_RED_GAMMA = 0x8863, // red-gamma-table
|
||||
SANE_OPT_ID_GREEN_GAMMA = 0x8864, // green-gamma-table
|
||||
SANE_OPT_ID_BLUE_GAMMA = 0x8865, // blue-gamma-table
|
||||
SANE_OPT_ID_INITIAL_BOOT_TIME = 0x8866,
|
||||
SANE_OPT_ID_DISCARDBLANK = 0x8867,
|
||||
SANE_OPT_ID_WAIT_SCAN_EXIT = 0x8868,
|
||||
SANE_OPT_ID_RESTORE = 0x8869,
|
||||
SANE_OPT_ID_PAPER_W = 0x886A, // 纸张宽度,单位为mm
|
||||
SANE_OPT_ID_PAPER_H = 0x886B, // 纸张高度,单位为mm
|
||||
SANE_OPT_ID_LATERAL = 0x886C, // 纸张横向标志,bool
|
||||
|
||||
SANE_OPT_ID_LOGIN = 0x9900,
|
||||
SANE_OPT_ID_LOGOUT = 0x9901,
|
||||
SANE_OPT_ID_ROLLER_COUNT = 0x9902,
|
||||
SANE_OPT_ID_DRIVER_LOG = 0x9903,
|
||||
SANE_OPT_ID_DEVICE_LOG = 0x9904,
|
||||
SANE_OPT_ID_USER_NAME = 0x9905,
|
||||
SANE_OPT_ID_USER_PASSWORD = 0x9906,
|
||||
};
|
|
@ -100,23 +100,23 @@ int user_priv::set_value(const char* name, void* val)
|
|||
{
|
||||
int ret = SCANNER_ERR_OK;
|
||||
|
||||
if(strcmp(name, SANE_FULL_NAME(USER_NAME)) == 0)
|
||||
if(strcmp(name, SANE_OPT_NAME(USER_NAME)) == 0)
|
||||
{
|
||||
name_ = (char*)val;
|
||||
priv_ = USER_PRIVILEGE_COMMON;
|
||||
}
|
||||
else if(strcmp(name, SANE_FULL_NAME(USER_PASSWORD)) == 0)
|
||||
else if(strcmp(name, SANE_OPT_NAME(USER_PASSWORD)) == 0)
|
||||
{
|
||||
pwd_ = (char*)val;
|
||||
priv_ = USER_PRIVILEGE_COMMON;
|
||||
}
|
||||
else if(strcmp(name, SANE_FULL_NAME(DEVICE_SERIAL_NO)) == 0)
|
||||
else if(strcmp(name, SANE_OPT_NAME(DEVICE_SERIAL_NO)) == 0)
|
||||
{
|
||||
dev_sn_ = (char*)val;
|
||||
utils::to_log(LOG_LEVEL_DEBUG, "set user device SN: %s\n", dev_sn_.c_str());
|
||||
priv_ = USER_PRIVILEGE_COMMON;
|
||||
}
|
||||
else if(strcmp(name, SANE_FULL_NAME(LOGIN)) == 0)
|
||||
else if(strcmp(name, SANE_OPT_NAME(LOGIN)) == 0)
|
||||
{
|
||||
// login ...
|
||||
if(login_times_.count(name) == 0)
|
||||
|
@ -140,7 +140,7 @@ int user_priv::set_value(const char* name, void* val)
|
|||
}
|
||||
}
|
||||
}
|
||||
else if(strcmp(name, SANE_FULL_NAME(LOGOUT)) == 0)
|
||||
else if(strcmp(name, SANE_OPT_NAME(LOGOUT)) == 0)
|
||||
{
|
||||
name_ = pwd_ = "";
|
||||
reset_privilege();
|
||||
|
|
|
@ -60,8 +60,8 @@ add_packagedirs("sdk")
|
|||
add_defines("BUILD_AS_DEVICE")
|
||||
add_defines("VER_MAIN=2")
|
||||
add_defines("VER_FAMILY=200")
|
||||
add_defines("VER_DATE=20240130")
|
||||
add_defines("VER_BUILD=20")
|
||||
add_defines("VER_DATE=20240131")
|
||||
add_defines("VER_BUILD=1")
|
||||
|
||||
target("conf")
|
||||
set_kind("phony")
|
||||
|
|
Loading…
Reference in New Issue