From 64d05ae35c620027c6781ca5ae77cd9f491f2885 Mon Sep 17 00:00:00 2001 From: gb <741021719@qq.com> Date: Fri, 20 Oct 2023 15:21:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=8D=A2sane/scanner/lang=E4=B8=89?= =?UTF-8?q?=E4=B8=AA=E6=A8=A1=E5=9D=97=E5=90=8D=E7=A7=B0=EF=BC=8C=E9=81=BF?= =?UTF-8?q?=E5=85=8D=E4=B8=8E=E7=AC=AC=E4=B8=89=E6=96=B9APP=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E5=90=8D=E7=A7=B0=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hgdriver/hgdev/hg_ipc.h | 36 +----- hgdriver/hgdev/hg_scanner.cpp | 36 +++++- hgdriver/hgdev/hg_scanner.h | 18 +-- hgdriver/hgdev/hg_scanner_239.cpp | 8 +- hgdriver/hgdev/hg_scanner_300.cpp | 4 +- hgdriver/hgdev/image_process.cpp | 4 +- hgdriver/hgdev/scanner_manager.cpp | 8 +- hgdriver/wrapper/CMakeLists.txt | 6 +- hgdriver/wrapper/huagaoxxx_warraper_ex.cpp | 2 +- hgsane/CMakeLists.txt | 2 +- sdk/hginclude/huagaoxxx_warraper_ex.h | 4 +- sdk/hginclude/utils.cpp | 37 ++++++ sdk/hginclude/utils.h | 27 +++++ twain/ds/huagaods.cpp | 44 ++++--- twain/ds/s2t_api.h | 4 +- twain/ds/sane_helper.cpp | 12 +- twain/ds/scanned_img.cpp | 31 +---- twain/ds/scanned_img.h | 18 +-- twain/ds/scanner.cpp | 135 ++------------------- twain/ds/scanner.h | 4 +- 20 files changed, 176 insertions(+), 264 deletions(-) diff --git a/hgdriver/hgdev/hg_ipc.h b/hgdriver/hgdev/hg_ipc.h index 5226fa5..ea4ee49 100644 --- a/hgdriver/hgdev/hg_ipc.h +++ b/hgdriver/hgdev/hg_ipc.h @@ -24,6 +24,8 @@ #include +#include + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // memory management ... void* allocate_memory(size_t bytes, const char* log_msg = ""); @@ -50,40 +52,6 @@ public: void set_debug_info(const char* info); }; -class refer -{ - volatile int ref_; - std::mutex mutex_; - -protected: - refer() : ref_(1) - {} - virtual ~refer() - {} - -public: - int add_ref(void) - { - std::lock_guard lock(mutex_); - - return ++ref_; - } - int release(void) - { - int ref = 0; - - { - std::lock_guard lock(mutex_); - ref = --ref_; - } - - if (ref == 0) - delete this; - - return ref; - } -}; - template class do_when_born_and_dead : public refer { diff --git a/hgdriver/hgdev/hg_scanner.cpp b/hgdriver/hgdev/hg_scanner.cpp index e7263e4..f5da6fc 100644 --- a/hgdriver/hgdev/hg_scanner.cpp +++ b/hgdriver/hgdev/hg_scanner.cpp @@ -167,6 +167,7 @@ hg_scanner::hg_scanner(ScannerSerial serial, const char* dev_name, usb_io* io, i , firmware_sup_double_img(false),firmware_sup_devs_lock_(false),firmware_sup_dpi_300(false),firmware_sup_dpi_600(false),firmware_sup_auto_speed_(false),firmware_sup_morr_(false) , firmware_sup_color_fill_(false),firmware_sup_history_cnt(false), is_discardblank(false) , setting_jsn_(new device_option()) + , auto_scan_restore_(false), auto_scan_prev_(is_auto_paper_scan) { #if !defined(_WIN32) && !defined(_WIN64) &&defined(x86_64) isx86_Advan_ = false; @@ -465,7 +466,7 @@ void hg_scanner::thread_image_handle(void) int hg_scanner::hg_version_init_handle() { int ret = SCANNER_ERR_OK; - string scanner_path = utils::get_module_full_path(SCANNER_DRIVER_PART_NAME); + string scanner_path = utils::get_module_full_path(MODULE_NAME_SCANNER); if (scanner_path.empty()) { return SCANNER_ERR_OUT_OF_RANGE; @@ -496,8 +497,8 @@ int hg_scanner::hg_version_init_handle() HGVersion_Free_ = (SDKHGVersion_Free_)dlsym(Dynamicopen_HGVersion_pHandle_, "HGVersion_DestroyMgr"); #else - //string scanner_path = utils::get_module_full_path(LIBNAME); - //scanner_path = scanner_path.substr(0, scanner_path.size() - strlen(LIBNAME)); + //string scanner_path = utils::get_module_full_path(MODULE_NAME_SCANNER); + //scanner_path = scanner_path.substr(0, scanner_path.size() - strlen(MODULE_NAME_SCANNER)); string HGVersionlib_path = scanner_path + HGVERSION_LIBNANE; wchar_t* Prclibbuffer = new wchar_t[HGVersionlib_path.length() + 1]; @@ -1533,10 +1534,34 @@ int hg_scanner::setting_scan_mode(void* data, long* len) if (strcmp(str.c_str(), from_default_language(OPTION_VALUE_SMZS_LXSM)) == 0) { scan_count_ = -1; + + // restore AutoScan ? + if (auto_scan_restore_) + { + long len = sizeof(auto_scan_prev_); + + setting_auto_paper_scan(&auto_scan_prev_, &len); + utils::to_log(LOG_LEVEL_DEBUG, "Restore 'AutoScan' to '%s' for user changes scan mode to '%s'\n" + , auto_scan_prev_ ? "true" : "false", str.c_str()); + } } else { scan_count_ = *(int*)setting_jsn_->get_option_value(SANE_STD_OPT_NAME_SCAN_COUNT, OPT_VAL_CURRENT).c_str(); + + // 智学网设置该参数时,程序取消待纸扫描 + if (!auto_scan_restore_) // 连续调用时,保留最初状态 + { + auto_scan_restore_ = auto_scan_prev_ = is_auto_paper_scan; + if (auto_scan_restore_) + { + bool v = false; + long len = sizeof(v); + setting_auto_paper_scan(&v, &len); + auto_scan_restore_ = true; + utils::to_log(LOG_LEVEL_DEBUG, "Disable 'AutoScan' for user changes scan mode to '%s'\n", str.c_str()); + } + } } utils::to_log(LOG_LEVEL_DEBUG, "set scanning pages to %d\n", scan_count_); @@ -1803,6 +1828,9 @@ int hg_scanner::setting_auto_pick_paper_threshold(void* data, long* len) } int hg_scanner::setting_auto_paper_scan(void* data, long* len) { + utils::to_log(LOG_LEVEL_DEBUG, "No 'AutoScan' restroing for setting_auto_paper_scan invoked.\n"); + + auto_scan_restore_ = false; is_auto_paper_scan = *((bool *)data); if (!firmware_sup_wait_paper_ && is_auto_paper_scan) { @@ -2259,7 +2287,7 @@ void hg_scanner::init_settings(const char* json_setting_text) int hg_scanner::init_settings(int pid) { char rel_path[80] = { 0 }; - std::string root(utils::get_module_full_path(SCANNER_DRIVER_PART_NAME)), jsn(""); + std::string root(utils::get_module_full_path(MODULE_NAME_SCANNER)), jsn(""); int ret = root.rfind(PATH_SEPARATOR[0]); if((size_t)ret++ == std::string::npos) diff --git a/hgdriver/hgdev/hg_scanner.h b/hgdriver/hgdev/hg_scanner.h index 0f38dfa..cbb87f1 100644 --- a/hgdriver/hgdev/hg_scanner.h +++ b/hgdriver/hgdev/hg_scanner.h @@ -309,6 +309,8 @@ protected: int feedmode_; // 分纸强度 int sleeptime_; // 睡眠时间 bool is_auto_paper_scan; // 待纸扫描 + bool auto_scan_prev_; // 保留待纸扫描程序改变状态之前的值 - 2023-10-16: 智学网根据扫描张数来打开或关闭待纸扫描 + bool auto_scan_restore_; // 是否需要恢复待纸扫描状态 - 2023-10-16: 智学网根据扫描张数来打开或关闭待纸扫描 bool size_check; // 尺寸检测 bool save_feedmode_type_; //保存分支强度狀態 @@ -407,14 +409,6 @@ protected: void adjust_filling_hole(LPSCANCONF conf); - enum thread_running - { - THREAD_RUNNING_IDLE = 0, - THREAD_RUNNING_USB = 1 << 0, - THREAD_RUNNING_IMAGE = 1 << 1, - }; - int is_running(void); // return thread_running - //////////////////////////////////////////////////////////////// // 新增自定义伽玛曲线及扫描区域属性 - 2022-05-05 bool custom_gamma_; // 为true时,应用custom_gamma_val_阵列调整图像色彩;为false时,保持原来的处理方式 @@ -453,6 +447,14 @@ public: bool is_online(void); void on_language_changed(void); + enum thread_running + { + THREAD_RUNNING_IDLE = 0, + THREAD_RUNNING_USB = 1 << 0, + THREAD_RUNNING_IMAGE = 1 << 1, + }; + int is_running(void); // return thread_running + public: virtual int start(void); virtual int get_image_info(SANE_Parameters* ii); diff --git a/hgdriver/hgdev/hg_scanner_239.cpp b/hgdriver/hgdev/hg_scanner_239.cpp index e6b5e03..10b7933 100644 --- a/hgdriver/hgdev/hg_scanner_239.cpp +++ b/hgdriver/hgdev/hg_scanner_239.cpp @@ -21,10 +21,10 @@ //static std::string jsontext6("t\":\"base\",\"readonly\":false,\"affect\":0,\"group\":\"imgproc\",\"visible\":true,\"field\":\"Common\",\"pos\":0,\"unit\":\"None\",\"title\":\" \\u9632\\u6b62\\u6e17\\u900f\\u7b49\\u7ea7\",\"desc\":\"\\u9009\\u62e9\\u9632\\u6b62\\u6e17\\u900f\\u7684\\u7b49\\u7ea7\",\"type\":\"string\",\"cur\":\"\\u8f83\\u5f31\",\"default\":\"\\u8f83\\u5f31\",\"size\":16,\"range\":[\"\\u5f31\",\"\\u8f83\\u5f31\",\"\\u4e00\\u822c\",\"\\u8f83\\u5f3a\",\"\\u5f3a\"],\"depend_or\":[\"is-anti-permeate==true\"]},\"is-rid-hole-l\":{\"cat\":\"base\",\"readonly\":false,\"affect\":0,\"group\":\"imgproc\",\"visible\":true,\"field\":\"Common\",\"pos\":0,\"unit\":\"None\",\"title\":\"\\u7a7f\\u5b54\\u79fb\\u9664\\u2014\\u5de6\\u4fa7\",\"desc\":\"\\u7a7f\\u5b54\\u5728\\u7eb8\\u5f20\\u4e0a\\u7684\\u5de6\\u4fa7\",\"type\":\"bool\",\"cur\":false,\"default\":false,\"size\":4},\"search-hole-range-l\":{\"cat\":\"base\",\"readonly\":false,\"affect\":0,\"group\":\"imgproc\",\"visible\":true,\"field\":\"Common\",\"pos\":0,\"unit\":\"None\",\"title\":\" \\u5de6\\u4fa7\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e45\\u9762\\u6bd4\\u4f8b\",\"desc\":\"\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e45\\u9762\\u6bd4\\u4f8b\",\"type\":\"float\",\"cur\":0.100000,\"default\":0.100000,\"size\":4,\"range\":[0.500000,0.050000,0.000000],\"depend_and\":[\"is-rid-hole-l==true\"]},\"is-rid-hole-r\":{\"cat\":\"base\",\"readonly\":false,\"affect\":0,\"group\":\"imgproc\",\"visible\":true,\"field\":\"Common\",\"pos\":0,\"unit\":\"None\",\"title\":\"\\u7a7f\\u5b54\\u79fb\\u9664\\u2014\\u53f3\\u4fa7\",\"desc\":\"\\u7a7f\\u5b54\\u5728\\u7eb8\\u5f20\\u4e0a\\u7684\\u53f3\\u4fa7\",\"type\":\"bool\",\"cur\":false,\"default\":false,\"size\":4},\"search-hole-range-r\":{\"cat\":\"base\",\"readonly\":false,\"affect\":0,\"group\":\"imgproc\",\"visible\":true,\"field\":\"Common\",\"pos\":0,\"unit\":\"None\",\"title\":\" \\u53f3\\u4fa7\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e45\\u9762\\u6bd4\\u4f8b\",\"desc\":\"\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e45\\u9762\\u6bd4\\u4f8b\",\"type\":\"float\",\"cur\":0.100000,\"default\":0.100000,\"size\":4,\"range\":[0.500000,0.050000,0.000000],\"depend_and\":[\"is-rid-hole-r==true\"]},\"is-rid-hole-t\":{\"cat\":\"base\",\"readonly\":false,\"affect\":0,\"group\":\"imgproc\",\"visible\":true,\"field\":\"Common\",\"pos\":0,\"unit\":\"None\",\"title\":\"\\u7a7f\\u5b54\\u79fb\\u9664\\u2014\\u4e0a\\u4fa7\",\"desc\":\"\\u7a7f\\u5b54\\u5728\\u7eb8\\u5f20\\u7684\\u4e0a\\u90e8\",\"type\":\"bool\",\"cur\":false,\"default\":false,\"size\":4},\"search-hole-range-t\":{\"cat\":\"base\",\"readonly\":false,\"affect\":0,\"group\":\"imgproc\",\"visible\":true,\"field\":\"Common\",\"pos\":0,\"unit\":\"None\",\"title\":\" \\u4e0a\\u4fa7\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e45\\u9762\\u6bd4\\u4f8b\",\"desc\":\"\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e45\\u9762\\u6bd4\\u4f8b\",\"type\":\"float\",\"cur\":0.100000,\"default\":0.100000,\"size\":4,\"range\":[0.500000,0.050000,0.000000],\"depend_and\":[\"is-rid-hole-t==true\"]},\"is-rid-hole-b\":{\"cat\":\"base\",\"readonly\":false,\"affect\":0,\"group\":\"imgproc\",\"visible\":true,\"field\":\"Common\",\"pos\":0,\"unit\":\"None\",\"title\":\"\\u7a7f\\u5b54\\u79fb\\u9664\\u2014\\u4e0b\\u4fa7\",\"desc\":\"\\u7a7f\\u5b54\\u5728\\u7eb8\\u5f20\\u7684\\u4e0b\\u90e8\",\"type\":\"bool\",\"cur\":false,\"default\":false,\"size\":4},\"search-hole-range-b\":{\"cat\":\"base\",\"readonly\":false,\"affect\":0,\"group\":\"imgproc\",\"visible\":true,\"field\":\"Common\",\"pos\":0,\"unit\":\"None\",\"title\":\" \\u4e0b\\u4fa7\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e45\\u9762\\u6bd4\\u4f8b\",\"desc\":\"\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e45\\u9762\\u6bd4\\u4f8b\",\"type\":\"float\",\"cur\":0.100000,\"default\":0.100000,\"size\":4,\"range\":[0.500000,0.050000,0.000000],\"depend_and\":[\"is-rid-hole-b==true\"]},\"grp-4\":{\"cat\":\"base\",\"title\":\"\\u9001\\u7eb8\\u65b9\\u5f0f\\u8bbe\\u7f6e\",\"type\":\"group\",\"readonly\":false,\"affect\":0,\"group\":\"feeder\",\"field\":\"Common\",\"pos\":0,\"visible\":true,\"unit\":\"None\"},\"is-wait-scan\":{\"cat\":\"base\",\"readonly\":false,\"affect\":0,\"group\":\"feeder\",\"visible\":true,\"field\":\"Common\",\"pos\":0,\"unit\":\"None\",\"title\":\"\\u5f85\\u7eb8\\u626b\\u63cf\",\"desc\":\"\\u542f\\u7528\\u540e\\uff0c\\u6587\\u7a3f\\u653e\\u5165\\u626b\\u63cf\\u4eea\\u65f6\\u5c06\\u81ea\\u52a8\\u542f\\u52a8\\u626b\\u63cf\",\"type\":\"bool\",\"cur\":false,\"default\":false,\"size\":4},\"wait-scan-exit\":{\"cat\":\"base\",\"readonly\":false,\"affect\":0,\"group\":\"feeder\",\"visible\":true,\"field\":\"Common\",\"pos\":0,\"unit\":\"None\",\"title\":\"\\u5f85\\u7eb8\\u626b\\u63cf\\u9000\\u51fa\\u65f6\\u95f4\",\"desc\":\"\\u8bbe\\u7f6e\\u7ed3\\u675f\\u5f85\\u7eb8\\u626b\\u63cf\\u7684\\u65f6\\u95f4\",\"type\":\"string\",\"cur\":\"60s\",\"default\":\"60s\",\"size\":24,\"range\":[\"15s\",\"30s\",\"60s\",\"2min\",\"4min\",\"8min\"],\"depend_or\":[\"is-wait-scan==true\"]},\"scan-mode\":{\"cat\":\"base\",\"readonly\":false,\"affect\":0,\"group\":\"feeder\",\"visible\":true,\"field\":\"Common\",\"pos\":0,\"unit\":\"None\",\"title\":\"\\u626b\\u63cf\\u5f20\\u6570\",\"desc\":\"\\u9009\\u62e9\\u6307\\u5b9a\\u6570\\u91cf\\u626b\\u63cf\\u6216\\u8fde\\u7eed\\u626b\\u63cf\",\"type\":\"string\",\"cur\":\"\\u8fde\\u7eed\\u626b\\u63cf\",\"default\":\"\\u8fde\\u7eed\\u626b\\u63cf\",\"size\":32,\"range\":[\"\\u8fde\\u7eed\\u626b\\u63cf\",\"\\u626b\\u63cf\\u6307\\u5b9a\\u5f20\\u6570\"],\"depend_and\":[\"is-wait-scan==false\"]},\"scan-count\":{\"cat\":\"base\",\"readonly\":false,\"affect\":0,\"group\":\"feeder\",\"visible\":true,\"field\":\"Common\",\"pos\":0,\"unit\":\"None\",\"title\":\" \\u626b\\u63cf\\u6570\\u91cf\",\"desc\":\"\\u626b\\u63cf\\u6307\\u5b9a\\u6570\\u91cf\",\"type\":\"int\",\"cur\":-1,\"default\":-1,\"size\":4,\"depend_and\":[\"is-wait-scan==false\",\"scan-mode==\\u626b\\u63cf\\u6307\\u5b9a\\u5f20\\u6570\"]},\"direction\":{\"cat\":\"base\",\"readonly\":false,\"affect\":0,\"group\":\"feeder\",\"visible\":true,\"field\":\"Common\",\"pos\":0,\"unit\":\"None\",\"title\":\"\\u6587\\u7a3f\\u65b9\\u5411\",\"desc\":\"\\u8bbe\\u7f6e\\u56fe\\u50cf\\u7684\\u65b9\\u5411\",\"type\":\"string\",\"cur\":\"0\\u00b0\",\"default\":\"0\\u00b0\",\"size\":40,\"range\":[\"0\\u00b0\",\"90\\u00b0\",\"180\\u00b0\",\"-90\\u00b0\",\"\\u81ea\\u52a8\\u6587\\u672c\\u65b9\\u5411\\u8bc6\\u522b\\u00b0\"]},\"is-rotate-bkg-180\":{\"cat\":\"base\",\"readonly\":false,\"affect\":0,\"group\":\"feeder\",\"visible\":true,\"field\":\"Common\",\"pos\":0,\"unit\":\"None\",\"title\":\"\\u80cc\\u9762\\u65cb\\u8f6c180\\u00b0\",\"desc\":\"\\u80cc\\u9762\\u626b\\u63cf\\u7684\\u56fe\\u50cf\\u65cb\\u8f6c180\\u00b0\",\"type\":\"bool\",\"cur\":false,\"default\":false,\"size\":4,\"depend_and\":[\"page!=\\u5355\\u9762\",\"!=\\u5bf9\\u6298\",\"direction!=\\u81ea\\u52a8\\u6587\\u672c\\u65b9\\u5411\\u8bc6\\u522b\\u00b0\"]},\"is-ultrosonic\":{\"cat\":\"base\",\"readonly\":false,\"affect\":0,\"group\":\"feeder\",\"visible\":true,\"field\":\"Common\",\"pos\":0,\"unit\":\"None\",\"title\":\"\\u8d85\\u58f0\\u6ce2\\u68c0\\u6d4b\",\"desc\":\"\\u68c0\\u6d4b\\u662f\\u5426\\u51fa\\u73b0\\u53cc\\u5f20\\u9001\\u5165\",\"type\":\"bool\",\"cur\":true,\"default\":true,\"size\":4},\"is-check-dog-ear\":{\"cat\":\"base\",\"readonly\":false,\"affect\":0,\"group\":\"feeder\",\"visible\":true,\"field\":\"Common\",\"pos\":0,\"unit\":\"None\",\"title\":\"\\u6298\\u89d2\\u68c0\\u6d4b\",\"desc\":\"\\u68c0\\u6d4b\\u6587\\u7a3f\\u662f\\u5426\\u5b58\\u5728\\u6298\\u89d2\",\"type\":\"bool\",\"cur\":false,\"default\":false,\"size\":4},\"dog-ear-size\":{\"cat\":\"base\",\"readonly\":false,\"affect\":0,\"group\":\"feeder\",\"visible\":true,\"field\":\"Common\",\"pos\":0,\"unit\":\"None\",\"title\":\" \\u6298\\u89d2\\u5927\\u5c0f\",\"desc\":\"\\u503c\\u8d8a\\u5c0f\\uff0c\\u80fd\\u68c0\\u6d4b\\u5230\\u7684\\u6298\\u89d2\\u8d8a\\u5c0f\",\"type\":\"int\",\"cur\":70,\"default\":70,\"size\":4,\"range\":{\"min\":10,\"max\":300,\"step\":1},\"depend_or\":[\"is-check-dog-ear==true\"]},\"time-to-sleep\":{\"cat\":\"base\",\"readonly\":false,\"affect\":0,\"group\":\"feeder\",\"visible\":true,\"field\":\"Common\",\"pos\":0,\"unit\":\"None\",\"title\":\"\\u4f11\\u7720\\u65f6\\u95f4\",\"desc\":\"\\u8bbe\\u7f6e\\u626b\\u63cf\\u4eea\\u7684\\u4f11\\u7720\\u65f6\\u95f4\",\"type\":\"string\",\"cur\":\"\\u4e0d\\u4f11\\u7720\",\"default\":\"\\u4e0d\\u4f11\\u7720\",\"size\":70,\"range\":[\"\\u4e0d\\u4f11\\u7720\",\"\\u4e94\\u5206\\u949f\",\"\\u5341\\u5206\\u949f\",\"\\u534a\\u5c0f\\u65f6\",\"\\u4e00\\u5c0f\\u65f6\",\"\\u4e24\\u5c0f\\u65f6\",\"\\u56db\\u5c0f\\u65f6\"]}}"); static std::string device_opt_json[] = { - "{\"restore\":{\"cat\":\"base\",\"group\":\"\",\"title\":\"\\u6062\\u590d\\u9ed8\\u8ba4\\u8bbe\\u7f6e\",\"desc\":\"\\u6062\\u590d\\u9ed8\\u8ba4\\u8bbe\\u7f6e\",\"type\":\"button\",\"fix-id\":34921,\"size\":4},\"help\":{\"cat\":\"base\",\"group\":\"\",\"title\":\"\\u5e2e\\u52a9\",\"desc\":\"\\u663e\\u793a\\u8f6f\\u4ef6\\u5e2e\\u52a9\\u6587\\u6863\",\"type\":\"button\",\"fix-id\":34897,\"size\":4},\"is-multiout\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u591a\\u6d41\\u8f93\\u51fa\",\"desc\":\"\\u540c\\u65f6\\u8f93\\u51fa\\u591a\\u79cd\\u989c\\u8272\\u6a21\\u5f0f\\u7684\\u56fe\\u50cf\",\"type\":\"bool\",\"fix-id\":34817,\"size\":4,\"cur\":false,\"default\":false},\"multiout-type\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u591a\\u6d41\\u8f93\\u51fa\\u7c7b\\u578b\",\"desc\":\"\\u9009\\u62e9\\u591a\\u6d41\\u8f93\\u51fa\\u7684\\u7c7b\\u578b\",\"type\":\"string\",\"fix-id\":34818,\"enabled\":false,\"size\":66,\"cur\":\"\\u5f69\\u8272+\\u7070\\u5ea6+\\u9ed1\\u767d\",\"default\":\"\\u5f69\\u8272+\\u7070\\u5ea6+\\u9ed1\\u767d\",\"range\":[\"\\u5f69\\u8272+\\u7070\\u5ea6+\\u9ed1\\u767d\",\"\\u5f69\\u8272+\\u7070\\u5ea6\",\"\\u5f69\\u8272+\\u9ed1\\u767d\",\"\\u7070\\u5ea6+\\u9ed1\\u767d\"],\"depend\":\"is-multiout==true\"},\"mode\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u989c\\u8272\\u6a21\\u5f0f\",\"desc\":\"\\u9009\\u62e9\\u8272\\u5f69\\u6a21\\u5f0f\",\"type\":\"string\",\"fix-id\":34819,\"size\":54,\"cur\":\"24\\u4f4d\\u5f69\\u8272\",\"default\":\"24\\u4f4d\\u5f69\\u8272\",\"range\":[\"24\\u4f4d\\u5f69\\u8272\",\"256\\u7ea7\\u7070\\u5ea6\",\"\\u9ed1\\u767d\",\"\\u989c\\u8272\\u81ea\\u52a8\\u8bc6\\u522b\"],\"depend\":\"is-multiout!=true\"},\"binary-threshold\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u9ed1\\u767d\\u56fe\\u50cf\\u9608\\u503c\",\"desc\":\"\\u9ad8\\u4e8e\\u8be5\\u9608\\u503c\\u4e3a1\\uff08\\u767d\\uff09\\uff0c\\u4f4e\\u4e8e\\u8be5\\u9608\\u503c\\u4e3a0\\uff08\\u9ed1\\uff09\",\"type\":\"int\",\"fix-id\":34870,\"size\":4,\"cur\":127,\"default\":127,\"range\":{\"min\":0,\"max\":255,\"step\":1},\"depend\":\"(multiout-type.enabled&&multiout-type!=\\u5f69\\u8272+\\u7070\\u5ea6) || (mode.enabled && mode==\\u9ed1\\u767d)\"},\"reverse-bw\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u9ed1\\u767d\\u56fe\\u50cf\\u53cd\\u8272\\u8f93\\u51fa\",\"desc\":\"\\u8f93\\u51fa\\u7684\\u9ed1\\u767d\\u56fe\\u50cf\\u4ee5\\u201c1\\u201d\\u4ee3\\u8868\\u9ed1\\u8272\\uff0c\\u201c0\\u201d\\u4ee3\\u8868\\u767d\\u8272\",\"type\":\"bool\",\"fix-id\":34878,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"(multiout-type.enabled&&multiout-type!=\\u5f69\\u8272+\\u7070\\u5ea6) || (mode.enabled && mode==\\u9ed1\\u767d)\"},\"filter\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u7070\\u5ea6\\u6216\\u9ed1\\u767d\\u56fe\\u50cf - \\u9664\\u8272\\u4e0e\\u589e\\u5f3a\",\"desc\":\"\\u6d88\\u9664\\u6216\\u589e\\u5f3a\\u6307\\u5b9a\\u8272\\u5f69\",\"type\":\"string\",\"fix-id\":34820,\"enabled\":false,\"size\":42,\"cur\":\"\\u4e0d\\u9664\\u8272\",\"default\":\"\\u4e0d\\u9664\\u8272\",\"range\":[\"\\u4e0d\\u9664\\u8272\",\"\\u9664\\u7ea2\\u8272\",\"\\u9664\\u7eff\\u8272\",\"\\u9664\\u84dd\\u8272\",\"\\u7ea2\\u8272\\u589e\\u5f3a\",\"\\u7eff\\u8272\\u589e\\u5f3a\",\"\\u84dd\\u8272\\u589e\\u5f3a\"],\"depend\":\"mode.enabled && (mode==256\\u7ea7\\u7070\\u5ea6 || mode==\\u9ed1\\u767d)\"},\"is-rid-multiout-red\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"24\\u4f4d\\u5f69\\u8272\\u56fe\\u50cf - \\u591a\\u6d41\\u8f93\\u51fa\\u9664\\u7ea2\",\"desc\":\"\\u540c\\u65f6\\u8f93\\u51fa\\u5f69\\u8272\\u56fe\\u50cf\\u548c\\u7070\\u5ea6\\u9664\\u7ea2\\u56fe\\u50cf\",\"type\":\"bool\",\"fix-id\":34821,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"mode.enabled && mode==24\\u4f4d\\u5f69\\u8272\"},\"is-rid-answer-sheet-red\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"24\\u4f4d\\u5f69\\u8272\\u56fe\\u50cf - \\u7b54\\u9898\\u5361\\u9664\\u7ea2\",\"desc\":\"\\u8f93\\u51fa\\u9664\\u7ea2\\u5f69\\u8272\\u56fe\\u50cf\",\"type\":\"bool\",\"fix-id\":34822,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"mode.enabled && mode==24\\u4f4d\\u5f69\\u8272\"},\"is-erase-bkg\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u80cc\\u666f\\u79fb\\u9664\",\"desc\":\"\\u79fb\\u9664\\u6587\\u7a3f\\u80cc\\u666f\\u5e95\\u8272\",\"type\":\"bool\",\"fix-id\":34823,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"mode.enabled && mode==24\\u4f4d\\u5f69\\u8272\"},\"bkg-color-range\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\" \\u80cc\\u666f\\u8272\\u5f69\\u6d6e\\u52a8\\u8303\\u56f4\",\"desc\":\"\\u4e0e\\u80cc\\u666f\\u5e95\\u8272\\u504f\\u5dee\\u5728\\u8be5\\u503c\\u8303\\u56f4\\u5185\\u7684\\u989c\\u8272\\uff0c\\u90fd\\u5c06\\u88ab\\u79fb\\u9664\",\"type\":\"int\",\"fix-id\":34824,\"enabled\":false,\"size\":4,\"cur\":20,\"default\":20,\"range\":{\"min\":1,\"max\":128,\"step\":1},\"depend\":\"is-erase-bkg==true\"},\"sharpen\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u9510\\u5316\\u4e0e\\u6a21\\u7cca\",\"desc\":\"\\u9009\\u62e9\\u9510\\u5316\\u6548\\u679c\\u6216\\u6a21\\u7cca\\u6548\\u679c\",\"type\":\"string\",\"fix-id\":34825,\"size\":48,\"cur\":\"\\u65e0\",\"default\":\"\\u65e0\",\"range\":[\"\\u65e0\",\"\\u9510\\u5316\",\"\\u8fdb\\u4e00\\u6b65\\u9510\\u5316\",\"\\u6a21\\u7cca\",\"\\u8fdb\\u4e00\\u6b65\\u6a21\\u7cca\"],\"depend\":\"mode.enabled&&(mode==24\\u4f4d\\u5f69\\u8272 || mode==256\\u7ea7\\u7070\\u5ea6)\"},\"is-rid-morr\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u53bb\\u9664\\u6469\\u5c14\\u7eb9\",\"desc\":\"\\u53bb\\u9664\\u56fe\\u50cf\\u4e2d\\u7684\\u6469\\u5c14\\u7eb9\",\"type\":\"bool\",\"fix-id\":34826,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"resolution<500&&paper!=\\u4e09\\u8054\\u8bd5\\u5377&&paper!=\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8&&paper!=\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\\u81ea\\u52a8\\u88c1\\u5207 && mode.enabled&&(mode==24\\u4f4d\\u5f69\\u8272 || mode==256\\u7ea7\\u7070\\u5ea6)\"},\"is-rid-grid\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u9664\\u7f51\\u7eb9\",\"desc\":\"\\u53bb\\u9664\\u56fe\\u50cf\\u4e2d\\u7684\\u7f51\\u7eb9\",\"type\":\"bool\",\"fix-id\":34827,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"resolution<500&&paper!=\\u4e09\\u8054\\u8bd5\\u5377&&paper!=\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8&&paper!=\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\\u81ea\\u52a8\\u88c1\\u5207 && mode.enabled&&(mode==24\\u4f4d\\u5f69\\u8272 || mode==256\\u7ea7\\u7070\\u5ea6)\"},\"is-err-extension\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u9519\\u8bef\\u6269\\u6563\",\"desc\":\"\\u4ee5\\u70b9\\u9635\\u5f62\\u5f0f\\u6784\\u5efa\\u56fe\\u50cf\",\"type\":\"bool\",\"fix-id\":34828,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"mode.enabled&&mode==\\u9ed1\\u767d\"},\"is-noise-optimize\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u9ed1\\u767d\\u56fe\\u50cf\\u566a\\u70b9\\u4f18\\u5316\",\"desc\":\"\\u53bb\\u9664\\u56fe\\u50cf\\u4e2d\\u7684\\u5b64\\u7acb\\u9ed1\\u70b9\",\"type\":\"bool\",\"fix-id\":34829,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"mode.enabled&&mode==\\u9ed1\\u767d\"},\"noise-size\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\" \\u566a\\u70b9\\u4f18\\u5316\\u5c3a\\u5bf8\",\"desc\":\"\\u8bbe\\u7f6e\\u9700\\u8981\\u53bb\\u9664\\u7684\\u9ed1\\u8272\\u5b64\\u7acb\\u70b9\\u7684\\u8fde\\u901a\\u4e2a\\u6570\",\"type\":\"int\",\"fix-id\":34830,\"size\":4,\"cur\":10,\"default\":10,\"range\":{\"min\":1,\"max\":50,\"step\":1},\"depend\":\"is-noise-optimize==true\"},\"paper\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u7eb8\\u5f20\\u5c3a\\u5bf8\",\"desc\":\"\\u8bbe\\u7f6e\\u51fa\\u56fe\\u5927\\u5c0f\",\"type\":\"string\",\"fix-id\":34831,\"size\":96,\"cur\":\"\\u5339\\u914d\\u539f\\u59cb\\u5c3a\\u5bf8\",\"default\":\"\\u5339\\u914d\\u539f\\u59cb\\u5c3a\\u5bf8\",\"range\":[\"A3\",\"8\\u5f00\",\"A4\",\"A4\\u6a2a\\u5411\",\"16\\u5f00\",\"16\\u5f00\\u6a2a\\u5411\",\"A5\",\"A5\\u6a2a\\u5411\",\"A6\",\"A6\\u6a2a\\u5411\",\"B4\",\"B5\",\"B5\\u6a2a\\u5411\",\"B6\",\"B6\\u6a2a\\u5411\",\"Letter\",\"Letter\\u6a2a\\u5411\",\"Double Letter\",\"LEGAL\",\"\\u5339\\u914d\\u539f\\u59cb\\u5c3a\\u5bf8\",{\"resolution<500\":\"\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\\u81ea\\u52a8\\u88c1\\u5207\"},{\"resolution<500\":\"\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\"},{\"resolution<500\":\"\\u4e09\\u8054\\u8bd5\\u5377\"}]},\"is-custom-area\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u81ea\\u5b9a\\u4e49\\u626b\\u63cf\\u533a\\u57df\",\"desc\":\"\\u81ea\\u5b9a\\u4e49\\u626b\\u63cf\\u533a\\u57df\",\"type\":\"bool\",\"fix-id\":34832,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"paper!=\\u5339\\u914d\\u539f\\u59cb\\u5c3a\\u5bf8&&paper!=\\u4e09\\u8054\\u8bd5\\u5377&&paper!=\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8&&paper!=\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\\u81ea\\u52a8\\u88c1\\u5207\"},\"tl-x\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u626b\\u63cf\\u533a\\u57df\\u5de6\\u4fa7\\uff08mm\\uff09\",\"desc\":\"\\u81ea\\u5b9a\\u4e49\\u626b\\u63cf\\u533a\\u57df\\u5de6\\u4e0a\\u89d2x\\u5750\\u6807\",\"type\":\"float\",\"fix-id\":34833,\"unit\":\"mm\",\"size\":8,\"cur\":0.000000,\"default\":0.000000,\"range\":{\"min\":0.000000,\"max\":210.000000,\"step\":21.000000},\"depend\":\"is-custom-area==true\"},\"br-x\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u626b\\u63cf\\u533a\\u57df\\u53f3\\u4fa7\\uff08mm\\uff09\",\"desc\":\"\\u81ea\\u5b9a\\u4e49\\u626b\\u63cf\\u533a\\u57df\\u53f3\\u4e0b\\u89d2x\\u5750\\u6807\",\"type\":\"float\",\"fix-id\":34834,\"unit\":\"mm\",\"size\":8,\"cur\":210.000000,\"default\":210.000000,\"range\":{\"min\":0.000000,\"max\":210.000000,\"step\":21.000000},\"depend\":\"is-custom-area==true\"},\"tl-y\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u626b\\u63cf\\u533a\\u57df\\u4e0a\\u4fa7\\uff08mm\\uff09\",\"desc\":\"\\u81ea\\u5b9a\\u4e49\\u626b\\u63cf\\u533a\\u57df\\u5de6\\u4e0a\\u89d2y\\u5750\\u6807\",\"type\":\"float\",\"fix-id\":34835,\"unit\":\"mm\",\"size\":8,\"cur\":0.000000,\"default\":0.000000,\"range\":{\"min\":0.000000,\"max\":297.000000,\"step\":29.700000},\"depend\":\"is-custom-area==true\"},\"br-y\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u626b\\u6", - "3cf\\u533a\\u57df\\u4e0b\\u4fa7\\uff08mm\\uff09\",\"desc\":\"\\u81ea\\u5b9a\\u4e49\\u626b\\u63cf\\u533a\\u57df\\u53f3\\u4e0b\\u89d2y\\u5750\\u6807\",\"type\":\"float\",\"fix-id\":34836,\"unit\":\"mm\",\"size\":8,\"cur\":297.000000,\"default\":297.000000,\"range\":{\"min\":0.000000,\"max\":297.000000,\"step\":29.700000},\"depend\":\"is-custom-area==true\"},\"is-size-check\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u5c3a\\u5bf8\\u68c0\\u6d4b\",\"desc\":\"\\u68c0\\u6d4b\\u7eb8\\u5f20\\u5b9e\\u9645\\u5c3a\\u5bf8\\u4e0e\\u8bbe\\u7f6e\\u662f\\u5426\\u5339\\u914d\",\"type\":\"bool\",\"fix-id\":34837,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"paper==A3||paper==A4||paper==A4\\u6a2a\\u5411||paper==A5||paper==A5\\u6a2a\\u5411||paper==A6||paper==A6\\u6a2a\\u5411||paper==B4||paper==B5||paper==B5\\u6a2a\\u5411||paper==B6||paper==B6\\u6a2a\\u5411||paper==Double Letter||paper==LEGAL||paper==Letter||paper==Letter\\u6a2a\\u5411\"},\"page\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u626b\\u63cf\\u9875\\u9762\",\"desc\":\"\\u8bbe\\u7f6e\\u9875\\u9762\\u626b\\u63cf\\u65b9\\u5f0f\",\"type\":\"string\",\"fix-id\":34838,\"size\":78,\"cur\":\"\\u53cc\\u9762\",\"default\":\"\\u53cc\\u9762\",\"range\":[\"\\u5355\\u9762\",\"\\u53cc\\u9762\",\"\\u8df3\\u8fc7\\u7a7a\\u767d\\u9875\\uff08\\u901a\\u7528\\uff09\",\"\\u8df3\\u8fc7\\u7a7a\\u767d\\u9875\\uff08\\u53d1\\u7968\\u7eb8\\uff09\",\"\\u5bf9\\u6298\"]},\"discardblank\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u8df3\\u8fc7\\u7a7a\\u767d\\u9875\",\"desc\":\"\",\"type\":\"bool\",\"fix-id\":34919,\"size\":4,\"cur\":false,\"default\":false},\"blank-sensitivity\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\" \\u8df3\\u8fc7\\u7a7a\\u767d\\u9875\\u7075\\u654f\\u5ea6\",\"desc\":\"\\u6570\\u503c\\u8d8a\\u5927\\uff0c\\u5219\\u8d8a\\u5bb9\\u6613\\u8df3\\u8fc7\",\"type\":\"int\",\"fix-id\":34839,\"size\":4,\"cur\":30,\"default\":30,\"range\":{\"min\":1,\"max\":100,\"step\":1},\"depend\":\"page==\\u8df3\\u8fc7\\u7a7a\\u767d\\u9875\\uff08\\u53d1\\u7968\\u7eb8\\uff09||page==\\u8df3\\u8fc7\\u7a7a\\u767d\\u9875\\uff08\\u901a\\u7528\\uff09||discardblank==true\"},\"fold-type\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u5bf9\\u6298\\u6a21\\u5f0f\",\"desc\":\"\",\"type\":\"string\",\"fix-id\":34887,\"size\":42,\"cur\":\"\\u5de6\\u53f3\\u5bf9\\u6298\",\"default\":\"\\u5de6\\u53f3\\u5bf9\\u6298\",\"range\":[\"\\u5de6\\u53f3\\u5bf9\\u6298\",\"\\u4e0a\\u4e0b\\u5bf9\\u6298\",\"\\u81ea\\u52a8\\u5bf9\\u6298\"],\"depend\":\"page==\\u5bf9\\u6298\"},\"resolution\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u5206\\u8fa8\\u7387\",\"desc\":\"\\u8bbe\\u7f6e\\u626b\\u63cf\\u56fe\\u50cf\\u7684\\u5206\\u8fa8\\u7387\",\"type\":\"int\",\"fix-id\":34840,\"size\":4,\"cur\":200,\"default\":200,\"range\":{\"min\":100,\"max\":{\"default\":600,\"paper==\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\\u81ea\\u52a8\\u88c1\\u5207 || paper==\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8 || paper==\\u4e09\\u8054\\u8bd5\\u5377\":500},\"step\":1}},\"image-quality\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u753b\\u8d28\",\"desc\":\"\\u9009\\u62e9\\u626b\\u63cf\\u4eea\\u7684\\u753b\\u8d28\\u6a21\\u5f0f\",\"type\":\"string\",\"fix-id\":34841,\"size\":42,\"cur\":\"\\u753b\\u8d28\\u4f18\\u5148\",\"default\":\"\\u753b\\u8d28\\u4f18\\u5148\",\"range\":[\"\\u901f\\u5ea6\\u4f18\\u5148\",\"\\u753b\\u8d28\\u4f18\\u5148\"],\"depend\":\"resolution>=300\"},\"is-exchange\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u4ea4\\u6362\\u6b63\\u53cd\\u9762\",\"desc\":\"\\u4ea4\\u6362\\u6bcf\\u5f20\\u6587\\u7a3f\\u7684\\u6b63\\u53cd\\u9762\\u51fa\\u56fe\\u987a\\u5e8f\",\"type\":\"bool\",\"fix-id\":34842,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"page!=\\u5355\\u9762\"},\"is-custom-gamma\":{\"cat\":\"base\",\"group\":\"bright\",\"title\":\"\\u542f\\u7528\\u8272\\u8c03\\u66f2\\u7ebf\",\"desc\":\"\\u81ea\\u5b9a\\u4e49\\u56fe\\u50cf\\u8272\\u8c03\\u6548\\u679c\",\"type\":\"bool\",\"fix-id\":34845,\"size\":4,\"cur\":false,\"default\":false},\"brightness\":{\"cat\":\"base\",\"group\":\"bright\",\"title\":\"\\u4eae\\u5ea6\\u503c\",\"desc\":\"\\u8c03\\u6574\\u56fe\\u50cf\\u4eae\\u5ea6\",\"type\":\"int\",\"fix-id\":34846,\"size\":4,\"cur\":128,\"default\":128,\"range\":{\"min\":1,\"max\":255,\"step\":1},\"depend\":\"is-custom-gamma==false\"},\"contrast\":{\"cat\":\"base\",\"group\":\"bright\",\"title\":\"\\u5bf9\\u6bd4\\u5ea6\",\"desc\":\"\\u8c03\\u6574\\u56fe\\u50cf\\u5bf9\\u6bd4\\u5ea6\",\"type\":\"int\",\"fix-id\":34847,\"size\":4,\"cur\":4,\"default\":4,\"range\":{\"min\":1,\"max\":7,\"step\":1},\"depend\":\"is-custom-gamma==false\"},\"gamma\":{\"cat\":\"base\",\"group\":\"bright\",\"title\":\"\\u4f3d\\u9a6c\\u503c\",\"desc\":\"\\u8c03\\u6574\\u56fe\\u50cf\\u4f3d\\u739b\\u503c\",\"type\":\"float\",\"fix-id\":34848,\"size\":8,\"cur\":1.000000,\"default\":1.000000,\"range\":{\"min\":0.010000,\"max\":5.000000,\"step\":0.499000},\"depend\":\"is-custom-gamma==false\"},\"color-correction\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u8272\\u504f\\u6821\\u6b63\",\"desc\":\"\\u8272\\u5f69\\u8fd8\\u539f\\u5ea6\\u77eb\\u6b63\\u529f\\u80fd\",\"type\":\"bool\",\"fix-id\":34888,\"size\":4,\"cur\":false,\"default\":false},\"is-anti-skew\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u81ea\\u52a8\\u7ea0\\u504f\",\"desc\":\"\\u81ea\\u52a8\\u7ea0\\u6b63\\u6b6a\\u659c\\u9001\\u5165\\u7684\\u6587\\u7a3f\\u56fe\\u50cf\",\"type\":\"bool\",\"fix-id\":34844,\"size\":4,\"cur\":true,\"default\":true,\"depend\":\"page!=\\u5bf9\\u6298\"},\"is-split\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u56fe\\u50cf\\u62c6\\u5206\",\"desc\":\"\\u81ea\\u52a8\\u62c6\\u5206\\u56fe\\u50cf\",\"type\":\"bool\",\"fix-id\":34843,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"page!=\\u5bf9\\u6298&&page!=\\u8df3\\u8fc7\\u7a7a\\u767d\\u9875\\uff08\\u53d1\\u7968\\u7eb8\\uff09&&page!=\\u8df3\\u8fc7\\u7a7a\\u767d\\u9875\\uff08\\u901a\\u7528\\uff09\"},\"is-erase-black-frame\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u6d88\\u9664\\u9ed1\\u6846\",\"desc\":\"\\u6d88\\u9664\\u6587\\u7a3f\\u8303\\u56f4\\u5916\\u7684\\u9ed1\\u8272\\u80cc\\u666f\",\"type\":\"bool\",\"fix-id\":34849,\"size\":4,\"cur\":true,\"default\":true},\"bkg-fill-mode\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u80cc\\u666f\\u586b\\u5145\\u65b9\\u5f0f\",\"desc\":\"\\u9009\\u62e9\\u80cc\\u666f\\u586b\\u5145\\u65b9\\u5f0f\",\"type\":\"string\",\"fix-id\":34854,\"size\":42,\"cur\":\"\\u51f8\\u591a\\u8fb9\\u5f62\",\"default\":\"\\u51f8\\u591a\\u8fb9\\u5f62\",\"range\":[\"\\u51f8\\u591a\\u8fb9\\u5f62\",\"\\u51f9\\u591a\\u8fb9\\u5f62\"],\"depend\":\"is-erase-black-frame==true\"},\"is-fill-color\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u8272\\u5f69\\u586b\\u5145\",\"desc\":\"\\u542f\\u7528\\u540e\\u9ed1\\u6846\\u90e8\\u5206\\u5c06\\u586b\\u5145\\u4e3a\\u6587\\u7a3f\\u5e95\\u8272\",\"type\":\"bool\",\"fix-id\":34859,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"is-erase-black-frame==true\"},\"threshold\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u9608\\u503c\",\"desc\":\"\\u6587\\u7a3f\\u5e95\\u8272\\u4e0e\\u9ed1\\u8272\\u80cc\\u666f\\u7070\\u5ea6\\u503c\\u7684\\u5dee\\u503c\\u5927\\u4e8e\\u8be5\\u503c\\uff0c\\u624d\\u4f1a\\u88ab\\u8bc6\\u522b\\u4e3a\\u6587\\u7a3f\",\"type\":\"int\",\"fix-id\":34851,\"size\":4,\"cur\":40,\"default\":40,\"range\":{\"min\":30,\"max\":50,\"step\":1},\"depend\":\"is-erase-black-frame==true||paper==\\u5339\\u914d\\u539f\\u59cb\\u5c3a\\u5bf8||paper==\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8||paper==\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\\u81ea\\u52a8\\u88c1\\u5207||is-anti-skew==true\"},\"anti-noise-level\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u80cc\\u666f\\u6297\\u566a\\u7b49\\u7ea7\",\"desc\":\"\\u80fd\\u591f\\u5bb9\\u5fcd\\u7684\\u80cc\\u666f\\u6742\\u8272\\u6761\\u7eb9\\u7684\\u5bbd\\u5ea6\",\"type\":\"int\",\"fix-id\":34852,\"size\":4,\"cur\":8,\"default\":8,\"range\":{\"min\":2,\"max\":20,\"step\":1},\"depend\":\"is-erase-black-frame==true||paper==\\u5339\\u914d\\u539f\\u59cb\\u5c3a\\u5bf8||paper==\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8||paper==\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\\u81ea\\u52a8\\u88c1\\u5207||is-anti-skew==true\"},\"margin\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u8fb9\\u7f18\\u7f29\\u8fdb\",\"desc\":\"\\u5bfb\\u627e\\u6587\\u7a3f\\u8fb9\\u7f18\\u65f6\\u5bf9\\u8fb9\\u7f18\\u7684\\u4fb5\\u5165\\u7a0b\\u5ea6\",\"type\":\"int\",\"fix-id\":34853,\"size\":4,\"cur\":5,\"default\":5,\"range\":{\"min\":2,\"max\":30,\"step\":1},\"depend\":\"is-erase-black-frame==true||paper==\\u5339\\u914d\\u539f\\u59cb\\u5c3a\\u5bf8||paper==\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8||paper==\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\\u81ea\\u52a8\\u88c1\\u5207||is-anti-skew==true\"},\"is-dark-sample\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u6df1\\u8272\\u6837\\u5f20\",\"desc\":\"\\u542f\\u7528\\u8be5\\u6a21\\u5f0f\\u9632\\u6b62\\u6df1\\u8272\\u5e95\\u8272\\u7684\\u6587\\u7a3f\\u56fe\\u50cf\\u88ab\\u8bef\\u5904\\u7406\",\"type\":\"bool\",\"fix-id\":34850,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"page!=\\u5bf9\\u6298&&is-erase-black-frame!=true&&paper!=\\u5339\\u914d\\u539f\\u59cb\\u5c3a\\u5bf8&&paper!=\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8&&paper!=\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\\u81ea\\u52a8\\u88c1\\u5207&&is-anti-skew!=true\"},\"is-anti-permeate\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u9632\\u6b62\\u6e17\\u900f\",\"desc\":\"\\u9632\\u6b62\\u80cc\\u9762\\u56fe\\u6848\\u6e17\\u900f\",\"type\":\"bool\",\"fix-id\":34855,\"size\":4,\"cur\":false,\"default\":false},\"permeate-level\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\" \\u9632\\u6b62\\u6e17\\u900f\\u7b49\\u7ea7\",\"desc\":\"\\u9009\\u62e9\\u9632\\u6b62\\u6e17\\u900f\\u7684\\u7b49\\u7ea7\",\"type\":\"string\",\"fix-id\":34856,\"size\":30,\"cur\":\"\\u8f83\\u5f31\",\"default\":\"\\u8f83\\u5f31\",\"range\":[\"\\u5f31\",\"\\u8f83\\u5f31\",\"\\u4e00\\u822c\",\"\\u8f83\\u5f3a\",\"\\u5f3a\"],\"depend\":\"is-anti-permeate==true\"},\"is-rid-hole-l\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u7a7f\\u5b54\\u79fb\\u9664\\u2014\\u5de6\\u4fa7\",\"desc\":\"\\u7a7f\\u", - "5b54\\u5728\\u7eb8\\u5f20\\u4e0a\\u7684\\u5de6\\u4fa7\",\"type\":\"bool\",\"fix-id\":34879,\"size\":4,\"cur\":false,\"default\":false},\"search-hole-range-l\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\" \\u5de6\\u4fa7\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e45\\u9762\\u6bd4\\u4f8b\",\"desc\":\"\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e45\\u9762\\u6bd4\\u4f8b\",\"type\":\"float\",\"fix-id\":34880,\"size\":8,\"cur\":0.100000,\"default\":0.100000,\"range\":{\"min\":0.000000,\"max\":0.500000,\"step\":0.050000},\"depend\":\"is-rid-hole-l==true\"},\"is-rid-hole-r\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u7a7f\\u5b54\\u79fb\\u9664\\u2014\\u53f3\\u4fa7\",\"desc\":\"\\u7a7f\\u5b54\\u5728\\u7eb8\\u5f20\\u4e0a\\u7684\\u53f3\\u4fa7\",\"type\":\"bool\",\"fix-id\":34881,\"size\":4,\"cur\":false,\"default\":false},\"search-hole-range-r\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\" \\u53f3\\u4fa7\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e45\\u9762\\u6bd4\\u4f8b\",\"desc\":\"\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e45\\u9762\\u6bd4\\u4f8b\",\"type\":\"float\",\"fix-id\":34882,\"size\":8,\"cur\":0.100000,\"default\":0.100000,\"range\":{\"min\":0.000000,\"max\":0.500000,\"step\":0.050000},\"depend\":\"is-rid-hole-r==true\"},\"is-rid-hole-t\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u7a7f\\u5b54\\u79fb\\u9664\\u2014\\u4e0a\\u4fa7\",\"desc\":\"\\u7a7f\\u5b54\\u5728\\u7eb8\\u5f20\\u7684\\u4e0a\\u90e8\",\"type\":\"bool\",\"fix-id\":34883,\"size\":4,\"cur\":false,\"default\":false},\"search-hole-range-t\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\" \\u4e0a\\u4fa7\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e45\\u9762\\u6bd4\\u4f8b\",\"desc\":\"\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e45\\u9762\\u6bd4\\u4f8b\",\"type\":\"float\",\"fix-id\":34884,\"size\":8,\"cur\":0.100000,\"default\":0.100000,\"range\":{\"min\":0.000000,\"max\":0.500000,\"step\":0.050000},\"depend\":\"is-rid-hole-t==true\"},\"is-rid-hole-b\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u7a7f\\u5b54\\u79fb\\u9664\\u2014\\u4e0b\\u4fa7\",\"desc\":\"\\u7a7f\\u5b54\\u5728\\u7eb8\\u5f20\\u7684\\u4e0b\\u90e8\",\"type\":\"bool\",\"fix-id\":34885,\"size\":4,\"cur\":false,\"default\":false},\"search-hole-range-b\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\" \\u4e0b\\u4fa7\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e45\\u9762\\u6bd4\\u4f8b\",\"desc\":\"\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e45\\u9762\\u6bd4\\u4f8b\",\"type\":\"float\",\"fix-id\":34886,\"size\":8,\"cur\":0.100000,\"default\":0.100000,\"range\":{\"min\":0.000000,\"max\":0.500000,\"step\":0.050000},\"depend\":\"is-rid-hole-b==true\"},\"is-wait-scan\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u5f85\\u7eb8\\u626b\\u63cf\",\"desc\":\"\\u542f\\u7528\\u540e\\uff0c\\u6587\\u7a3f\\u653e\\u5165\\u626b\\u63cf\\u4eea\\u65f6\\u5c06\\u81ea\\u52a8\\u542f\\u52a8\\u626b\\u63cf\",\"type\":\"bool\",\"fix-id\":34873,\"size\":4,\"cur\":false,\"default\":false},\"wait-scan-exit\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u5f85\\u7eb8\\u626b\\u63cf\\u9000\\u51fa\\u65f6\\u95f4\",\"desc\":\"\\u8bbe\\u7f6e\\u7ed3\\u675f\\u5f85\\u7eb8\\u626b\\u63cf\\u7684\\u65f6\\u95f4\",\"type\":\"string\",\"fix-id\":34920,\"size\":42,\"cur\":\"60s\",\"default\":\"60s\",\"range\":[\"15s\",\"30s\",\"60s\",\"2min\",\"4min\",\"8min\"],\"depend\":\"is-wait-scan==true\"},\"scan-mode\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u626b\\u63cf\\u5f20\\u6570\",\"desc\":\"\\u9009\\u62e9\\u6307\\u5b9a\\u6570\\u91cf\\u626b\\u63cf\\u6216\\u8fde\\u7eed\\u626b\\u63cf\",\"type\":\"string\",\"fix-id\":34862,\"size\":54,\"cur\":\"\\u8fde\\u7eed\\u626b\\u63cf\",\"default\":\"\\u8fde\\u7eed\\u626b\\u63cf\",\"range\":[\"\\u8fde\\u7eed\\u626b\\u63cf\",\"\\u626b\\u63cf\\u6307\\u5b9a\\u5f20\\u6570\"],\"depend\":\"is-wait-scan==false\"},\"scan-count\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\" \\u626b\\u63cf\\u6570\\u91cf\",\"desc\":\"\\u626b\\u63cf\\u6307\\u5b9a\\u6570\\u91cf\",\"type\":\"int\",\"fix-id\":34863,\"size\":4,\"cur\":1,\"default\":1,\"depend\":\"scan-mode.enabled&&scan-mode==\\u626b\\u63cf\\u6307\\u5b9a\\u5f20\\u6570\"},\"direction\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u6587\\u7a3f\\u65b9\\u5411\",\"desc\":\"\\u8bbe\\u7f6e\\u56fe\\u50cf\\u7684\\u65b9\\u5411\",\"type\":\"string\",\"fix-id\":34864,\"size\":72,\"cur\":\"0\\u00b0\",\"default\":\"0\\u00b0\",\"range\":[\"0\\u00b0\",\"90\\u00b0\",\"180\\u00b0\",\"-90\\u00b0\",\"\\u81ea\\u52a8\\u6587\\u672c\\u65b9\\u5411\\u8bc6\\u522b\\u00b0\"]},\"is-rotate-bkg-180\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u80cc\\u9762\\u65cb\\u8f6c180\\u00b0\",\"desc\":\"\\u80cc\\u9762\\u626b\\u63cf\\u7684\\u56fe\\u50cf\\u65cb\\u8f6c180\\u00b0\",\"type\":\"bool\",\"fix-id\":34865,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"page!=\\u5355\\u9762&&page!=\\u5bf9\\u6298&&direction!=\\u81ea\\u52a8\\u6587\\u672c\\u65b9\\u5411\\u8bc6\\u522b\\u00b0\"},\"is-ultrosonic\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u8d85\\u58f0\\u6ce2\\u68c0\\u6d4b\",\"desc\":\"\\u68c0\\u6d4b\\u662f\\u5426\\u51fa\\u73b0\\u53cc\\u5f20\\u9001\\u5165\",\"type\":\"bool\",\"fix-id\":34860,\"size\":4,\"cur\":true,\"default\":true},\"double-feed\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u53cc\\u5f20\\u56fe\\u7247\\u5904\\u7406\",\"desc\":\"\\u68c0\\u6d4b\\u5230\\u53cc\\u5f20\\u8fdb\\u7eb8\\u540e\\u7684\\u5904\\u7406\\u65b9\\u5f0f\",\"type\":\"string\",\"fix-id\":34872,\"size\":72,\"cur\":\"\\u4e22\\u5f03\\u56fe\\u50cf\\u5e76\\u505c\\u6b62\\u626b\\u63cf\",\"default\":\"\\u4e22\\u5f03\\u56fe\\u50cf\\u5e76\\u505c\\u6b62\\u626b\\u63cf\",\"range\":[\"\\u4e22\\u5f03\\u56fe\\u50cf\\u5e76\\u505c\\u6b62\\u626b\\u63cf\",\"\\u4e0a\\u4f20\\u56fe\\u50cf\\u5e76\\u505c\\u6b62\\u626b\\u63cf\"],\"depend\":\"is-ultrosonic==true\"},\"is-staple\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u88c5\\u8ba2\\u68c0\\u6d4b\",\"desc\":\"\\u68c0\\u6d4b\\u662f\\u5426\\u51fa\\u73b0\\u7c98\\u8fde\\u9001\\u5165\",\"type\":\"bool\",\"fix-id\":34861,\"size\":4,\"cur\":false,\"default\":false},\"is-check-askew\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u6b6a\\u659c\\u68c0\\u6d4b\",\"desc\":\"\\u68c0\\u6d4b\\u662f\\u5426\\u51fa\\u73b0\\u6b6a\\u659c\\u9001\\u5165\",\"type\":\"bool\",\"fix-id\":34868,\"size\":4,\"cur\":true,\"default\":true},\"askew-range\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u6b6a\\u659c\\u5bb9\\u5fcd\\u5ea6\",\"desc\":\"\\u503c\\u8d8a\\u5c0f\\uff0c\\u80fd\\u5bb9\\u5fcd\\u5f97\\u9001\\u5165\\u6587\\u7a3f\\u6b6a\\u659c\\u89d2\\u5ea6\\u8d8a\\u5c0f\",\"type\":\"int\",\"fix-id\":34869,\"size\":4,\"cur\":3,\"default\":3,\"range\":{\"min\":1,\"max\":5,\"step\":1},\"depend\":\"is-check-askew==true\"},\"is-check-dog-ear\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u6298\\u89d2\\u68c0\\u6d4b\",\"desc\":\"\\u68c0\\u6d4b\\u6587\\u7a3f\\u662f\\u5426\\u5b58\\u5728\\u6298\\u89d2\",\"type\":\"bool\",\"fix-id\":34866,\"size\":4,\"cur\":false,\"default\":false},\"dog-ear-size\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\" \\u6298\\u89d2\\u5927\\u5c0f\",\"desc\":\"\\u503c\\u8d8a\\u5c0f\\uff0c\\u80fd\\u68c0\\u6d4b\\u5230\\u7684\\u6298\\u89d2\\u8d8a\\u5c0f\",\"type\":\"int\",\"fix-id\":34867,\"size\":4,\"cur\":70,\"default\":70,\"range\":{\"min\":10,\"max\":300,\"step\":1},\"depend\":\"is-check-dog-ear==true\"},\"is-auto-strength\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u81ea\\u52a8\\u5206\\u7eb8\\u5f3a\\u5ea6\",\"desc\":\"\\u626b\\u63cf\\u4eea\\u81ea\\u52a8\\u4fee\\u6b63\\u5206\\u7eb8\\u529b\\u5ea6\",\"type\":\"bool\",\"fix-id\":34876,\"size\":4,\"cur\":false,\"default\":false},\"feed-strength-value\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\" \\u8fdb\\u7eb8\\u5931\\u8d25\\u7387\",\"desc\":\"\\u9ad8\\u4e8e\\u8be5\\u503c\\u65f6\\u626b\\u63cf\\u4eea\\u5c06\\u8c03\\u6574\\u5206\\u7eb8\\u529b\\u5ea6\",\"type\":\"float\",\"fix-id\":34877,\"size\":8,\"cur\":0.100000,\"default\":0.100000,\"range\":{\"min\":0.100000,\"max\":0.900000,\"step\":0.080000},\"depend\":\"is-auto-strength==true\"},\"feed-strength\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u5206\\u7eb8\\u5f3a\\u5ea6\",\"desc\":\"\\u8bbe\\u7f6e\\u626b\\u63cf\\u4eea\\u7684\\u5206\\u7eb8\\u529b\\u5ea6\",\"type\":\"string\",\"fix-id\":34874,\"size\":30,\"cur\":\"\\u4e00\\u822c\",\"default\":\"\\u4e00\\u822c\",\"range\":[\"\\u5f31\",\"\\u4e00\\u822c\",\"\\u5f3a\"],\"depend\":\"is-auto-strength!=true\"},\"time-to-sleep\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u4f11\\u7720\\u65f6\\u95f4\",\"desc\":\"\\u8bbe\\u7f6e\\u626b\\u63cf\\u4eea\\u7684\\u4f11\\u7720\\u65f6\\u95f4\",\"type\":\"string\",\"fix-id\":34875,\"size\":36,\"cur\":\"\\u4e0d\\u4f11\\u7720\",\"default\":\"\\u4e0d\\u4f11\\u7720\",\"range\":[\"\\u4e0d\\u4f11\\u7720\",\"\\u4e94\\u5206\\u949f\",\"\\u5341\\u5206\\u949f\",\"\\u534a\\u5c0f\\u65f6\",\"\\u4e00\\u5c0f\\u65f6\",\"\\u4e24\\u5c0f\\u65f6\",\"\\u56db\\u5c0f\\u65f6\"]},\"total-cnt\":{\"cat\":\"base\",\"group\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"\\u5386\\u53f2\\u6eda\\u8f74\\u8ba1\\u6570\",\"desc\":\"\\u626b\\u63cf\\u4eea\\u4f7f\\u7528\\u4ee5\\u6765\\u626b\\u63cf\\u7eb8\\u5f20\\u603b\\u6570\",\"type\":\"int\",\"fix-id\":34889,\"readonly\":true,\"size\":4,\"auto\":false,\"cur\":0,\"default\":0},\"dev-vid\":{\"cat\":\"base\",\"group\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"\\u8bbe\\u5907ID\",\"desc\":\"\\u8bbe\\u5907\\u5927\\u7c7bID\",\"type\":\"int\",\"fix-id\":34898,\"readonly\":true,\"size\":4,\"auto\":false,\"cur\":0,\"default\":0},\"dev-pid\":{\"cat\":\"base\",\"group\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"USB-PID\",\"desc\":\"\\u8bbe\\u5907\\u5728USB\\u4e2d\\u7684\\u4ea7\\u54c1ID\",\"type\":\"int\",\"fix-id\":34899,\"readonly\":true,\"size\":4,\"auto\":false,\"cur\":0,\"default\":0},\"dev-name\":{\"cat\":\"base\",\"group\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"\\u8bbe\\u5907\\u540d\\u79f0\",\"desc\":\"\\u8bbe\\u5907\\u540d\\u79f0\",\"type\":\"string\",\"fix-id\":34900,\"readonly\":true,\"size\":96,\"auto\":false,\"cur\":\"0\",\"default\":\"0\"},\"dev-model\":{\"cat\":\"base\",\"gro", - "up\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"\\u4ea7\\u54c1\\u7cfb\\u5217\",\"desc\":\"\\u8bbe\\u5907\\u6240\\u5c5e\\u4ea7\\u54c1\\u7cfb\\u5217\\u540d\\u79f0\",\"type\":\"string\",\"fix-id\":34901,\"readonly\":true,\"size\":96,\"auto\":false,\"cur\":\"0\",\"default\":\"0\"},\"dev-sn\":{\"cat\":\"base\",\"group\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"\\u5e8f\\u5217\\u53f7\",\"desc\":\"\\u8bbe\\u5907\\u5e8f\\u5217\\u53f7\",\"type\":\"string\",\"fix-id\":34902,\"readonly\":true,\"size\":96,\"auto\":false,\"cur\":\"0\",\"default\":\"0\"},\"fmw-ver\":{\"cat\":\"base\",\"group\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"\\u56fa\\u4ef6\\u7248\\u672c\",\"desc\":\"\\u8bbe\\u5907\\u56fa\\u4ef6\\u7248\\u672c\\u53f7\",\"type\":\"string\",\"fix-id\":34903,\"readonly\":true,\"size\":96,\"auto\":false,\"cur\":\"0\",\"default\":\"0\"},\"ip-addr\":{\"cat\":\"base\",\"group\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"IP\",\"desc\":\"\\u8bbe\\u5907\\u8054\\u7f51\\u65f6\\u6240\\u5206\\u914d\\u7684IP\\u5730\\u5740\",\"type\":\"string\",\"fix-id\":34904,\"readonly\":true,\"size\":96,\"auto\":false,\"cur\":\"0\",\"default\":\"0\"},\"mac-addr\":{\"cat\":\"base\",\"group\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"MAC\",\"desc\":\"\\u8bbe\\u5907\\u7f51\\u5361\\u5730\\u5740\",\"type\":\"string\",\"fix-id\":34905,\"readonly\":true,\"size\":96,\"auto\":false,\"cur\":\"0\",\"default\":\"0\"},\"roller-life\":{\"cat\":\"base\",\"group\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"\\u6eda\\u8f74\\u5bff\\u547d\",\"desc\":\"\\u8be5\\u8bbe\\u5907\\u6eda\\u8f74\\u8fc7\\u7eb8\\u7684\\u6700\\u5927\\u5f20\\u6570\",\"type\":\"int\",\"fix-id\":34907,\"readonly\":true,\"size\":4,\"auto\":false,\"cur\":0,\"default\":0},\"paper-on\":{\"cat\":\"base\",\"group\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"\\u6709\\u7eb8\",\"desc\":\"\\u8bbe\\u5907\\u4e0a\\u662f\\u5426\\u6709\\u7eb8\",\"type\":\"bool\",\"fix-id\":34912,\"readonly\":true,\"size\":4,\"auto\":false,\"cur\":false,\"default\":false},\"roll-cnt\":{\"cat\":\"base\",\"group\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"\\u6eda\\u8f74\\u8ba1\\u6570\",\"desc\":\"\\u5f53\\u524d\\u6eda\\u8f74\\u5df2\\u7ecf\\u8fc7\\u7eb8\\u5f20\\u6570\",\"type\":\"int\",\"fix-id\":39170,\"readonly\":true,\"size\":4,\"auto\":false,\"cur\":0,\"default\":0},\"devs-log\":{\"cat\":\"base\",\"group\":\"\\u9ad8\\u7ea7\\u8bbe\\u7f6e\",\"title\":\"\\u8bbe\\u5907\\u65e5\\u5fd7\",\"desc\":\"\\u8bbe\\u5907\\u5de5\\u4f5c\\u65e5\\u5fd7\",\"type\":\"string\",\"fix-id\":39172,\"visible\":1,\"size\":256,\"auto\":false,\"cur\":\"0\",\"default\":\"0\"}}" + "{\"restore\":{\"cat\":\"base\",\"group\":\"\",\"title\":\"\\u6062\\u590d\\u9ed8\\u8ba4\\u8bbe\\u7f6e\",\"desc\":\"\\u6062\\u590d\\u9ed8\\u8ba4\\u8bbe\\u7f6e\",\"type\":\"button\",\"fix-id\":34921,\"size\":4},\"help\":{\"cat\":\"base\",\"group\":\"\",\"title\":\"\\u5e2e\\u52a9\",\"desc\":\"\\u663e\\u793a\\u8f6f\\u4ef6\\u5e2e\\u52a9\\u6587\\u6863\",\"type\":\"button\",\"fix-id\":34897,\"size\":4},\"is-multiout\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u591a\\u6d41\\u8f93\\u51fa\",\"desc\":\"\\u540c\\u65f6\\u8f93\\u51fa\\u591a\\u79cd\\u989c\\u8272\\u6a21\\u5f0f\\u7684\\u56fe\\u50cf\",\"type\":\"bool\",\"fix-id\":34817,\"size\":4,\"cur\":false,\"default\":false},\"multiout-type\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u591a\\u6d41\\u8f93\\u51fa\\u7c7b\\u578b\",\"desc\":\"\\u9009\\u62e9\\u591a\\u6d41\\u8f93\\u51fa\\u7684\\u7c7b\\u578b\",\"type\":\"string\",\"fix-id\":34818,\"enabled\":false,\"size\":66,\"cur\":\"\\u5f69\\u8272+\\u7070\\u5ea6+\\u9ed1\\u767d\",\"default\":\"\\u5f69\\u8272+\\u7070\\u5ea6+\\u9ed1\\u767d\",\"range\":[\"\\u5f69\\u8272+\\u7070\\u5ea6+\\u9ed1\\u767d\",\"\\u5f69\\u8272+\\u7070\\u5ea6\",\"\\u5f69\\u8272+\\u9ed1\\u767d\",\"\\u7070\\u5ea6+\\u9ed1\\u767d\"],\"depend\":\"is-multiout==true\"},\"mode\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u989c\\u8272\\u6a21\\u5f0f\",\"desc\":\"\\u9009\\u62e9\\u8272\\u5f69\\u6a21\\u5f0f\",\"type\":\"string\",\"fix-id\":34819,\"size\":24,\"cur\":\"24\\u4f4d\\u5f69\\u8272\",\"default\":\"24\\u4f4d\\u5f69\\u8272\",\"range\":[\"24\\u4f4d\\u5f69\\u8272\",\"256\\u7ea7\\u7070\\u5ea6\",\"\\u9ed1\\u767d\",\"\\u989c\\u8272\\u81ea\\u52a8\\u8bc6\\u522b\"],\"depend\":\"is-multiout!=true\"},\"binary-threshold\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u9ed1\\u767d\\u56fe\\u50cf\\u9608\\u503c\",\"desc\":\"\\u9ad8\\u4e8e\\u8be5\\u9608\\u503c\\u4e3a1\\uff08\\u767d\\uff09\\uff0c\\u4f4e\\u4e8e\\u8be5\\u9608\\u503c\\u4e3a0\\uff08\\u9ed1\\uff09\",\"type\":\"int\",\"fix-id\":34870,\"size\":4,\"cur\":127,\"default\":127,\"range\":{\"min\":0,\"max\":255,\"step\":1},\"depend\":\"(multiout-type.enabled&&multiout-type!=\\u5f69\\u8272+\\u7070\\u5ea6) || (mode.enabled && mode==\\u9ed1\\u767d)\"},\"reverse-bw\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u9ed1\\u767d\\u56fe\\u50cf\\u53cd\\u8272\\u8f93\\u51fa\",\"desc\":\"\\u8f93\\u51fa\\u7684\\u9ed1\\u767d\\u56fe\\u50cf\\u4ee5\\u201c1\\u201d\\u4ee3\\u8868\\u9ed1\\u8272\\uff0c\\u201c0\\u201d\\u4ee3\\u8868\\u767d\\u8272\",\"type\":\"bool\",\"fix-id\":34878,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"(multiout-type.enabled&&multiout-type!=\\u5f69\\u8272+\\u7070\\u5ea6) || (mode.enabled && mode==\\u9ed1\\u767d)\"},\"filter\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u7070\\u5ea6\\u6216\\u9ed1\\u767d\\u56fe\\u50cf - \\u9664\\u8272\\u4e0e\\u589e\\u5f3a\",\"desc\":\"\\u6d88\\u9664\\u6216\\u589e\\u5f3a\\u6307\\u5b9a\\u8272\\u5f69\",\"type\":\"string\",\"fix-id\":34820,\"enabled\":false,\"size\":42,\"cur\":\"\\u4e0d\\u9664\\u8272\",\"default\":\"\\u4e0d\\u9664\\u8272\",\"range\":[\"\\u4e0d\\u9664\\u8272\",\"\\u9664\\u7ea2\\u8272\",\"\\u9664\\u7eff\\u8272\",\"\\u9664\\u84dd\\u8272\",\"\\u7ea2\\u8272\\u589e\\u5f3a\",\"\\u7eff\\u8272\\u589e\\u5f3a\",\"\\u84dd\\u8272\\u589e\\u5f3a\"],\"depend\":\"mode.enabled && (mode==256\\u7ea7\\u7070\\u5ea6 || mode==\\u9ed1\\u767d)\"},\"is-rid-multiout-red\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"24\\u4f4d\\u5f69\\u8272\\u56fe\\u50cf - \\u591a\\u6d41\\u8f93\\u51fa\\u9664\\u7ea2\",\"desc\":\"\\u540c\\u65f6\\u8f93\\u51fa\\u5f69\\u8272\\u56fe\\u50cf\\u548c\\u7070\\u5ea6\\u9664\\u7ea2\\u56fe\\u50cf\",\"type\":\"bool\",\"fix-id\":34821,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"mode.enabled && mode==24\\u4f4d\\u5f69\\u8272\"},\"is-rid-answer-sheet-red\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"24\\u4f4d\\u5f69\\u8272\\u56fe\\u50cf - \\u7b54\\u9898\\u5361\\u9664\\u7ea2\",\"desc\":\"\\u8f93\\u51fa\\u9664\\u7ea2\\u5f69\\u8272\\u56fe\\u50cf\",\"type\":\"bool\",\"fix-id\":34822,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"mode.enabled && mode==24\\u4f4d\\u5f69\\u8272\"},\"is-erase-bkg\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u80cc\\u666f\\u79fb\\u9664\",\"desc\":\"\\u79fb\\u9664\\u6587\\u7a3f\\u80cc\\u666f\\u5e95\\u8272\",\"type\":\"bool\",\"fix-id\":34823,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"mode.enabled && mode==24\\u4f4d\\u5f69\\u8272\"},\"bkg-color-range\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\" \\u80cc\\u666f\\u8272\\u5f69\\u6d6e\\u52a8\\u8303\\u56f4\",\"desc\":\"\\u4e0e\\u80cc\\u666f\\u5e95\\u8272\\u504f\\u5dee\\u5728\\u8be5\\u503c\\u8303\\u56f4\\u5185\\u7684\\u989c\\u8272\\uff0c\\u90fd\\u5c06\\u88ab\\u79fb\\u9664\",\"type\":\"int\",\"fix-id\":34824,\"enabled\":false,\"size\":4,\"cur\":20,\"default\":20,\"range\":{\"min\":1,\"max\":128,\"step\":1},\"depend\":\"is-erase-bkg==true\"},\"sharpen\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u9510\\u5316\\u4e0e\\u6a21\\u7cca\",\"desc\":\"\\u9009\\u62e9\\u9510\\u5316\\u6548\\u679c\\u6216\\u6a21\\u7cca\\u6548\\u679c\",\"type\":\"string\",\"fix-id\":34825,\"size\":20,\"cur\":\"\\u65e0\",\"default\":\"\\u65e0\",\"range\":[\"\\u65e0\",\"\\u9510\\u5316\",\"\\u8fdb\\u4e00\\u6b65\\u9510\\u5316\",\"\\u6a21\\u7cca\",\"\\u8fdb\\u4e00\\u6b65\\u6a21\\u7cca\"],\"depend\":\"mode.enabled&&(mode==24\\u4f4d\\u5f69\\u8272 || mode==256\\u7ea7\\u7070\\u5ea6)\"},\"is-rid-morr\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u53bb\\u9664\\u6469\\u5c14\\u7eb9\",\"desc\":\"\\u53bb\\u9664\\u56fe\\u50cf\\u4e2d\\u7684\\u6469\\u5c14\\u7eb9\",\"type\":\"bool\",\"fix-id\":34826,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"resolution<500&&paper!=\\u4e09\\u8054\\u8bd5\\u5377&&paper!=\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8&&paper!=\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\\u81ea\\u52a8\\u88c1\\u5207 && mode.enabled&&(mode==24\\u4f4d\\u5f69\\u8272 || mode==256\\u7ea7\\u7070\\u5ea6)\"},\"is-rid-grid\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u9664\\u7f51\\u7eb9\",\"desc\":\"\\u53bb\\u9664\\u56fe\\u50cf\\u4e2d\\u7684\\u7f51\\u7eb9\",\"type\":\"bool\",\"fix-id\":34827,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"resolution<500&&paper!=\\u4e09\\u8054\\u8bd5\\u5377&&paper!=\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8&&paper!=\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\\u81ea\\u52a8\\u88c1\\u5207 && mode.enabled&&(mode==24\\u4f4d\\u5f69\\u8272 || mode==256\\u7ea7\\u7070\\u5ea6)\"},\"is-err-extension\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u9519\\u8bef\\u6269\\u6563\",\"desc\":\"\\u4ee5\\u70b9\\u9635\\u5f62\\u5f0f\\u6784\\u5efa\\u56fe\\u50cf\",\"type\":\"bool\",\"fix-id\":34828,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"mode.enabled&&mode==\\u9ed1\\u767d\"},\"is-noise-optimize\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u9ed1\\u767d\\u56fe\\u50cf\\u566a\\u70b9\\u4f18\\u5316\",\"desc\":\"\\u53bb\\u9664\\u56fe\\u50cf\\u4e2d\\u7684\\u5b64\\u7acb\\u9ed1\\u70b9\",\"type\":\"bool\",\"fix-id\":34829,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"mode.enabled&&mode==\\u9ed1\\u767d\"},\"noise-size\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\" \\u566a\\u70b9\\u4f18\\u5316\\u5c3a\\u5bf8\",\"desc\":\"\\u8bbe\\u7f6e\\u9700\\u8981\\u53bb\\u9664\\u7684\\u9ed1\\u8272\\u5b64\\u7acb\\u70b9\\u7684\\u8fde\\u901a\\u4e2a\\u6570\",\"type\":\"int\",\"fix-id\":34830,\"size\":4,\"cur\":10,\"default\":10,\"range\":{\"min\":1,\"max\":50,\"step\":1},\"depend\":\"is-noise-optimize==true\"},\"paper\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u7eb8\\u5f20\\u5c3a\\u5bf8\",\"desc\":\"\\u8bbe\\u7f6e\\u51fa\\u56fe\\u5927\\u5c0f\",\"type\":\"string\",\"fix-id\":34831,\"size\":44,\"cur\":\"\\u5339\\u914d\\u539f\\u59cb\\u5c3a\\u5bf8\",\"default\":\"\\u5339\\u914d\\u539f\\u59cb\\u5c3a\\u5bf8\",\"range\":[\"A3\",\"8\\u5f00\",\"A4\",\"16\\u5f00\",\"A5\",\"A6\",\"B4\",\"B5\",\"B6\",\"Letter\",\"Double Letter\",\"LEGAL\",\"\\u5339\\u914d\\u539f\\u59cb\\u5c3a\\u5bf8\",{\"resolution<500\":\"\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\\u81ea\\u52a8\\u88c1\\u5207\"},{\"resolution<500\":\"\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\"},{\"resolution<500\":\"\\u4e09\\u8054\\u8bd5\\u5377\"}]},\"lateral\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u6a2a\\u5411\",\"desc\":\"\\u6a2a\\u5411\\u653e\\u7f6e\\u7eb8\\u5f20\",\"type\":\"bool\",\"fix-id\":34924,\"affect\":6,\"visible\":0,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"paper==A4 || paper==16\\u5f00 || paper==A5 || paper==A6 || paper==B5 || paper==B6 || paper==Letter\"},\"is-custom-area\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u81ea\\u5b9a\\u4e49\\u626b\\u63cf\\u533a\\u57df\",\"desc\":\"\\u81ea\\u5b9a\\u4e49\\u626b\\u63cf\\u533a\\u57df\",\"type\":\"bool\",\"fix-id\":34832,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"paper!=\\u5339\\u914d\\u539f\\u59cb\\u5c3a\\u5bf8&&paper!=\\u4e09\\u8054\\u8bd5\\u5377&&paper!=\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8&&paper!=\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\\u81ea\\u52a8\\u88c1\\u5207\"},\"tl-x\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u626b\\u63cf\\u533a\\u57df\\u5de6\\u4fa7\\uff08mm\\uff09\",\"desc\":\"\\u81ea\\u5b9a\\u4e49\\u626b\\u63cf\\u533a\\u57df\\u5de6\\u4e0a\\u89d2x\\u5750\\u6807\",\"type\":\"float\",\"fix-id\":34833,\"unit\":\"mm\",\"size\":8,\"cur\":0.000000,\"default\":0.000000,\"range\":{\"min\":0.000000,\"max\":\"br-x\",\"step\":0.010000},\"depend\":\"is-custom-area==true && is-custom-area.enabled\"},\"br-x\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u626b\\u63cf\\u533a\\u57df\\u53f3\\u4fa7\\uff08mm\\uff09\",\"desc\":\"\\u81ea\\u5b9a\\u4e49\\u626b\\u63cf\\u533a\\u57df\\u53f3\\u4e0b\\u89d2x\\u5750\\u6807\",\"type\":\"float\",\"fix-id\":34834,\"unit\":\"mm\",\"size\":8,\"cur\":210.000000,\"default\":210.000000,\"range\":{\"min\":\"tl-x\",\"max\":210.000000,\"step\":0.010000},\"depend\":\"is-custom-area==true && is-custom-area.enabled\"},\"tl-y\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u626b\\u63cf\\u533a\\u57df\\u4e0a\\u4fa7\\uff08mm\\uff09\",\"desc\":\"\\u81ea\\u5b9a\\u4e49\\u626b\\u63cf\\u533a\\u57df\\u5de6\\u4e0a\\u89d2y\\u5750\\u6807\",\"type\":\"float\",\"fix-id\":", + "34835,\"unit\":\"mm\",\"size\":8,\"cur\":0.000000,\"default\":0.000000,\"range\":{\"min\":0.000000,\"max\":\"br-y\",\"step\":0.010000},\"depend\":\"is-custom-area==true && is-custom-area.enabled\"},\"br-y\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u626b\\u63cf\\u533a\\u57df\\u4e0b\\u4fa7\\uff08mm\\uff09\",\"desc\":\"\\u81ea\\u5b9a\\u4e49\\u626b\\u63cf\\u533a\\u57df\\u53f3\\u4e0b\\u89d2y\\u5750\\u6807\",\"type\":\"float\",\"fix-id\":34836,\"unit\":\"mm\",\"size\":8,\"cur\":297.000000,\"default\":297.000000,\"range\":{\"min\":\"tl-y\",\"max\":297.000000,\"step\":0.010000},\"depend\":\"is-custom-area==true && is-custom-area.enabled\"},\"is-size-check\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u5c3a\\u5bf8\\u68c0\\u6d4b\",\"desc\":\"\\u68c0\\u6d4b\\u7eb8\\u5f20\\u5b9e\\u9645\\u5c3a\\u5bf8\\u4e0e\\u8bbe\\u7f6e\\u662f\\u5426\\u5339\\u914d\",\"type\":\"bool\",\"fix-id\":34837,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"paper==A3||paper==A4||paper==A5||paper==A6||paper==B4||paper==B5||paper==B6||paper==Double Letter||paper==LEGAL||paper==Letter\"},\"page\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u626b\\u63cf\\u9875\\u9762\",\"desc\":\"\\u8bbe\\u7f6e\\u9875\\u9762\\u626b\\u63cf\\u65b9\\u5f0f\",\"type\":\"string\",\"fix-id\":34838,\"size\":12,\"cur\":\"\\u53cc\\u9762\",\"default\":\"\\u53cc\\u9762\",\"range\":[\"\\u6b63\\u9762\",\"\\u80cc\\u9762\",\"\\u53cc\\u9762\",\"\\u5bf9\\u6298\"]},\"discardblank\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u8df3\\u8fc7\\u7a7a\\u767d\\u9875\",\"desc\":\"\",\"type\":\"bool\",\"fix-id\":34919,\"size\":4,\"cur\":false,\"default\":false},\"blank-sensitivity\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\" \\u8df3\\u8fc7\\u7a7a\\u767d\\u9875\\u7075\\u654f\\u5ea6\",\"desc\":\"\\u6570\\u503c\\u8d8a\\u5927\\uff0c\\u5219\\u8d8a\\u5bb9\\u6613\\u8df3\\u8fc7\",\"type\":\"int\",\"fix-id\":34839,\"size\":4,\"cur\":30,\"default\":30,\"range\":{\"min\":1,\"max\":100,\"step\":1},\"depend\":\"discardblank==true\"},\"fold-type\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u5bf9\\u6298\\u6a21\\u5f0f\",\"desc\":\"\",\"type\":\"string\",\"fix-id\":34887,\"size\":16,\"cur\":\"\\u5de6\\u53f3\\u5bf9\\u6298\",\"default\":\"\\u5de6\\u53f3\\u5bf9\\u6298\",\"range\":[\"\\u5de6\\u53f3\\u5bf9\\u6298\",\"\\u4e0a\\u4e0b\\u5bf9\\u6298\",\"\\u81ea\\u52a8\\u5bf9\\u6298\"],\"depend\":\"page==\\u5bf9\\u6298\"},\"resolution\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u5206\\u8fa8\\u7387\",\"desc\":\"\\u8bbe\\u7f6e\\u626b\\u63cf\\u56fe\\u50cf\\u7684\\u5206\\u8fa8\\u7387\",\"type\":\"int\",\"fix-id\":34840,\"size\":4,\"cur\":200,\"default\":200,\"range\":{\"min\":100,\"max\":{\"default\":600,\"paper==\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\\u81ea\\u52a8\\u88c1\\u5207 || paper==\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8 || paper==\\u4e09\\u8054\\u8bd5\\u5377\":500},\"step\":1}},\"image-quality\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u753b\\u8d28\",\"desc\":\"\\u9009\\u62e9\\u626b\\u63cf\\u4eea\\u7684\\u753b\\u8d28\\u6a21\\u5f0f\",\"type\":\"string\",\"fix-id\":34841,\"size\":16,\"cur\":\"\\u753b\\u8d28\\u4f18\\u5148\",\"default\":\"\\u753b\\u8d28\\u4f18\\u5148\",\"range\":[\"\\u901f\\u5ea6\\u4f18\\u5148\",\"\\u753b\\u8d28\\u4f18\\u5148\"],\"depend\":\"resolution>=300\"},\"is-exchange\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u4ea4\\u6362\\u6b63\\u53cd\\u9762\",\"desc\":\"\\u4ea4\\u6362\\u6bcf\\u5f20\\u6587\\u7a3f\\u7684\\u6b63\\u53cd\\u9762\\u51fa\\u56fe\\u987a\\u5e8f\",\"type\":\"bool\",\"fix-id\":34842,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"page==\\u53cc\\u9762\"},\"is-custom-gamma\":{\"cat\":\"base\",\"group\":\"bright\",\"title\":\"\\u542f\\u7528\\u8272\\u8c03\\u66f2\\u7ebf\",\"desc\":\"\\u81ea\\u5b9a\\u4e49\\u56fe\\u50cf\\u8272\\u8c03\\u6548\\u679c\",\"type\":\"bool\",\"fix-id\":34845,\"size\":4,\"cur\":false,\"default\":false},\"brightness\":{\"cat\":\"base\",\"group\":\"bright\",\"title\":\"\\u4eae\\u5ea6\\u503c\",\"desc\":\"\\u8c03\\u6574\\u56fe\\u50cf\\u4eae\\u5ea6\",\"type\":\"int\",\"fix-id\":34846,\"size\":4,\"cur\":128,\"default\":128,\"range\":{\"min\":1,\"max\":255,\"step\":1},\"depend\":\"is-custom-gamma==false\"},\"contrast\":{\"cat\":\"base\",\"group\":\"bright\",\"title\":\"\\u5bf9\\u6bd4\\u5ea6\",\"desc\":\"\\u8c03\\u6574\\u56fe\\u50cf\\u5bf9\\u6bd4\\u5ea6\",\"type\":\"int\",\"fix-id\":34847,\"size\":4,\"cur\":4,\"default\":4,\"range\":{\"min\":1,\"max\":7,\"step\":1},\"depend\":\"is-custom-gamma==false\"},\"gamma\":{\"cat\":\"base\",\"group\":\"bright\",\"title\":\"\\u4f3d\\u9a6c\\u503c\",\"desc\":\"\\u8c03\\u6574\\u56fe\\u50cf\\u4f3d\\u739b\\u503c\",\"type\":\"float\",\"fix-id\":34848,\"size\":8,\"cur\":1.000000,\"default\":1.000000,\"range\":{\"min\":0.010000,\"max\":5.000000,\"step\":0.499000},\"depend\":\"is-custom-gamma==false\"},\"color-correction\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u8272\\u504f\\u6821\\u6b63\",\"desc\":\"\\u8272\\u5f69\\u8fd8\\u539f\\u5ea6\\u77eb\\u6b63\\u529f\\u80fd\",\"type\":\"bool\",\"fix-id\":34888,\"size\":4,\"cur\":false,\"default\":false},\"is-anti-skew\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u81ea\\u52a8\\u7ea0\\u504f\",\"desc\":\"\\u81ea\\u52a8\\u7ea0\\u6b63\\u6b6a\\u659c\\u9001\\u5165\\u7684\\u6587\\u7a3f\\u56fe\\u50cf\",\"type\":\"bool\",\"fix-id\":34844,\"size\":4,\"cur\":true,\"default\":true,\"depend\":\"page!=\\u5bf9\\u6298\"},\"is-split\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u56fe\\u50cf\\u62c6\\u5206\",\"desc\":\"\\u81ea\\u52a8\\u62c6\\u5206\\u56fe\\u50cf\",\"type\":\"bool\",\"fix-id\":34843,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"page!=\\u5bf9\\u6298\"},\"is-erase-black-frame\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u6d88\\u9664\\u9ed1\\u6846\",\"desc\":\"\\u6d88\\u9664\\u6587\\u7a3f\\u8303\\u56f4\\u5916\\u7684\\u9ed1\\u8272\\u80cc\\u666f\",\"type\":\"bool\",\"fix-id\":34849,\"size\":4,\"cur\":true,\"default\":true},\"bkg-fill-mode\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u80cc\\u666f\\u586b\\u5145\\u65b9\\u5f0f\",\"desc\":\"\\u9009\\u62e9\\u80cc\\u666f\\u586b\\u5145\\u65b9\\u5f0f\",\"type\":\"string\",\"fix-id\":34854,\"size\":16,\"cur\":\"\\u51f8\\u591a\\u8fb9\\u5f62\",\"default\":\"\\u51f8\\u591a\\u8fb9\\u5f62\",\"range\":[\"\\u51f8\\u591a\\u8fb9\\u5f62\",\"\\u51f9\\u591a\\u8fb9\\u5f62\"],\"depend\":\"is-erase-black-frame==true\"},\"is-fill-color\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u8272\\u5f69\\u586b\\u5145\",\"desc\":\"\\u542f\\u7528\\u540e\\u9ed1\\u6846\\u90e8\\u5206\\u5c06\\u586b\\u5145\\u4e3a\\u6587\\u7a3f\\u5e95\\u8272\",\"type\":\"bool\",\"fix-id\":34859,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"is-erase-black-frame==true\"},\"threshold\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u9608\\u503c\",\"desc\":\"\\u6587\\u7a3f\\u5e95\\u8272\\u4e0e\\u9ed1\\u8272\\u80cc\\u666f\\u7070\\u5ea6\\u503c\\u7684\\u5dee\\u503c\\u5927\\u4e8e\\u8be5\\u503c\\uff0c\\u624d\\u4f1a\\u88ab\\u8bc6\\u522b\\u4e3a\\u6587\\u7a3f\",\"type\":\"int\",\"fix-id\":34851,\"size\":4,\"cur\":40,\"default\":40,\"range\":{\"min\":30,\"max\":50,\"step\":1},\"depend\":\"is-erase-black-frame==true||paper==\\u5339\\u914d\\u539f\\u59cb\\u5c3a\\u5bf8||paper==\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8||paper==\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\\u81ea\\u52a8\\u88c1\\u5207||is-anti-skew==true\"},\"anti-noise-level\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u80cc\\u666f\\u6297\\u566a\\u7b49\\u7ea7\",\"desc\":\"\\u80fd\\u591f\\u5bb9\\u5fcd\\u7684\\u80cc\\u666f\\u6742\\u8272\\u6761\\u7eb9\\u7684\\u5bbd\\u5ea6\",\"type\":\"int\",\"fix-id\":34852,\"size\":4,\"cur\":8,\"default\":8,\"range\":{\"min\":2,\"max\":20,\"step\":1},\"depend\":\"is-erase-black-frame==true||paper==\\u5339\\u914d\\u539f\\u59cb\\u5c3a\\u5bf8||paper==\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8||paper==\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\\u81ea\\u52a8\\u88c1\\u5207||is-anti-skew==true\"},\"margin\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u8fb9\\u7f18\\u7f29\\u8fdb\",\"desc\":\"\\u5bfb\\u627e\\u6587\\u7a3f\\u8fb9\\u7f18\\u65f6\\u5bf9\\u8fb9\\u7f18\\u7684\\u4fb5\\u5165\\u7a0b\\u5ea6\",\"type\":\"int\",\"fix-id\":34853,\"size\":4,\"cur\":5,\"default\":5,\"range\":{\"min\":2,\"max\":30,\"step\":1},\"depend\":\"is-erase-black-frame==true||paper==\\u5339\\u914d\\u539f\\u59cb\\u5c3a\\u5bf8||paper==\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8||paper==\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\\u81ea\\u52a8\\u88c1\\u5207||is-anti-skew==true\"},\"is-dark-sample\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u6df1\\u8272\\u6837\\u5f20\",\"desc\":\"\\u542f\\u7528\\u8be5\\u6a21\\u5f0f\\u9632\\u6b62\\u6df1\\u8272\\u5e95\\u8272\\u7684\\u6587\\u7a3f\\u56fe\\u50cf\\u88ab\\u8bef\\u5904\\u7406\",\"type\":\"bool\",\"fix-id\":34850,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"page!=\\u5bf9\\u6298&&is-erase-black-frame!=true&&paper!=\\u5339\\u914d\\u539f\\u59cb\\u5c3a\\u5bf8&&paper!=\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8&&paper!=\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\\u81ea\\u52a8\\u88c1\\u5207&&is-anti-skew!=true\"},\"is-anti-permeate\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u9632\\u6b62\\u6e17\\u900f\",\"desc\":\"\\u9632\\u6b62\\u80cc\\u9762\\u56fe\\u6848\\u6e17\\u900f\",\"type\":\"bool\",\"fix-id\":34855,\"size\":4,\"cur\":false,\"default\":false},\"permeate-level\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\" \\u9632\\u6b62\\u6e17\\u900f\\u7b49\\u7ea7\",\"desc\":\"\\u9009\\u62e9\\u9632\\u6b62\\u6e17\\u900f\\u7684\\u7b49\\u7ea7\",\"type\":\"string\",\"fix-id\":34856,\"size\":12,\"cur\":\"\\u8f83\\u5f31\",\"default\":\"\\u8f83\\u5f31\",\"range\":[\"\\u5f31\",\"\\u8f83\\u5f31\",\"\\u4e00\\u822c\",\"\\u8f83\\u5f3a\",\"\\u5f3a\"],\"depend\":\"is-anti-permeate==true\"},\"is-rid-hole-l\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u7a7f\\u5b54\\u79fb\\u9664\\u2014\\u5de6\\u4fa7\",\"desc\":\"\\u7a7f\\u5b54\\u5728\\u7eb8\\u5f20\\u4e0a\\u7684\\u5de6\\u4fa7\",\"type\":\"bool\",\"fix-id\":34879,\"size\":4,\"cur\":false,\"default\":false},\"search-hole-range-l\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\" \\u5de6\\u4fa7\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e", + "45\\u9762\\u6bd4\\u4f8b\",\"desc\":\"\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e45\\u9762\\u6bd4\\u4f8b\",\"type\":\"float\",\"fix-id\":34880,\"size\":8,\"cur\":0.100000,\"default\":0.100000,\"range\":{\"min\":0.000000,\"max\":0.500000,\"step\":0.050000},\"depend\":\"is-rid-hole-l==true\"},\"is-rid-hole-r\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u7a7f\\u5b54\\u79fb\\u9664\\u2014\\u53f3\\u4fa7\",\"desc\":\"\\u7a7f\\u5b54\\u5728\\u7eb8\\u5f20\\u4e0a\\u7684\\u53f3\\u4fa7\",\"type\":\"bool\",\"fix-id\":34881,\"size\":4,\"cur\":false,\"default\":false},\"search-hole-range-r\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\" \\u53f3\\u4fa7\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e45\\u9762\\u6bd4\\u4f8b\",\"desc\":\"\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e45\\u9762\\u6bd4\\u4f8b\",\"type\":\"float\",\"fix-id\":34882,\"size\":8,\"cur\":0.100000,\"default\":0.100000,\"range\":{\"min\":0.000000,\"max\":0.500000,\"step\":0.050000},\"depend\":\"is-rid-hole-r==true\"},\"is-rid-hole-t\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u7a7f\\u5b54\\u79fb\\u9664\\u2014\\u4e0a\\u4fa7\",\"desc\":\"\\u7a7f\\u5b54\\u5728\\u7eb8\\u5f20\\u7684\\u4e0a\\u90e8\",\"type\":\"bool\",\"fix-id\":34883,\"size\":4,\"cur\":false,\"default\":false},\"search-hole-range-t\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\" \\u4e0a\\u4fa7\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e45\\u9762\\u6bd4\\u4f8b\",\"desc\":\"\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e45\\u9762\\u6bd4\\u4f8b\",\"type\":\"float\",\"fix-id\":34884,\"size\":8,\"cur\":0.100000,\"default\":0.100000,\"range\":{\"min\":0.000000,\"max\":0.500000,\"step\":0.050000},\"depend\":\"is-rid-hole-t==true\"},\"is-rid-hole-b\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\"\\u7a7f\\u5b54\\u79fb\\u9664\\u2014\\u4e0b\\u4fa7\",\"desc\":\"\\u7a7f\\u5b54\\u5728\\u7eb8\\u5f20\\u7684\\u4e0b\\u90e8\",\"type\":\"bool\",\"fix-id\":34885,\"size\":4,\"cur\":false,\"default\":false},\"search-hole-range-b\":{\"cat\":\"base\",\"group\":\"imgp\",\"title\":\" \\u4e0b\\u4fa7\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e45\\u9762\\u6bd4\\u4f8b\",\"desc\":\"\\u7a7f\\u5b54\\u641c\\u7d22\\u8303\\u56f4\\u5360\\u5e45\\u9762\\u6bd4\\u4f8b\",\"type\":\"float\",\"fix-id\":34886,\"size\":8,\"cur\":0.100000,\"default\":0.100000,\"range\":{\"min\":0.000000,\"max\":0.500000,\"step\":0.050000},\"depend\":\"is-rid-hole-b==true\"},\"is-wait-scan\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u5f85\\u7eb8\\u626b\\u63cf\",\"desc\":\"\\u542f\\u7528\\u540e\\uff0c\\u6587\\u7a3f\\u653e\\u5165\\u626b\\u63cf\\u4eea\\u65f6\\u5c06\\u81ea\\u52a8\\u542f\\u52a8\\u626b\\u63cf\",\"type\":\"bool\",\"fix-id\":34873,\"size\":4,\"cur\":false,\"default\":false},\"wait-scan-exit\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u5f85\\u7eb8\\u626b\\u63cf\\u9000\\u51fa\\u65f6\\u95f4\",\"desc\":\"\\u8bbe\\u7f6e\\u7ed3\\u675f\\u5f85\\u7eb8\\u626b\\u63cf\\u7684\\u65f6\\u95f4\",\"type\":\"string\",\"fix-id\":34920,\"size\":16,\"cur\":\"60s\",\"default\":\"60s\",\"range\":[\"15s\",\"30s\",\"60s\",\"2min\",\"4min\",\"8min\"],\"depend\":\"is-wait-scan==true\"},\"scan-mode\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u626b\\u63cf\\u5f20\\u6570\",\"desc\":\"\\u9009\\u62e9\\u6307\\u5b9a\\u6570\\u91cf\\u626b\\u63cf\\u6216\\u8fde\\u7eed\\u626b\\u63cf\",\"type\":\"string\",\"fix-id\":34862,\"size\":24,\"cur\":\"\\u8fde\\u7eed\\u626b\\u63cf\",\"default\":\"\\u8fde\\u7eed\\u626b\\u63cf\",\"range\":[\"\\u8fde\\u7eed\\u626b\\u63cf\",\"\\u626b\\u63cf\\u6307\\u5b9a\\u5f20\\u6570\"],\"depend\":\"is-wait-scan==false\"},\"scan-count\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\" \\u626b\\u63cf\\u6570\\u91cf\",\"desc\":\"\\u626b\\u63cf\\u6307\\u5b9a\\u6570\\u91cf\",\"type\":\"int\",\"fix-id\":34863,\"size\":4,\"cur\":1,\"default\":1,\"depend\":\"scan-mode.enabled&&scan-mode==\\u626b\\u63cf\\u6307\\u5b9a\\u5f20\\u6570\"},\"direction\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u6587\\u7a3f\\u65b9\\u5411\",\"desc\":\"\\u8bbe\\u7f6e\\u56fe\\u50cf\\u7684\\u65b9\\u5411\",\"type\":\"string\",\"fix-id\":34864,\"size\":32,\"cur\":\"0\\u00b0\",\"default\":\"0\\u00b0\",\"range\":[\"0\\u00b0\",\"90\\u00b0\",\"180\\u00b0\",\"-90\\u00b0\",\"\\u81ea\\u52a8\\u6587\\u672c\\u65b9\\u5411\\u8bc6\\u522b\\u00b0\"]},\"is-rotate-bkg-180\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u80cc\\u9762\\u65cb\\u8f6c180\\u00b0\",\"desc\":\"\\u80cc\\u9762\\u626b\\u63cf\\u7684\\u56fe\\u50cf\\u65cb\\u8f6c180\\u00b0\",\"type\":\"bool\",\"fix-id\":34865,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"page!=\\u5bf9\\u6298&&direction!=\\u81ea\\u52a8\\u6587\\u672c\\u65b9\\u5411\\u8bc6\\u522b\\u00b0\"},\"is-ultrosonic\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u8d85\\u58f0\\u6ce2\\u68c0\\u6d4b\",\"desc\":\"\\u68c0\\u6d4b\\u662f\\u5426\\u51fa\\u73b0\\u53cc\\u5f20\\u9001\\u5165\",\"type\":\"bool\",\"fix-id\":34860,\"size\":4,\"cur\":true,\"default\":true},\"double-feed\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u53cc\\u5f20\\u56fe\\u7247\\u5904\\u7406\",\"desc\":\"\\u68c0\\u6d4b\\u5230\\u53cc\\u5f20\\u8fdb\\u7eb8\\u540e\\u7684\\u5904\\u7406\\u65b9\\u5f0f\",\"type\":\"string\",\"fix-id\":34872,\"size\":32,\"cur\":\"\\u4e22\\u5f03\\u56fe\\u50cf\\u5e76\\u505c\\u6b62\\u626b\\u63cf\",\"default\":\"\\u4e22\\u5f03\\u56fe\\u50cf\\u5e76\\u505c\\u6b62\\u626b\\u63cf\",\"range\":[\"\\u4e22\\u5f03\\u56fe\\u50cf\\u5e76\\u505c\\u6b62\\u626b\\u63cf\",\"\\u4e0a\\u4f20\\u56fe\\u50cf\\u5e76\\u505c\\u6b62\\u626b\\u63cf\"],\"depend\":\"is-ultrosonic==true\"},\"is-staple\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u88c5\\u8ba2\\u68c0\\u6d4b\",\"desc\":\"\\u68c0\\u6d4b\\u662f\\u5426\\u51fa\\u73b0\\u7c98\\u8fde\\u9001\\u5165\",\"type\":\"bool\",\"fix-id\":34861,\"size\":4,\"cur\":false,\"default\":false},\"is-check-askew\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u6b6a\\u659c\\u68c0\\u6d4b\",\"desc\":\"\\u68c0\\u6d4b\\u662f\\u5426\\u51fa\\u73b0\\u6b6a\\u659c\\u9001\\u5165\",\"type\":\"bool\",\"fix-id\":34868,\"size\":4,\"cur\":true,\"default\":true},\"askew-range\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u6b6a\\u659c\\u5bb9\\u5fcd\\u5ea6\",\"desc\":\"\\u503c\\u8d8a\\u5c0f\\uff0c\\u80fd\\u5bb9\\u5fcd\\u5f97\\u9001\\u5165\\u6587\\u7a3f\\u6b6a\\u659c\\u89d2\\u5ea6\\u8d8a\\u5c0f\",\"type\":\"int\",\"fix-id\":34869,\"size\":4,\"cur\":3,\"default\":3,\"range\":{\"min\":1,\"max\":5,\"step\":1},\"depend\":\"is-check-askew==true\"},\"is-check-dog-ear\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u6298\\u89d2\\u68c0\\u6d4b\",\"desc\":\"\\u68c0\\u6d4b\\u6587\\u7a3f\\u662f\\u5426\\u5b58\\u5728\\u6298\\u89d2\",\"type\":\"bool\",\"fix-id\":34866,\"size\":4,\"cur\":false,\"default\":false},\"dog-ear-size\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\" \\u6298\\u89d2\\u5927\\u5c0f\",\"desc\":\"\\u503c\\u8d8a\\u5c0f\\uff0c\\u80fd\\u68c0\\u6d4b\\u5230\\u7684\\u6298\\u89d2\\u8d8a\\u5c0f\",\"type\":\"int\",\"fix-id\":34867,\"size\":4,\"cur\":70,\"default\":70,\"range\":{\"min\":10,\"max\":300,\"step\":1},\"depend\":\"is-check-dog-ear==true\"},\"is-auto-strength\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u81ea\\u52a8\\u5206\\u7eb8\\u5f3a\\u5ea6\",\"desc\":\"\\u626b\\u63cf\\u4eea\\u81ea\\u52a8\\u4fee\\u6b63\\u5206\\u7eb8\\u529b\\u5ea6\",\"type\":\"bool\",\"fix-id\":34876,\"size\":4,\"cur\":false,\"default\":false},\"feed-strength-value\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\" \\u8fdb\\u7eb8\\u5931\\u8d25\\u7387\",\"desc\":\"\\u9ad8\\u4e8e\\u8be5\\u503c\\u65f6\\u626b\\u63cf\\u4eea\\u5c06\\u8c03\\u6574\\u5206\\u7eb8\\u529b\\u5ea6\",\"type\":\"float\",\"fix-id\":34877,\"size\":8,\"cur\":0.100000,\"default\":0.100000,\"range\":{\"min\":0.100000,\"max\":0.900000,\"step\":0.080000},\"depend\":\"is-auto-strength==true\"},\"feed-strength\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u5206\\u7eb8\\u5f3a\\u5ea6\",\"desc\":\"\\u8bbe\\u7f6e\\u626b\\u63cf\\u4eea\\u7684\\u5206\\u7eb8\\u529b\\u5ea6\",\"type\":\"string\",\"fix-id\":34874,\"size\":12,\"cur\":\"\\u4e00\\u822c\",\"default\":\"\\u4e00\\u822c\",\"range\":[\"\\u5f31\",\"\\u4e00\\u822c\",\"\\u5f3a\"],\"depend\":\"is-auto-strength!=true\"},\"time-to-sleep\":{\"cat\":\"base\",\"group\":\"feeder\",\"title\":\"\\u4f11\\u7720\\u65f6\\u95f4\",\"desc\":\"\\u8bbe\\u7f6e\\u626b\\u63cf\\u4eea\\u7684\\u4f11\\u7720\\u65f6\\u95f4\",\"type\":\"string\",\"fix-id\":34875,\"size\":16,\"cur\":\"\\u4e0d\\u4f11\\u7720\",\"default\":\"\\u4e0d\\u4f11\\u7720\",\"range\":[\"\\u4e0d\\u4f11\\u7720\",\"\\u4e94\\u5206\\u949f\",\"\\u5341\\u5206\\u949f\",\"\\u534a\\u5c0f\\u65f6\",\"\\u4e00\\u5c0f\\u65f6\",\"\\u4e24\\u5c0f\\u65f6\",\"\\u56db\\u5c0f\\u65f6\"]},\"total-cnt\":{\"cat\":\"base\",\"group\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"\\u5386\\u53f2\\u6eda\\u8f74\\u8ba1\\u6570\",\"desc\":\"\\u626b\\u63cf\\u4eea\\u4f7f\\u7528\\u4ee5\\u6765\\u626b\\u63cf\\u7eb8\\u5f20\\u603b\\u6570\",\"type\":\"int\",\"fix-id\":34889,\"readonly\":true,\"size\":4,\"auto\":false,\"cur\":0,\"default\":0},\"dev-vid\":{\"cat\":\"base\",\"group\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"USB-VID\",\"desc\":\"\\u8bbe\\u5907\\u5236\\u9020\\u5546\\u5728USB\\u7ec4\\u7ec7\\u7684ID\",\"type\":\"int\",\"fix-id\":34898,\"readonly\":true,\"size\":4,\"auto\":false,\"cur\":0,\"default\":0},\"dev-pid\":{\"cat\":\"base\",\"group\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"USB-PID\",\"desc\":\"\\u8bbe\\u5907\\u5728USB\\u7ec4\\u7ec7\\u4e2d\\u7684\\u4ea7\\u54c1ID\",\"type\":\"int\",\"fix-id\":34899,\"readonly\":true,\"size\":4,\"auto\":false,\"cur\":0,\"default\":0},\"dev-name\":{\"cat\":\"base\",\"group\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"\\u8bbe\\u5907\\u540d\\u79f0\",\"desc\":\"\\u8bbe\\u5907\\u540d\\u79f0\",\"type\":\"string\",\"fix-id\":34900,\"readonly\":true,\"size\":96,\"auto\":false,\"cur\":\"0\",\"default\":\"0\"},\"dev-model\":{\"cat\":\"base\",\"group\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"\\u4ea7\\u54c1\\u7cfb\\u5217\",\"desc\":\"\\u8bbe\\u5907\\u6240\\u5c5e\\u4ea7\\u54c1\\u7cfb\\u5217\\u540d\\u79f0\",\"type\":\"string\",\"fix-id\":34901,\"readonly\":true,\"size\":96,\"auto\":false,\"cur\":\"0\",\"", + "default\":\"0\"},\"dev-sn\":{\"cat\":\"base\",\"group\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"\\u5e8f\\u5217\\u53f7\",\"desc\":\"\\u8bbe\\u5907\\u5e8f\\u5217\\u53f7\",\"type\":\"string\",\"fix-id\":34902,\"readonly\":true,\"size\":96,\"auto\":false,\"cur\":\"0\",\"default\":\"0\"},\"fmw-ver\":{\"cat\":\"base\",\"group\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"\\u56fa\\u4ef6\\u7248\\u672c\",\"desc\":\"\\u8bbe\\u5907\\u56fa\\u4ef6\\u7248\\u672c\\u53f7\",\"type\":\"string\",\"fix-id\":34903,\"readonly\":true,\"size\":96,\"auto\":false,\"cur\":\"0\",\"default\":\"0\"},\"ip-addr\":{\"cat\":\"base\",\"group\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"IP\",\"desc\":\"\\u8bbe\\u5907\\u8054\\u7f51\\u65f6\\u6240\\u5206\\u914d\\u7684IP\\u5730\\u5740\",\"type\":\"string\",\"fix-id\":34904,\"readonly\":true,\"size\":96,\"auto\":false,\"cur\":\"0\",\"default\":\"0\"},\"mac-addr\":{\"cat\":\"base\",\"group\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"MAC\",\"desc\":\"\\u8bbe\\u5907\\u7f51\\u5361\\u5730\\u5740\",\"type\":\"string\",\"fix-id\":34905,\"readonly\":true,\"size\":96,\"auto\":false,\"cur\":\"0\",\"default\":\"0\"},\"roller-life\":{\"cat\":\"base\",\"group\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"\\u6eda\\u8f74\\u5bff\\u547d\",\"desc\":\"\\u8be5\\u8bbe\\u5907\\u6eda\\u8f74\\u8fc7\\u7eb8\\u7684\\u6700\\u5927\\u5f20\\u6570\",\"type\":\"int\",\"fix-id\":34907,\"readonly\":true,\"size\":4,\"auto\":false,\"cur\":0,\"default\":0},\"paper-on\":{\"cat\":\"base\",\"group\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"\\u6709\\u7eb8\",\"desc\":\"\\u8bbe\\u5907\\u4e0a\\u662f\\u5426\\u6709\\u7eb8\",\"type\":\"bool\",\"fix-id\":34912,\"readonly\":true,\"size\":4,\"auto\":false,\"cur\":false,\"default\":false},\"roll-cnt\":{\"cat\":\"base\",\"group\":\"\\u53ea\\u8bfb\\u5c5e\\u6027\",\"title\":\"\\u6eda\\u8f74\\u8ba1\\u6570\",\"desc\":\"\\u5f53\\u524d\\u6eda\\u8f74\\u5df2\\u7ecf\\u8fc7\\u7eb8\\u5f20\\u6570\",\"type\":\"int\",\"fix-id\":39170,\"readonly\":true,\"size\":4,\"auto\":false,\"cur\":0,\"default\":0},\"devs-log\":{\"cat\":\"base\",\"group\":\"\\u9ad8\\u7ea7\\u8bbe\\u7f6e\",\"title\":\"\\u8bbe\\u5907\\u65e5\\u5fd7\",\"desc\":\"\\u8bbe\\u5907\\u5de5\\u4f5c\\u65e5\\u5fd7\",\"type\":\"string\",\"fix-id\":39172,\"visible\":1,\"size\":256,\"auto\":false,\"cur\":\"0\",\"default\":\"0\"}}" }; static std::string device_opt_json439[] = { "{\"restore\":{\"cat\":\"base\",\"group\":\"\",\"title\":\"\\u6062\\u590d\\u9ed8\\u8ba4\\u8bbe\\u7f6e\",\"desc\":\"\\u6062\\u590d\\u9ed8\\u8ba4\\u8bbe\\u7f6e\",\"type\":\"button\",\"fix-id\":34921,\"size\":4},\"help\":{\"cat\":\"base\",\"group\":\"\",\"title\":\"\\u5e2e\\u52a9\",\"desc\":\"\\u663e\\u793a\\u8f6f\\u4ef6\\u5e2e\\u52a9\\u6587\\u6863\",\"type\":\"button\",\"fix-id\":34897,\"size\":4},\"is-multiout\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u591a\\u6d41\\u8f93\\u51fa\",\"desc\":\"\\u540c\\u65f6\\u8f93\\u51fa\\u591a\\u79cd\\u989c\\u8272\\u6a21\\u5f0f\\u7684\\u56fe\\u50cf\",\"type\":\"bool\",\"fix-id\":34817,\"size\":4,\"cur\":false,\"default\":false},\"multiout-type\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u591a\\u6d41\\u8f93\\u51fa\\u7c7b\\u578b\",\"desc\":\"\\u9009\\u62e9\\u591a\\u6d41\\u8f93\\u51fa\\u7684\\u7c7b\\u578b\",\"type\":\"string\",\"fix-id\":34818,\"enabled\":false,\"size\":66,\"cur\":\"\\u5f69\\u8272+\\u7070\\u5ea6+\\u9ed1\\u767d\",\"default\":\"\\u5f69\\u8272+\\u7070\\u5ea6+\\u9ed1\\u767d\",\"range\":[\"\\u5f69\\u8272+\\u7070\\u5ea6+\\u9ed1\\u767d\",\"\\u5f69\\u8272+\\u7070\\u5ea6\",\"\\u5f69\\u8272+\\u9ed1\\u767d\",\"\\u7070\\u5ea6+\\u9ed1\\u767d\"],\"depend\":\"is-multiout==true\"},\"mode\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u989c\\u8272\\u6a21\\u5f0f\",\"desc\":\"\\u9009\\u62e9\\u8272\\u5f69\\u6a21\\u5f0f\",\"type\":\"string\",\"fix-id\":34819,\"size\":54,\"cur\":\"24\\u4f4d\\u5f69\\u8272\",\"default\":\"24\\u4f4d\\u5f69\\u8272\",\"range\":[\"24\\u4f4d\\u5f69\\u8272\",\"256\\u7ea7\\u7070\\u5ea6\",\"\\u9ed1\\u767d\",\"\\u989c\\u8272\\u81ea\\u52a8\\u8bc6\\u522b\"],\"depend\":\"is-multiout!=true\"},\"binary-threshold\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u9ed1\\u767d\\u56fe\\u50cf\\u9608\\u503c\",\"desc\":\"\\u9ad8\\u4e8e\\u8be5\\u9608\\u503c\\u4e3a1\\uff08\\u767d\\uff09\\uff0c\\u4f4e\\u4e8e\\u8be5\\u9608\\u503c\\u4e3a0\\uff08\\u9ed1\\uff09\",\"type\":\"int\",\"fix-id\":34870,\"size\":4,\"cur\":127,\"default\":127,\"range\":{\"min\":0,\"max\":255,\"step\":1},\"depend\":\"(multiout-type.enabled&&multiout-type!=\\u5f69\\u8272+\\u7070\\u5ea6) || (mode.enabled && mode==\\u9ed1\\u767d)\"},\"reverse-bw\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u9ed1\\u767d\\u56fe\\u50cf\\u53cd\\u8272\\u8f93\\u51fa\",\"desc\":\"\\u8f93\\u51fa\\u7684\\u9ed1\\u767d\\u56fe\\u50cf\\u4ee5\\u201c1\\u201d\\u4ee3\\u8868\\u9ed1\\u8272\\uff0c\\u201c0\\u201d\\u4ee3\\u8868\\u767d\\u8272\",\"type\":\"bool\",\"fix-id\":34878,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"(multiout-type.enabled&&multiout-type!=\\u5f69\\u8272+\\u7070\\u5ea6) || (mode.enabled && mode==\\u9ed1\\u767d)\"},\"filter\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u7070\\u5ea6\\u6216\\u9ed1\\u767d\\u56fe\\u50cf - \\u9664\\u8272\\u4e0e\\u589e\\u5f3a\",\"desc\":\"\\u6d88\\u9664\\u6216\\u589e\\u5f3a\\u6307\\u5b9a\\u8272\\u5f69\",\"type\":\"string\",\"fix-id\":34820,\"enabled\":false,\"size\":42,\"cur\":\"\\u4e0d\\u9664\\u8272\",\"default\":\"\\u4e0d\\u9664\\u8272\",\"range\":[\"\\u4e0d\\u9664\\u8272\",\"\\u9664\\u7ea2\\u8272\",\"\\u9664\\u7eff\\u8272\",\"\\u9664\\u84dd\\u8272\",\"\\u7ea2\\u8272\\u589e\\u5f3a\",\"\\u7eff\\u8272\\u589e\\u5f3a\",\"\\u84dd\\u8272\\u589e\\u5f3a\"],\"depend\":\"mode.enabled && (mode==256\\u7ea7\\u7070\\u5ea6 || mode==\\u9ed1\\u767d)\"},\"is-rid-multiout-red\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"24\\u4f4d\\u5f69\\u8272\\u56fe\\u50cf - \\u591a\\u6d41\\u8f93\\u51fa\\u9664\\u7ea2\",\"desc\":\"\\u540c\\u65f6\\u8f93\\u51fa\\u5f69\\u8272\\u56fe\\u50cf\\u548c\\u7070\\u5ea6\\u9664\\u7ea2\\u56fe\\u50cf\",\"type\":\"bool\",\"fix-id\":34821,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"mode.enabled && mode==24\\u4f4d\\u5f69\\u8272\"},\"is-rid-answer-sheet-red\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"24\\u4f4d\\u5f69\\u8272\\u56fe\\u50cf - \\u7b54\\u9898\\u5361\\u9664\\u7ea2\",\"desc\":\"\\u8f93\\u51fa\\u9664\\u7ea2\\u5f69\\u8272\\u56fe\\u50cf\",\"type\":\"bool\",\"fix-id\":34822,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"mode.enabled && mode==24\\u4f4d\\u5f69\\u8272\"},\"is-erase-bkg\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u80cc\\u666f\\u79fb\\u9664\",\"desc\":\"\\u79fb\\u9664\\u6587\\u7a3f\\u80cc\\u666f\\u5e95\\u8272\",\"type\":\"bool\",\"fix-id\":34823,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"mode.enabled && mode==24\\u4f4d\\u5f69\\u8272\"},\"bkg-color-range\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\" \\u80cc\\u666f\\u8272\\u5f69\\u6d6e\\u52a8\\u8303\\u56f4\",\"desc\":\"\\u4e0e\\u80cc\\u666f\\u5e95\\u8272\\u504f\\u5dee\\u5728\\u8be5\\u503c\\u8303\\u56f4\\u5185\\u7684\\u989c\\u8272\\uff0c\\u90fd\\u5c06\\u88ab\\u79fb\\u9664\",\"type\":\"int\",\"fix-id\":34824,\"enabled\":false,\"size\":4,\"cur\":20,\"default\":20,\"range\":{\"min\":1,\"max\":128,\"step\":1},\"depend\":\"is-erase-bkg==true\"},\"sharpen\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u9510\\u5316\\u4e0e\\u6a21\\u7cca\",\"desc\":\"\\u9009\\u62e9\\u9510\\u5316\\u6548\\u679c\\u6216\\u6a21\\u7cca\\u6548\\u679c\",\"type\":\"string\",\"fix-id\":34825,\"size\":48,\"cur\":\"\\u65e0\",\"default\":\"\\u65e0\",\"range\":[\"\\u65e0\",\"\\u9510\\u5316\",\"\\u8fdb\\u4e00\\u6b65\\u9510\\u5316\",\"\\u6a21\\u7cca\",\"\\u8fdb\\u4e00\\u6b65\\u6a21\\u7cca\"],\"depend\":\"mode.enabled&&(mode==24\\u4f4d\\u5f69\\u8272 || mode==256\\u7ea7\\u7070\\u5ea6)\"},\"is-rid-morr\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u53bb\\u9664\\u6469\\u5c14\\u7eb9\",\"desc\":\"\\u53bb\\u9664\\u56fe\\u50cf\\u4e2d\\u7684\\u6469\\u5c14\\u7eb9\",\"type\":\"bool\",\"fix-id\":34826,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"resolution<500&&paper!=\\u4e09\\u8054\\u8bd5\\u5377&&paper!=\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8&&paper!=\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\\u81ea\\u52a8\\u88c1\\u5207 && mode.enabled&&(mode==24\\u4f4d\\u5f69\\u8272 || mode==256\\u7ea7\\u7070\\u5ea6)\"},\"is-rid-grid\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u9664\\u7f51\\u7eb9\",\"desc\":\"\\u53bb\\u9664\\u56fe\\u50cf\\u4e2d\\u7684\\u7f51\\u7eb9\",\"type\":\"bool\",\"fix-id\":34827,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"resolution<500&&paper!=\\u4e09\\u8054\\u8bd5\\u5377&&paper!=\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8&&paper!=\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\\u81ea\\u52a8\\u88c1\\u5207 && mode.enabled&&(mode==24\\u4f4d\\u5f69\\u8272 || mode==256\\u7ea7\\u7070\\u5ea6)\"},\"is-err-extension\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u9519\\u8bef\\u6269\\u6563\",\"desc\":\"\\u4ee5\\u70b9\\u9635\\u5f62\\u5f0f\\u6784\\u5efa\\u56fe\\u50cf\",\"type\":\"bool\",\"fix-id\":34828,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"mode.enabled&&mode==\\u9ed1\\u767d\"},\"is-noise-optimize\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u9ed1\\u767d\\u56fe\\u50cf\\u566a\\u70b9\\u4f18\\u5316\",\"desc\":\"\\u53bb\\u9664\\u56fe\\u50cf\\u4e2d\\u7684\\u5b64\\u7acb\\u9ed1\\u70b9\",\"type\":\"bool\",\"fix-id\":34829,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"mode.enabled&&mode==\\u9ed1\\u767d\"},\"noise-size\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\" \\u566a\\u70b9\\u4f18\\u5316\\u5c3a\\u5bf8\",\"desc\":\"\\u8bbe\\u7f6e\\u9700\\u8981\\u53bb\\u9664\\u7684\\u9ed1\\u8272\\u5b64\\u7acb\\u70b9\\u7684\\u8fde\\u901a\\u4e2a\\u6570\",\"type\":\"int\",\"fix-id\":34830,\"size\":4,\"cur\":10,\"default\":10,\"range\":{\"min\":1,\"max\":50,\"step\":1},\"depend\":\"is-noise-optimize==true\"},\"paper\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u7eb8\\u5f20\\u5c3a\\u5bf8\",\"desc\":\"\\u8bbe\\u7f6e\\u51fa\\u56fe\\u5927\\u5c0f\",\"type\":\"string\",\"fix-id\":34831,\"size\":96,\"cur\":\"\\u5339\\u914d\\u539f\\u59cb\\u5c3a\\u5bf8\",\"default\":\"\\u5339\\u914d\\u539f\\u59cb\\u5c3a\\u5bf8\",\"range\":[\"A3\",\"8\\u5f00\",\"A4\",\"A4\\u6a2a\\u5411\",\"16\\u5f00\",\"16\\u5f00\\u6a2a\\u5411\",\"A5\",\"A5\\u6a2a\\u5411\",\"A6\",\"A6\\u6a2a\\u5411\",\"B4\",\"B5\",\"B5\\u6a2a\\u5411\",\"B6\",\"B6\\u6a2a\\u5411\",\"Letter\",\"Letter\\u6a2a\\u5411\",\"Double Letter\",\"LEGAL\",\"\\u5339\\u914d\\u539f\\u59cb\\u5c3a\\u5bf8\",{\"resolution<500\":\"\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\\u81ea\\u52a8\\u88c1\\u5207\"},{\"resolution<500\":\"\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\"},{\"resolution<500\":\"\\u4e09\\u8054\\u8bd5\\u5377\"}]},\"is-custom-area\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u81ea\\u5b9a\\u4e49\\u626b\\u63cf\\u533a\\u57df\",\"desc\":\"\\u81ea\\u5b9a\\u4e49\\u626b\\u63cf\\u533a\\u57df\",\"type\":\"bool\",\"fix-id\":34832,\"size\":4,\"cur\":false,\"default\":false,\"depend\":\"paper!=\\u5339\\u914d\\u539f\\u59cb\\u5c3a\\u5bf8&&paper!=\\u4e09\\u8054\\u8bd5\\u5377&&paper!=\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8&&paper!=\\u6700\\u5927\\u626b\\u63cf\\u5c3a\\u5bf8\\u81ea\\u52a8\\u88c1\\u5207\"},\"tl-x\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u626b\\u63cf\\u533a\\u57df\\u5de6\\u4fa7\\uff08mm\\uff09\",\"desc\":\"\\u81ea\\u5b9a\\u4e49\\u626b\\u63cf\\u533a\\u57df\\u5de6\\u4e0a\\u89d2x\\u5750\\u6807\",\"type\":\"float\",\"fix-id\":34833,\"unit\":\"mm\",\"size\":8,\"cur\":0.000000,\"default\":0.000000,\"range\":{\"min\":0.000000,\"max\":210.000000,\"step\":21.000000},\"depend\":\"is-custom-area==true\"},\"br-x\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u626b\\u63cf\\u533a\\u57df\\u53f3\\u4fa7\\uff08mm\\uff09\",\"desc\":\"\\u81ea\\u5b9a\\u4e49\\u626b\\u63cf\\u533a\\u57df\\u53f3\\u4e0b\\u89d2x\\u5750\\u6807\",\"type\":\"float\",\"fix-id\":34834,\"unit\":\"mm\",\"size\":8,\"cur\":210.000000,\"default\":210.000000,\"range\":{\"min\":0.000000,\"max\":210.000000,\"step\":21.000000},\"depend\":\"is-custom-area==true\"},\"tl-y\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u626b\\u63cf\\u533a\\u57df\\u4e0a\\u4fa7\\uff08mm\\uff09\",\"desc\":\"\\u81ea\\u5b9a\\u4e49\\u626b\\u63cf\\u533a\\u57df\\u5de6\\u4e0a\\u89d2y\\u5750\\u6807\",\"type\":\"float\",\"fix-id\":34835,\"unit\":\"mm\",\"size\":8,\"cur\":0.000000,\"default\":0.000000,\"range\":{\"min\":0.000000,\"max\":297.000000,\"step\":29.700000},\"depend\":\"is-custom-area==true\"},\"br-y\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u626b\\u6", diff --git a/hgdriver/hgdev/hg_scanner_300.cpp b/hgdriver/hgdev/hg_scanner_300.cpp index e97be1d..ef7161f 100644 --- a/hgdriver/hgdev/hg_scanner_300.cpp +++ b/hgdriver/hgdev/hg_scanner_300.cpp @@ -834,7 +834,7 @@ int hg_scanner_300::initdevice() { if (fw.substr(4, 6) == "230303") { - string scanner_path(utils::get_module_full_path(SCANNER_DRIVER_PART_NAME)); + string scanner_path(utils::get_module_full_path(MODULE_NAME_SCANNER)); size_t pos = scanner_path.rfind(PATH_SEPARATOR[0]); if(pos++ == std::string::npos) pos = 0; @@ -1337,7 +1337,7 @@ int hg_scanner_300::set_updata0303(void) { if (fw.substr(4, 6) == "230303") { - string scanner_path = utils::get_module_full_path(SCANNER_DRIVER_PART_NAME); + string scanner_path = utils::get_module_full_path(MODULE_NAME_SCANNER); size_t pos = scanner_path.rfind(PATH_SEPARATOR[0]); if(pos++ == std::string::npos) pos = 0; diff --git a/hgdriver/hgdev/image_process.cpp b/hgdriver/hgdev/image_process.cpp index 5c558d1..bee702c 100644 --- a/hgdriver/hgdev/image_process.cpp +++ b/hgdriver/hgdev/image_process.cpp @@ -306,7 +306,7 @@ namespace hg_imgproc int init_auto_txt_hanld() { int ret = 0; - string scanner_path = utils::get_module_full_path(SCANNER_DRIVER_PART_NAME); + string scanner_path = utils::get_module_full_path(MODULE_NAME_SCANNER); size_t pos = scanner_path.rfind(PATH_SEPARATOR[0]); if (scanner_path.empty()) @@ -1160,7 +1160,7 @@ namespace hg_imgproc SDKExit ocrexit = NULL; #ifndef WIN32 - string scanner_path = utils::get_module_full_path(SCANNER_DRIVER_PART_NAME); + string scanner_path = utils::get_module_full_path(MODULE_NAME_SCANNER); if(scanner_path.empty()) { diff --git a/hgdriver/hgdev/scanner_manager.cpp b/hgdriver/hgdev/scanner_manager.cpp index b3f9eae..3cdad4d 100644 --- a/hgdriver/hgdev/scanner_manager.cpp +++ b/hgdriver/hgdev/scanner_manager.cpp @@ -1017,7 +1017,13 @@ scanner_err hg_scanner_mgr::hg_scanner_start(scanner_handle h, void* async_event } scanner_err hg_scanner_mgr::hg_scanner_stop(scanner_handle h) { - return (scanner_err)SCAN_PTR(h)->stop(); + scanner_err err = (scanner_err)SCAN_PTR(h)->stop(); + + // call from APP, block when all working-threads stopped - added on 2023-10-18 when handled double-feeding in SANE + while (SCAN_PTR(h)->is_running() != hg_scanner::THREAD_RUNNING_IDLE) + std::this_thread::sleep_for(std::chrono::milliseconds(3)); + + return err; } scanner_err hg_scanner_mgr::hg_scanner_get_img_info(scanner_handle h, SANE_Parameters* bmi, long len) { diff --git a/hgdriver/wrapper/CMakeLists.txt b/hgdriver/wrapper/CMakeLists.txt index c677bf7..dd3ced4 100644 --- a/hgdriver/wrapper/CMakeLists.txt +++ b/hgdriver/wrapper/CMakeLists.txt @@ -39,7 +39,7 @@ endif() target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/../../../build/libgdev.a ${PROJECT_SOURCE_DIR}/../../../build/libgimgproc.a - ${PROJECT_SOURCE_DIR}/../../../release/uos/${CMAKE_SYSTEM_PROCESSOR}/liblang.so + ${PROJECT_SOURCE_DIR}/../../../release/uos/${CMAKE_SYSTEM_PROCESSOR}/libyuyanbao.so ${PROJECT_SOURCE_DIR}/../3rdparty/opencv/lib/uos/${CMAKE_SYSTEM_PROCESSOR}/libopencv_imgproc.a ${PROJECT_SOURCE_DIR}/../3rdparty/opencv/lib/uos/${CMAKE_SYSTEM_PROCESSOR}/libopencv_imgcodecs.a ${PROJECT_SOURCE_DIR}/../3rdparty/opencv/lib/uos/${CMAKE_SYSTEM_PROCESSOR}/libopencv_highgui.a @@ -54,7 +54,7 @@ target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/../3rdparty/opencv/lib/uos/${CMAKE_SYSTEM_PROCESSOR}/libzlib.a ${PROJECT_SOURCE_DIR}/../3rdparty/opencv/lib/uos/${CMAKE_SYSTEM_PROCESSOR}/liblibwebp.a - ${PROJECT_SOURCE_DIR}/../../../sdk/lib/uos/${CMAKE_SYSTEM_PROCESSOR}/libusb-1.0.a #uos下放的先后顺序不对可能会导致库链接不上 + ${PROJECT_SOURCE_DIR}/../../../sdk/lib/uos/${CMAKE_SYSTEM_PROCESSOR}/libusb-1.0.a #uos下放的先后顺序不对可能会导致库链接不? udev pthread dl m) #勿修改下面预留行 @@ -70,7 +70,7 @@ message("cpu is x86_64") elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64") target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/../3rdparty/opencv/lib/uos/${CMAKE_SYSTEM_PROCESSOR}/libittnotify.a - ${PROJECT_SOURCE_DIR}/../3rdparty/opencv/lib/uos/${CMAKE_SYSTEM_PROCESSOR}/libtegra_hal.a #uos 不需要 kylin需要 + ${PROJECT_SOURCE_DIR}/../3rdparty/opencv/lib/uos/${CMAKE_SYSTEM_PROCESSOR}/libtegra_hal.a #uos 不需?kylin需? #message("静态库预留03") #message("静态库预留04") diff --git a/hgdriver/wrapper/huagaoxxx_warraper_ex.cpp b/hgdriver/wrapper/huagaoxxx_warraper_ex.cpp index 6c35aa1..ac88841 100644 --- a/hgdriver/wrapper/huagaoxxx_warraper_ex.cpp +++ b/hgdriver/wrapper/huagaoxxx_warraper_ex.cpp @@ -92,7 +92,7 @@ extern "C" pe.erase(pos); #if !defined(WIN32) && !defined(_WIN64) - g_scanner_path = utils::get_module_full_path((std::string(SCANNER_DRIVER_PART_NAME) + "." + DLL_EXTESION).c_str()); + g_scanner_path = utils::get_module_full_path(MODULE_NAME_SCANNER); scanner = g_scanner_path; #endif pos = g_scanner_path.rfind(path[0]); diff --git a/hgsane/CMakeLists.txt b/hgsane/CMakeLists.txt index afcb768..28cfa71 100644 --- a/hgsane/CMakeLists.txt +++ b/hgsane/CMakeLists.txt @@ -20,7 +20,7 @@ link_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/../../release/uos/${CMAKE_SYSTEM_PROCESSOR} ) target_link_libraries(${PROJECT_NAME} PRIVATE hgdriver - ${PROJECT_SOURCE_DIR}/../../release/uos/${CMAKE_SYSTEM_PROCESSOR}/liblang.so + ${PROJECT_SOURCE_DIR}/../../release/uos/${CMAKE_SYSTEM_PROCESSOR}/libyuyanbao.so ${PROJECT_SOURCE_DIR}/../../release/uos/${CMAKE_SYSTEM_PROCESSOR}/libhgdriver.so ) diff --git a/sdk/hginclude/huagaoxxx_warraper_ex.h b/sdk/hginclude/huagaoxxx_warraper_ex.h index c1cbe6b..f47def2 100644 --- a/sdk/hginclude/huagaoxxx_warraper_ex.h +++ b/sdk/hginclude/huagaoxxx_warraper_ex.h @@ -28,10 +28,10 @@ #include "sane/sane_ex.h" #include - #if defined(WIN32) || defined(_WIN64) +#include "../../../sdk/include/huagao/brand.h" #ifndef HGSCANNER_EXPORT -#pragma comment(lib, "scanner.lib") +#pragma comment(lib, "scannerqd.lib") #endif #define VERSION_MAJOR VERSION_MAIN #define VERSION_MINOR VERSION_SUB diff --git a/sdk/hginclude/utils.cpp b/sdk/hginclude/utils.cpp index e628dc9..8a3067a 100644 --- a/sdk/hginclude/utils.cpp +++ b/sdk/hginclude/utils.cpp @@ -1128,6 +1128,43 @@ namespace utils +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// refer +refer::refer() : ref_(1) +{ + on_born(); +} +refer::~refer() +{ + on_dead(); +} + +void refer::on_born(void) +{} +void refer::on_dead(void) +{} + +int32_t refer::add_ref(void) +{ + SIMPLE_LOCK(mutex_); + + return ++ref_; +} +int32_t refer::release(void) +{ + int32_t ref = 0; + + { + SIMPLE_LOCK(mutex_); + ref = --ref_; + } + + if (ref == 0) + delete this; + + return ref; +} + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // util chronograph::chronograph() diff --git a/sdk/hginclude/utils.h b/sdk/hginclude/utils.h index 69b823d..19dc6f6 100644 --- a/sdk/hginclude/utils.h +++ b/sdk/hginclude/utils.h @@ -8,6 +8,7 @@ #include #include #include +#include enum log_type { @@ -108,6 +109,32 @@ int gettimeofday(TIMEV* tv, struct timezone* tz); typedef struct timeval TIMEV; #endif +// object life referer +// +// derived from 'refer' if your class used in multi-threads +// +#define MUTEX std::mutex +#define LOCK_WITH_NAME(n, v) std::lock_guard n(v) +#define SIMPLE_LOCK(v) LOCK_WITH_NAME(locker, v) + +class refer +{ + volatile int32_t ref_; + MUTEX mutex_; + +protected: + refer(); + virtual ~refer(); + + virtual void on_born(void); + virtual void on_dead(void); + +public: + virtual int32_t add_ref(void); + virtual int32_t release(void); +}; + +// time utility class chronograph { TIMEV bgn_; diff --git a/twain/ds/huagaods.cpp b/twain/ds/huagaods.cpp index c797ac3..9fbd38c 100644 --- a/twain/ds/huagaods.cpp +++ b/twain/ds/huagaods.cpp @@ -1608,10 +1608,7 @@ Twpp::Result huagao_ds::imageFileXferGet(const Twpp::Identity& origin) //} { - std::string info(m_fileXfer.filePath().string()); - char r[80] = { 0 }; - sprintf(r, ": status = %d(Fail: 0x%x)\r\n", (int)ret.status(), cv_e); - utils::log_info((info + r).c_str(), 1); + utils::to_log(LOG_LEVEL_DEBUG, "FileTransfer '%s' = %d(%d)\r\n", m_fileXfer.filePath().string().c_str(), (CC)ret.status(), cv_e); } } @@ -2374,13 +2371,13 @@ void huagao_ds::init_support_caps(int err) log_attr_access((int)type, (int)msg); if (Msg::Set == msg) { auto res = data.currentItem(); - float angle = res.toFloat(); + double angle = res.toFloat(); std::string val(s2t::rotation_to_sane(angle)); int ret = SCANNER_ERR_OK; SET_SANE_OPT(ret, scanner_, TEXT_DIRECTION, &val[0]); return ret == SCANNER_ERR_OK ? success() : badValue(); } - std::vector values; + std::vector values; std::vector svalues; GET_SANE_OPT(std::string, scanner_, TEXT_DIRECTION, NULL, &svalues); @@ -2390,10 +2387,10 @@ void huagao_ds::init_support_caps(int err) Fix32 Init = Fix32(values[sane_opts::RANGE_POS_DEFAULT]), Now = Fix32(values[sane_opts::RANGE_POS_CURRENT]); std::list vls; - UInt32 i = distance(values, values[sane_opts::RANGE_POS_DEFAULT]), - n = distance(values, values[sane_opts::RANGE_POS_CURRENT]); - for (size_t i = sane_opts::RANGE_POS_ENUM_BEGIN; i < values.size(); ++i) - vls.push_back(Fix32(values[i])); + UInt32 i = distance(values, values[sane_opts::RANGE_POS_DEFAULT]), + n = distance(values, values[sane_opts::RANGE_POS_CURRENT]); + for (size_t ind = sane_opts::RANGE_POS_ENUM_BEGIN; ind < values.size(); ++ind) + vls.push_back(Fix32(values[ind])); return cap_get_enum_values(msg, data, vls, Now, Init, n, i); }; @@ -2616,16 +2613,17 @@ void huagao_ds::init_support_caps(int err) log_attr_access((int)type, (int)msg); if (Msg::Set == msg) { auto autodetectborder = data.currentItem(); + std::string val(s2t::auto_size_to_sane(autodetectborder)); int ret = SCANNER_ERR_OK; - SET_SANE_OPT(ret, scanner_, SIZE_CHECK, (bool*)&autodetectborder); + SET_SANE_OPT(ret, scanner_, PAPER, (bool*)&autodetectborder); return ret == SCANNER_ERR_OK ? success() : badValue(); } Bool init = false, erase = false; - std::vector all; - GET_SANE_OPT(bool, scanner_, SIZE_CHECK, NULL, &all); - init = (bool)all[sane_opts::RANGE_POS_DEFAULT]; - erase = (bool)all[sane_opts::RANGE_POS_CURRENT]; + std::vector sall; + GET_SANE_OPT(std::string, scanner_, PAPER, NULL, &sall); + init = s2t::auto_size_from_sane(sall[sane_opts::RANGE_POS_DEFAULT].c_str()); + erase = s2t::auto_size_from_sane(sall[sane_opts::RANGE_POS_CURRENT].c_str()); return CapSupGetAllReset(msg, data, { false,true }, erase, init, erase ? 1 : 0, 0); }; @@ -3432,10 +3430,10 @@ void huagao_ds::init_caps_from_sane_directly(const std::vector& ids) { m_query[(CapType)v] = msgSupportGetAll; m_caps[(CapType)v] = [this](Twpp::CapType type, Msg msg, Capability& data) -> Result { - std::vector all; + std::vector all; Fix32 val; - sane_opts::get_opts op(NULL, &all); - scanner_->get_value((int)type, sane_opts::set_opt_value, &op); + sane_opts::get_opts op(NULL, &all); + scanner_->get_value((int)type, sane_opts::set_opt_value, &op); op.re_order(); copy_type(val, all[sane_opts::RANGE_POS_CURRENT]); type = data.type(); @@ -3447,10 +3445,10 @@ void huagao_ds::init_caps_from_sane_directly(const std::vector& ids) { m_query[(CapType)v] = msgSupportGetAllSetReset; m_caps[(CapType)v] = [this](Twpp::CapType type, Msg msg, Capability& data) -> Result { - std::vector all; + std::vector all; value_limit lmt; - sane_opts::get_opts op(&lmt, &all); - scanner_->get_value((int)type, sane_opts::set_opt_value, &op); + sane_opts::get_opts op(&lmt, &all); + scanner_->get_value((int)type, sane_opts::set_opt_value, &op); op.re_order(); if (msg == Msg::Set || msg == Msg::Reset) { @@ -3487,8 +3485,8 @@ void huagao_ds::init_caps_from_sane_directly(const std::vector& ids) if (lmt == VAL_LIMIT_ENUM) { std::list vals; - UInt32 ni = distance(all, all[sane_opts::RANGE_POS_CURRENT]), - ii = distance(all, all[sane_opts::RANGE_POS_DEFAULT]); + UInt32 ni = distance(all, all[sane_opts::RANGE_POS_CURRENT]), + ii = distance(all, all[sane_opts::RANGE_POS_DEFAULT]); for (size_t i = sane_opts::RANGE_POS_ENUM_BEGIN; i < all.size(); ++i) { Fix32 t; diff --git a/twain/ds/s2t_api.h b/twain/ds/s2t_api.h index 11b825b..58876ef 100644 --- a/twain/ds/s2t_api.h +++ b/twain/ds/s2t_api.h @@ -133,8 +133,8 @@ typedef bool(*set_opt_value)(void* val, value_role role, value_limit limit, void class IRef { public: - COM_API_DECLARE(long, add_ref(void)); - COM_API_DECLARE(long, release(void)); + COM_API_DECLARE(int32_t, add_ref(void)); + COM_API_DECLARE(int32_t, release(void)); }; class IScanImg : public IRef // 为兼容TWAIN传输方式,位图全部转换为完整的位图文件内容,TWAIN协议层在获取数据时,根据不同传输方式跳过对应的文件头即可 - 2023-07-03 { diff --git a/twain/ds/sane_helper.cpp b/twain/ds/sane_helper.cpp index 9261d1b..b751b33 100644 --- a/twain/ds/sane_helper.cpp +++ b/twain/ds/sane_helper.cpp @@ -103,20 +103,16 @@ bool sane_helper::load_sane(const char* vendor) // libsane_hgsane.so.1, and vend clear(); -#if OS_WIN - std::string file(dll_root_ + "sane.dll"), func("sane_"); -#else - std::string file(dll_root_ + "libsane-" + vendor + ".so.1"), func("sane_"); -#endif - dll_handle_ = utils::load_dll(file.c_str(), LOAD_WITH_ALTERED_SEARCH_PATH); + dll_handle_ = utils::load_dll((dll_root_ + MODULE_NAME_SANE).c_str(), LOAD_WITH_ALTERED_SEARCH_PATH); if(!dll_handle_) { - utils::to_log(7, "load sane library(%s) = %s\n", file.c_str(), strerror(errno)); + utils::to_log(7, "load sane library(%s) = %s\n", MODULE_NAME_SANE, strerror(errno)); return false; } + std::string func("sane_"); func += vendor; - func += "_"; + func += "sane_"; #define GET_PROC_ADDR(api) \ *(void**)&invoke_sane_##api = GetProcAddress(dll_handle_, (func + #api).c_str()); \ diff --git a/twain/ds/scanned_img.cpp b/twain/ds/scanned_img.cpp index 50824c4..715da6e 100644 --- a/twain/ds/scanned_img.cpp +++ b/twain/ds/scanned_img.cpp @@ -68,33 +68,6 @@ namespace local_trans } } -////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// class refer -refer::refer() : ref_(1) -{} -refer::~refer() -{} - -COM_API_IMPLEMENT(refer, long, add_ref(void)) -{ - std::lock_guard locker(lock_); - - return ++ref_; -} -COM_API_IMPLEMENT(refer, long, release(void)) -{ - long ref = 0; - - { - std::lock_guard locker(lock_); - ref = --ref_; - } - - if (ref == 0) - delete this; - - return ref; -} @@ -455,11 +428,11 @@ void scanned_img::swap_rgb(void) } // IRef -COM_API_IMPLEMENT(scanned_img, long, add_ref(void)) +COM_API_IMPLEMENT(scanned_img, int32_t, add_ref(void)) { return refer::add_ref(); } -COM_API_IMPLEMENT(scanned_img, long, release(void)) +COM_API_IMPLEMENT(scanned_img, int32_t, release(void)) { return refer::release(); } diff --git a/twain/ds/scanned_img.h b/twain/ds/scanned_img.h index dcbdf7a..195481e 100644 --- a/twain/ds/scanned_img.h +++ b/twain/ds/scanned_img.h @@ -3,20 +3,8 @@ #include #include -class refer : public IRef -{ - std::mutex lock_; - volatile long ref_; +#include "../../sdk/hginclude/utils.h" -protected: - refer(); - virtual ~refer(); - - // IRef -public: - COM_API_OVERRIDE(long, add_ref(void)); - COM_API_OVERRIDE(long, release(void)); -}; class image_buf { @@ -74,8 +62,8 @@ protected: // IRef public: - COM_API_OVERRIDE(long, add_ref(void)); - COM_API_OVERRIDE(long, release(void)); + COM_API_OVERRIDE(int32_t, add_ref(void)); + COM_API_OVERRIDE(int32_t, release(void)); // IScanImg public: diff --git a/twain/ds/scanner.cpp b/twain/ds/scanner.cpp index 9b077cb..e5c3ef0 100644 --- a/twain/ds/scanner.cpp +++ b/twain/ds/scanner.cpp @@ -97,116 +97,6 @@ namespace callback g_scanner_instances.erase(it); } - struct - { - const char* name; - const char* title; - }g_opts[] = { {SANE_STD_OPT_NAME_RESTORE , OPTION_TITLE_HFMRSZ} - , {SANE_STD_OPT_NAME_HELP , OPTION_TITLE_BZ} - , {SANE_STD_OPT_NAME_IS_MULTI_OUT , OPTION_TITLE_DLSC} - , {SANE_STD_OPT_NAME_MULTI_OUT_TYPE , OPTION_TITLE_DLSCLX} - , {SANE_STD_OPT_NAME_COLOR_MODE , OPTION_TITLE_YSMS} - , {SANE_STD_OPT_NAME_BINARY_THRESHOLD , OPTION_TITLE_HBTXYZ} - , {SANE_STD_OPT_NAME_REVERSE_01 , OPTION_TITLE_HBTXFSSC} - , {SANE_STD_OPT_NAME_FILTER , OPTION_TITLE_HDHHBTX_CSYZQ} - , {SANE_STD_OPT_NAME_RID_MULTIOUT_RED , OPTION_TITLE_24WCSTX_DLSCCH} - , {SANE_STD_OPT_NAME_RID_ANSWER_SHEET_RED , OPTION_TITLE_24WCSTX_DTKCH} - , {SANE_STD_OPT_NAME_ERASE_BACKGROUND , OPTION_TITLE_BJYC} - , {SANE_STD_OPT_NAME_BKG_COLOR_RANGE , OPTION_TITLE_BJSCFDFW} - , {SANE_STD_OPT_NAME_SHARPEN , OPTION_TITLE_RHYMH} - , {SANE_STD_OPT_NAME_RID_MORR , OPTION_TITLE_QCMW} - , {SANE_STD_OPT_NAME_RID_GRID , OPTION_TITLE_CWW} - , {SANE_STD_OPT_NAME_ERROR_EXTENSION , OPTION_TITLE_CWKS} - , {SANE_STD_OPT_NAME_NOISE_OPTIMIZE , OPTION_TITLE_HBTXZDYH} - , {SANE_STD_OPT_NAME_NOISE_SIZE , OPTION_TITLE_ZDYHCC} - , {SANE_STD_OPT_NAME_PAPER , OPTION_TITLE_ZZCC} - , {SANE_STD_OPT_NAME_CUSTOM_AREA , OPTION_TITLE_ZDYSMQY} - , {SANE_STD_OPT_NAME_CUSTOM_AREA_LEFT , OPTION_TITLE_SMQYZCmm} - , {SANE_STD_OPT_NAME_CUSTOM_AREA_RIGHT , OPTION_TITLE_SMQYYCmm} - , {SANE_STD_OPT_NAME_CUSTOM_AREA_TOP , OPTION_TITLE_SMQYSCmm} - , {SANE_STD_OPT_NAME_CUSTOM_AREA_BOTTOM , OPTION_TITLE_SMQYXCmm} - , {SANE_STD_OPT_NAME_SIZE_CHECK , OPTION_TITLE_CCJC} - , {SANE_STD_OPT_NAME_PAGE , OPTION_TITLE_SMYM} - , {SANE_STD_OPT_NAME_DISCARD_BLANK_SENS , OPTION_TITLE_TGKBYLMD} - , {SANE_STD_OPT_NAME_RESOLUTION , OPTION_TITLE_FBL} - , {SANE_STD_OPT_NAME_TIME_TO_SLEEP , OPTION_TITLE_XMSJ} - , {SANE_STD_OPT_NAME_IMAGE_QUALITY , OPTION_TITLE_HZ} - , {SANE_STD_OPT_NAME_EXCHANGE ,OPTION_TITLE_JHZFM} - , {SANE_STD_OPT_NAME_SPLIT ,OPTION_TITLE_TXCF } - , {SANE_STD_OPT_NAME_ANTI_SKEW , OPTION_TITLE_ZDJP} - , {SANE_STD_OPT_NAME_IS_CUSTOM_GAMMA , OPTION_TITLE_QYSDQX} - , {SANE_STD_OPT_NAME_GAMMA , OPTION_TITLE_JMZ} - , {SANE_STD_OPT_NAME_BRIGHTNESS , OPTION_TITLE_LDZ} - , {SANE_STD_OPT_NAME_CONTRAST , OPTION_TITLE_DBD} - , {SANE_STD_OPT_NAME_IS_PHOTO_MODE , OPTION_TITLE_ZPMS} - , {SANE_STD_OPT_NAME_ERASE_BLACK_FRAME , OPTION_TITLE_XCHK} - , {SANE_STD_OPT_NAME_DARK_SAMPLE , OPTION_TITLE_SSYZ} - , {SANE_STD_OPT_NAME_THRESHOLD , OPTION_TITLE_YZ} - , {SANE_STD_OPT_NAME_ANTI_NOISE_LEVEL , OPTION_TITLE_BJKZDJ} - , {SANE_STD_OPT_NAME_MARGIN , OPTION_TITLE_BYSJ} - , {SANE_STD_OPT_NAME_FILL_BKG_MODE , OPTION_TITLE_BJTCFS} - , {SANE_STD_OPT_NAME_IS_ANTI_PERMEATE , OPTION_TITLE_FZST} - , {SANE_STD_OPT_NAME_ANTI_PERMEATE_LEVEL , OPTION_TITLE_FZSTDJ} - , {SANE_STD_OPT_NAME_RID_HOLE_L , OPTION_TITLE_CKYCZC} - , {SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_L , OPTION_TITLE_ZCCKSSFWZFMBL} - , {SANE_STD_OPT_NAME_RID_HOLE_R , OPTION_TITLE_CKYCYC} - , {SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_R , OPTION_TITLE_YCCKSSFWZFMBL} - , {SANE_STD_OPT_NAME_RID_HOLE_T , OPTION_TITLE_CKYCSC} - , {SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_T , OPTION_TITLE_SCCKSSFWZFMBL} - , {SANE_STD_OPT_NAME_RID_HOLE_B , OPTION_TITLE_CKYCXC} - , {SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_B , OPTION_TITLE_XCCKSSFWZFMBL} - , {SANE_STD_OPT_NAME_IS_FILL_COLOR , OPTION_TITLE_SCTC} - , {SANE_STD_OPT_NAME_IS_ULTROSONIC_CHECK , OPTION_TITLE_CSBJC} - , {SANE_STD_OPT_NAME_DOUBLE_FEED_HANDLE , OPTION_TITLE_SZTPCL} - , {SANE_STD_OPT_NAME_IS_CHECK_STAPLE , OPTION_TITLE_ZDJC} - , {SANE_STD_OPT_NAME_SCAN_MODE , OPTION_TITLE_SMZS} - , {SANE_STD_OPT_NAME_SCAN_COUNT , OPTION_TITLE_SMSL} - , {SANE_STD_OPT_NAME_TEXT_DIRECTION , OPTION_TITLE_WGFX} - , {SANE_STD_OPT_NAME_IS_ROTATE_BKG_180 , OPTION_TITLE_BMXZ180} - , {SANE_STD_OPT_NAME_IS_CHECK_DOG_EAR , OPTION_TITLE_ZJJC} - , {SANE_STD_OPT_NAME_DOG_EAR_SIZE , OPTION_TITLE_ZJDX} - , {SANE_STD_OPT_NAME_IS_CHECK_ASKEW , OPTION_TITLE_WXJC} - , {SANE_STD_OPT_NAME_ASKEW_RANGE , OPTION_TITLE_WXRRD} - , {SANE_STD_OPT_NAME_FEED_STRENGTH , OPTION_TITLE_FZQD} - , {SANE_STD_OPT_NAME_IS_AUTO_FEED_STRENGTH , OPTION_TITLE_ZDFZQD} - , {SANE_STD_OPT_NAME_FEED_STRENGTH_VALUE , OPTION_TITLE_JZSBL} - , {SANE_STD_OPT_NAME_WAIT_TO_SCAN , OPTION_TITLE_DZSM} - , {SANE_STD_OPT_NAME_FOLD_TYPE , OPTION_TITLE_DZMS} - , {SANE_STD_OPT_NAME_COLOR_CORRECTION , OPTION_TITLE_SPJZ} - }, - g_discard[] = { {SANE_STD_OPT_NAME_REVERSE_01 , "\351\273\221\347\231\275\345\233\276\345\203\217\345\217\215\350\211\262\350\276\223\345\207\272\357\274\210\346\255\243\345\270\270\351\242\234\350\211\262\344\270\272\357\274\2320-\351\273\221\350\211\262\357\274\2331-\347\231\275\350\211\262\357\274\211"} // 黑白图像反色输出(正常颜色为:0-黑色;1-白色) - , {SANE_STD_OPT_NAME_FILTER , "\347\201\260\345\272\246\346\210\226\351\273\221\347\231\275\345\233\276\345\203\217 - \351\231\244\350\211\262"} // 灰度或黑白图像 - 除色 - , {SANE_STD_OPT_NAME_IS_AUTO_FEED_STRENGTH , "\350\207\252\345\212\250\346\220\223\347\272\270\345\274\272\345\272\246"} // 自动搓纸强度 - , {SANE_STD_OPT_NAME_FEED_STRENGTH_VALUE , "\346\220\223\347\272\270\351\230\210\345\200\274"} // " 搓纸阈值" - }; - const char* option_title_2_name(const char* title) - { - while (*title == ' ') - title++; - - for (size_t i = 0; i < _countof(g_discard); ++i) - { - if (strcmp(title, g_discard[i].title) == 0) - return g_discard[i].name; - } - for (size_t i = 0; i < _countof(g_opts); ++i) - { - if (strcmp(title, g_opts[i].title) == 0) - return g_opts[i].name; - } - - return ""; - } - const char* option_name_2_title(const char* name) - { - for (size_t i = 0; i < _countof(g_opts); ++i) - { - if (strcmp(name, g_opts[i].name) == 0) - return g_opts[i].title; - } - - return ""; - } static HWND find_main_wnd(void) { @@ -251,7 +141,7 @@ namespace callback static void init_ui(void) { - std::string root(utils::get_module_full_path(SCANNER_DRIVER_PART_NAME)); + std::string root(utils::get_module_full_path(MODULE_NAME_SCANNER)); size_t pos = root.rfind(PATH_SEPARATOR[0]); if(pos != std::string::npos) @@ -449,12 +339,12 @@ int scanner::transfer_id(int id) } void scanner::apply_config(void) { - //if (callback::apply_current_config) - //{ - // char* cfg = callback::apply_current_config(scanner_name_.c_str(), handle_, &sane_api_); - // if (cfg && callback::twain_ui_free) - // callback::twain_ui_free(cfg); - //} + if (callback::apply_current_config) + { + char* cfg = callback::apply_current_config(scanner_name_.c_str(), handle_, &sane_api_); + if (cfg && callback::twain_ui_free) + callback::twain_ui_free(cfg); + } } void scanner::on_ui_event(int uev, void* sender) { @@ -582,7 +472,6 @@ int scanner::open(void) { size_t pid = -1; - // transport_config_file(); callback::reg_callback(handle_, this); scanner_name_ = name; pid = scanner_name_.find(" - "); @@ -924,11 +813,11 @@ int scanner::thread_start(void) // IRef -COM_API_IMPLEMENT(scanner, long, add_ref(void)) +COM_API_IMPLEMENT(scanner, int32_t, add_ref(void)) { return refer::add_ref(); } -COM_API_IMPLEMENT(scanner, long, release(void)) +COM_API_IMPLEMENT(scanner, int32_t, release(void)) { return refer::release(); } @@ -1543,7 +1432,7 @@ extern "C" utils::init_log(LOG_TYPE_FILE, LOG_LEVEL_ALL, "_twain"); sane_helper_ = new sane_helper(); - if(!sane_helper_->load_sane((std::string(OEM_SHORT_NAME_E) + "sane").c_str())) + if(!sane_helper_->load_sane(OEM_SHORT_NAME_E)) { delete sane_helper_; sane_helper_ = nullptr; @@ -1554,12 +1443,12 @@ extern "C" if (sane_helper_->invoke_sane_init_ex(&ver, callback::sane_event_callback, nullptr) == SANE_STATUS_GOOD) { - std::string lang(utils::get_module_full_path(SCANNER_DRIVER_PART_NAME)); + std::string lang(utils::get_module_full_path(MODULE_NAME_SCANNER)); size_t pos = lang.rfind(PATH_SEPARATOR[0]); if(pos++ == std::string::npos) pos = 0; lang.erase(pos); - lang += LANG_DLL_NAME; + lang += MODULE_NAME_LANG; pos = local_trans::load_lang_pak(lang.c_str()); utils::to_log(LOG_LEVEL_WARNING, "load language component (%s) = %s\n", lang.c_str(), strerror(pos)); diff --git a/twain/ds/scanner.h b/twain/ds/scanner.h index bef0dc4..a83b99b 100644 --- a/twain/ds/scanner.h +++ b/twain/ds/scanner.h @@ -132,8 +132,8 @@ public: // IRef public: - COM_API_OVERRIDE(long, add_ref(void)); - COM_API_OVERRIDE(long, release(void)); + COM_API_OVERRIDE(int32_t, add_ref(void)); + COM_API_OVERRIDE(int32_t, release(void)); // ISaneInvoker public: