From 2afc2dca7dd57b0df138f07507584e63fb4c647b Mon Sep 17 00:00:00 2001 From: 13038267101 Date: Sat, 19 Nov 2022 18:16:43 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=85=8D=E7=BD=AE=E6=B5=81?= =?UTF-8?q?=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hgdriver/hgdev/hg_scanner.cpp | 452 ++++++++++++++--------------- hgdriver/hgdev/hg_scanner.h | 4 +- hgdriver/hgdev/hg_scanner_200.cpp | 467 ++++++++++++++++-------------- hgdriver/hgdev/hg_scanner_239.cpp | 457 ++++++++++++++--------------- hgdriver/hgdev/hg_scanner_239.h | 2 +- hgdriver/hgdev/hg_scanner_300.cpp | 117 ++++---- hgdriver/hgdev/hg_scanner_300.h | 2 +- hgdriver/hgdev/hg_scanner_302.cpp | 121 +++++--- hgdriver/hgdev/hg_scanner_302.h | 2 +- hgdriver/hgdev/hg_scanner_400.cpp | 102 ++++--- hgdriver/hgdev/hg_scanner_402.cpp | 68 ++++- hgdriver/hgdev/hg_scanner_402.h | 2 +- hgdriver/hgdev/image_process.cpp | 4 +- 13 files changed, 931 insertions(+), 869 deletions(-) diff --git a/hgdriver/hgdev/hg_scanner.cpp b/hgdriver/hgdev/hg_scanner.cpp index 3813b05..c21246b 100644 --- a/hgdriver/hgdev/hg_scanner.cpp +++ b/hgdriver/hgdev/hg_scanner.cpp @@ -98,7 +98,7 @@ hg_scanner::hg_scanner(ScannerSerial serial , double_paper_handle_(0), keep_watermark_(false), save_feedmode_type_(false), feedmode_(1), sleeptime_(-1),split3399_(0) , async_io_(false), is_white_0_(true), isremove_left_hole(false), isremove_right_hole(false), isremove_top_hole(false), isremove_low_hole(false) , isremove_left_hole_threshold(0), isremove_right_hole_threshold(0), isremove_top_hole_threshold(0), isremove_low_hole_threshold(0) - , dump_usb_path_(""),is_kernelsnap_211209_(false), pid_(0), dump_img_(&hg_scanner::dump_image_empty), is_kernelsnap_220830_(false) + , dump_usb_path_(""),is_kernelsnap_211209_(false), pid_(0), dump_img_(&hg_scanner::dump_image_empty), is_kernelsnap_220830_(false),is_kernelsnap3288_221106_(false) { init_setting_func_map(); final_path_ = hg_log::ini_get("paths", "final_img"); @@ -996,192 +996,188 @@ int hg_scanner::hgpaper_to_devspaper(Paper_Map papermap[], int len, int& paper, return ind; } -//暂时放着 -int hg_scanner::image_configuration(LPSCANCONF ic) +int hg_scanner::image_configuration(SCANCONF &ic) { - int len = sizeof(ic), - ret = SCANNER_ERR_OK; - bzero(ic, len); - - ic->papertype = paper_size_; + int ret = 0; + ic.papertype = paper_size_; if (is_lateral(image_prc_param_.bits.paper)) - ic->paperAlign = Rot270; - // else if (image_prc_param_.bits.text_direction == TEXT_DIRECTION_AUTO) - // ic->paperAlign = AutoTextOrientation; + ic.paperAlign = Rot270; else - ic->paperAlign = Rot0; + ic.paperAlign = Rot0; - ic->en_sizecheck = size_check; - + //ic.en_sizecheck = dev_conf_.params_3399.enable_sizecheck; 子类处理 if (image_prc_param_.bits.text_direction != TEXT_DIRECTION_AUTO) - ic->imageRotateDegree = (float)image_prc_param_.bits.text_direction; + ic.imageRotateDegree = (float)image_prc_param_.bits.text_direction; else - ic->imageRotateDegree = 0; + ic.imageRotateDegree = 0; - ic->imageRotateDegree *= 90.0f; - - ic->is_duplex = (image_prc_param_.bits.page == PAGE_DOUBLE + ic.imageRotateDegree *= 90.0f; + ic.is_duplex = (image_prc_param_.bits.page == PAGE_DOUBLE || image_prc_param_.bits.page == PAGE_OMIT_EMPTY || image_prc_param_.bits.page == PAGE_OMIT_EMPTY_RECEIPT || image_prc_param_.bits.page == PAGE_FOLIO); - if (image_prc_param_.bits.page == PAGE_FOLIO) + ic.en_fold = (image_prc_param_.bits.page == PAGE_FOLIO); + ic.pixtype = image_prc_param_.bits.color_mode == COLOR_MODE_AUTO_MATCH ? 2 : image_prc_param_.bits.color_mode; + ic.automaticcolor = is_auto_matic_color; + ic.automaticcolortype = 1;// ic.pixtype; //存疑 + + ic.resolution_dst = (resolution_ >= 300) ? (is_quality_ == IMG_SPEED ? 200 : resolution_) : resolution_; + + //if (resolution_ >= 300) + //{ + // if (is_quality_ == IMG_SPEED) + // ic.resolution_dst = 200; + // else + // ic.resolution_dst = resolution_; + //} + //else + // ic.resolution_dst = resolution_; + + ic.resolution_native = 200.0f; + ic.gamma = (float)gamma_; { - ic->en_fold = fold_type_; - } - else - { - ic->en_fold = 0; + //子类处理 + /*ic.contrast = (contrast_ - 4) * 333.0; + ic.brightness = (bright_ - 128) * (2000.0 / 254.0);*/ } - ic->pixtype = image_prc_param_.bits.color_mode == COLOR_MODE_AUTO_MATCH ? 2 : image_prc_param_.bits.color_mode; - ic->automaticcolor = is_auto_matic_color; - - ic->automaticcolortype = 1;// ic->pixtype; //存疑 - if (resolution_ >= 300) - { - if (is_quality_ == IMG_SPEED) - { - ic->resolution_dst = 200; - } - else if (is_quality_ == IMG_QUALITY) - { - ic->resolution_dst = resolution_; - } - } + ic.threshold = threshold_; + ic.is_autocontrast = 0; //无参数 + ic.is_autocrop = (ic.papertype == TwSS::None || ic.papertype == TwSS::USStatement); + ic.is_autodiscradblank_normal = image_prc_param_.bits.page == PAGE_OMIT_EMPTY; + ic.discardblank_percent = omit_empty_level_ >= 70 ? 70 : omit_empty_level_; + ic.is_autodiscradblank_vince = image_prc_param_.bits.page == PAGE_OMIT_EMPTY_RECEIPT; + ic.is_switchfrontback = image_prc_param_.bits.exchange; + ic.autodescrew = image_prc_param_.bits.automatic_skew; + //ic.multi_output_red = image_prc_param_.bits.rid_red; //必须屏蔽,否则超时,未知错误不可描述。 + ic.hsvcorrect = image_prc_param_.bits.rid_answer_red; + ic.sharpen = image_prc_param_.bits.sharpen; + //ic.enhance_color = image_prc_param_.bits.rid_color; //加这个会有问题 + ic.fillbackground = image_prc_param_.bits.erase_black_frame; + ic.is_convex = (image_prc_param_.bits.fill_background == FILL_BKG_CONVEX_POLYGON); + if (ic.resolution_dst == 300) + ic.noise = anti_noise_ * 1.5; + else if (ic.resolution_dst == 600) + ic.noise = anti_noise_ * 3; else + ic.noise = anti_noise_; + + ic.indent = margin_; + ic.AutoCrop_threshold = threshold_; { - ic->resolution_dst = resolution_; + //子类处理 + //if (test_1_paper_) + //{ + // LOG_INFO(LOG_LEVEL_DEBUG_INFO, "scanning mode: testing ONE paper ...\n"); + // ic.scannum = ic.is_duplex ? 2 : 1; + //} + //else + //{ + // if (scan_count_ == -1) + // ic.scannum = -1; + // else + // ic.scannum = (ic.is_duplex ? scan_count_ * 2 : scan_count_); + //} } - - ic->resolution_native = 200.0f; - ic->gamma = (float)gamma_; - ic->contrast = (contrast_ - 4) * 333.0; - ic->brightness = (bright_ - 128) * (2000.0 / 254.0); - ic->threshold = threshold_; - ic->is_autocontrast = 0; //无参数 - ic->is_autocrop = (ic->papertype == TwSS::None || ic->papertype == TwSS::USStatement); - ic->is_autodiscradblank_normal = image_prc_param_.bits.page == PAGE_OMIT_EMPTY; - ic->discardblank_percent = omit_empty_level_ >= 70 ? 70 : omit_empty_level_; - ic->is_autodiscradblank_vince = image_prc_param_.bits.page == PAGE_OMIT_EMPTY_RECEIPT; - ic->is_switchfrontback = image_prc_param_.bits.exchange; - ic->autodescrew = image_prc_param_.bits.automatic_skew; - //ic->multi_output_red = image_prc_param_.bits.rid_red; //必须屏蔽,否则超时,未知错误不可描述。 - ic->hsvcorrect = image_prc_param_.bits.rid_answer_red; - ic->sharpen = image_prc_param_.bits.sharpen; - //ic->enhance_color = image_prc_param_.bits.rid_color; //加这个会有问题 - ic->fillbackground = image_prc_param_.bits.erase_black_frame; - ic->is_convex = (image_prc_param_.bits.fill_background == FILL_BKG_CONVEX_POLYGON); - if (ic->resolution_dst == 300) - ic->noise = anti_noise_ * 1.5; - else if (ic->resolution_dst == 600) - ic->noise = anti_noise_ * 3; - else - ic->noise = anti_noise_; - - ic->indent = margin_; - ic->AutoCrop_threshold = threshold_; - if (test_1_paper_) + ic.is_backrotate180 = image_prc_param_.bits.rotate_back_180; + ic.is_dogeardetection = image_prc_param_.bits.fractate_check; { - LOG_INFO(LOG_LEVEL_DEBUG_INFO, "scanning mode: testing ONE paper ...\n"); - ic->scannum = ic->is_duplex ? 2 : 1; + //子类处理 + //ic.hardwarecaps.en_skrewdetect = dev_conf_.params_3399.screw_detect_enable; + //ic.hardwarecaps.en_doublefeed = dev_conf_.params_3399.ultrasonic_enable; + //ic.hardwarecaps.en_stapledetect = dev_conf_.params_3399.staple_enbale; + //ic.hardwarecaps.skrewdetectlevel = dev_conf_.params_3399.screw_detect_level; + //ic.hardwarecaps.is_autopaper = dev_conf_.params_3399.is_autopaper; } - else + ic.hardwarecaps.capturepixtype = 0; //暂无参数 获取图像类型 + ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //暂无参数 设置休眠时间 两个参数3399未使用 + ic.fillhole.is_fillhole = image_prc_param_.bits.rid_hole; + ic.fillhole.fillholeratio = rid_hole_range_; + ic.detachnoise.is_detachnoise = image_prc_param_.bits.noise_optimize; + ic.detachnoise.detachnoise = noise_range_; + ic.is_autotext = image_prc_param_.bits.text_direction == TEXT_DIRECTION_AUTO ? 1 : 0; + ic.isfillcolor = is_color_fill; + ic.refuseInflow = image_prc_param_.bits.is_permeate; + ic.colorCorrection = 0; + ic.removeMorr = image_prc_param_.bits.remove_morr; + ic.errorExtention = image_prc_param_.bits.error_extention;// + ic.textureRemove = image_prc_param_.bits.remove_txtture;// + ic.splitImage = image_prc_param_.bits.split; { - if (scan_count_ == -1) - ic->scannum = -1; - else - ic->scannum = (ic->is_duplex ? scan_count_ * 2 : scan_count_); - } - ic->is_backrotate180 = image_prc_param_.bits.rotate_back_180; - ic->is_dogeardetection = image_prc_param_.bits.fractate_check; - - //ic->hardwarecaps.en_skrewdetect = dev_conf_.params_3399.screw_detect_enable; - //ic->hardwarecaps.en_doublefeed = dev_conf_.params_3399.ultrasonic_enable; - //ic->hardwarecaps.en_stapledetect = dev_conf_.params_3399.staple_enbale; - //ic->hardwarecaps.skrewdetectlevel = dev_conf_.params_3399.screw_detect_level; - // ic->hardwarecaps.is_autopaper = dev_conf_.params_3399.is_autopaper; - - ic->hardwarecaps.capturepixtype = 0; //暂无参数 获取图像类型 - ic->hardwarecaps.lowpowermode = LowPowerMode::Min_None; //暂无参数 设置休眠时间 两个参数3399未使用 - ic->fillhole.is_fillhole = image_prc_param_.bits.rid_hole; - ic->fillhole.fillholeratio = rid_hole_range_; - ic->detachnoise.is_detachnoise = image_prc_param_.bits.noise_optimize; - ic->detachnoise.detachnoise = noise_range_; - ic->is_autotext = image_prc_param_.bits.text_direction == TEXT_DIRECTION_AUTO ? 1 : 0; - ic->isfillcolor = is_color_fill; - ic->refuseInflow = image_prc_param_.bits.is_permeate; - ic->colorCorrection = 0; - ic->removeMorr = image_prc_param_.bits.remove_morr; - ic->errorExtention = image_prc_param_.bits.error_extention;// - ic->textureRemove = image_prc_param_.bits.remove_txtture;// - ic->splitImage = image_prc_param_.bits.split; - { - ic->cropRect.enable = custom_area_; - int height = (custom_area_br_y_ * ic->resolution_dst) / 25.4 - (custom_area_lt_y_ * ic->resolution_dst / 25.4); - int width = (custom_area_br_x_ * ic->resolution_dst) / 25.4 - (custom_area_lt_x_ * ic->resolution_dst / 25.4); - ic->cropRect.height = height; - ic->cropRect.width = width; - ic->cropRect.x = custom_area_lt_x_ * ic->resolution_dst / 25.4; - ic->cropRect.y = custom_area_lt_y_ * ic->resolution_dst / 25.4; - } - ic->multiOutput = (MultiOutput)image_prc_param_.bits.multi_out; - ic->normalCrop = image_prc_param_.bits.dark_sample; - ic->dogeardistabce = fractate_level_; - ic->fadeback = image_prc_param_.bits.erase_bakground; - ic->fadebackrange = erase_bkg_range_; - ic->isuoloadexceptionimage = (double_paper_handle_ & DOUBLE_PAPER_SAVE_IMG) == DOUBLE_PAPER_SAVE_IMG; - adjust_filling_hole(ic); - - - int filter_clr[] = { 3, 0, 1, 2, 5, 6, 7 }; - if (image_prc_param_.bits.color_mode == COLOR_MODE_24_BITS || image_prc_param_.bits.color_mode == COLOR_MODE_AUTO_MATCH) - ic->filter = 3; - else - { - ic->filter = filter_clr[image_prc_param_.bits.rid_color]; - // if(ic->filter != 3) - // ic->pixtype = 2; - - ic->hsvcorrect = 0; - ic->multi_output_red = 0; - ic->multiOutput = MultiOutput::Unused; - - } - //多留输出的处理 - if (image_prc_param_.bits.multi_out == MULTI_GRAY_AND_BW && is_multiout) - { - ic->pixtype = 1; - } - else if ((image_prc_param_.bits.multi_out == MULTI_OUT_ALL || image_prc_param_.bits.multi_out == MULTI_COLOR_AND_GRAY || image_prc_param_.bits.multi_out == MULTI_COLOR_AND_BW) && is_multiout) - { - ic->pixtype = 2; - + ic.cropRect.enable = custom_area_; + int height = (custom_area_br_y_ * ic.resolution_dst) / 25.4 - (custom_area_lt_y_ * ic.resolution_dst / 25.4); + int width = (custom_area_br_x_ * ic.resolution_dst) / 25.4 - (custom_area_lt_x_ * ic.resolution_dst / 25.4); + ic.cropRect.height = height; + ic.cropRect.width = width; + ic.cropRect.x = custom_area_lt_x_ * ic.resolution_dst / 25.4; + ic.cropRect.y = custom_area_lt_y_ * ic.resolution_dst / 25.4; } + ic.multiOutput = (MultiOutput)image_prc_param_.bits.multi_out; + ic.normalCrop = image_prc_param_.bits.dark_sample; + ic.dogeardistabce = fractate_level_; + ic.fadeback = image_prc_param_.bits.erase_bakground; + ic.fadebackrange = erase_bkg_range_; + ic.isuoloadexceptionimage = (double_paper_handle_ & DOUBLE_PAPER_SAVE_IMG) == DOUBLE_PAPER_SAVE_IMG; + adjust_filling_hole(&ic); + ic.fold_concatmode = fold_type_; + //多流输出优先级最高 if (is_multiout) { - ic->hsvcorrect = 0; - ic->multi_output_red = 0; - ic->fadeback = false; - ic->sharpen = 0; - ic->removeMorr = 0; - ic->textureRemove = 0; - - ic->errorExtention = 0; - ic->detachnoise.is_detachnoise = 0; + ic.pixtype = image_prc_param_.bits.multi_out == MULTI_GRAY_AND_BW ? COLOR_MODE_256_GRAY : COLOR_MODE_24_BITS; + ic.filter = 3; + ic.hsvcorrect = 0; + ic.multi_output_red = 0; + ic.fadeback = false; + ic.sharpen = 0; + ic.removeMorr = 0; + ic.textureRemove = 0; + ic.errorExtention = 0; + ic.detachnoise.is_detachnoise = 0; } - if (ic->pixtype == 0) + else if (image_prc_param_.bits.multi_out == COLOR_MODE_24_BITS) { - ic->hsvcorrect = 0; - ic->multi_output_red = 0; - ic->fadeback = false; - ic->sharpen = 0; - ic->removeMorr = 0; - ic->textureRemove = 0; + ic.filter = 3; + ic.errorExtention = 0; + ic.detachnoise.is_detachnoise = 0; } + else if (image_prc_param_.bits.multi_out == COLOR_MODE_256_GRAY) + { + int filter_clr[] = { 3, 0, 1, 2, 5, 6, 7 }; + ic.filter = filter_clr[image_prc_param_.bits.rid_color]; + ic.multi_output_red = 0; + ic.hsvcorrect = 0; + ic.fadeback = false; + ic.errorExtention = 0; + ic.detachnoise.is_detachnoise = 0; + } + else if (image_prc_param_.bits.multi_out == COLOR_MODE_BLACK_WHITE) + { + int filter_clr[] = { 3, 0, 1, 2, 5, 6, 7 }; + ic.filter = filter_clr[image_prc_param_.bits.rid_color]; + ic.multi_output_red = 0; + ic.hsvcorrect = 0; + ic.fadeback = false; + ic.sharpen = 0; + ic.removeMorr = 0; + ic.textureRemove = 0; + } + else if (image_prc_param_.bits.multi_out == COLOR_MODE_AUTO_MATCH) + { + ic.pixtype = 2; + ic.filter = 3; + ic.hsvcorrect = 0; + ic.multi_output_red = 0; + ic.fadeback = false; + ic.sharpen = 0; + ic.removeMorr = 0; + ic.textureRemove = 0; + ic.errorExtention = 0; + ic.detachnoise.is_detachnoise = 0; + } //自定义裁切 if (image_prc_param_.bits.paper == PAPER_AUTO_MATCH || image_prc_param_.bits.paper == PAPER_MAX_SIZE @@ -1189,72 +1185,61 @@ int hg_scanner::image_configuration(LPSCANCONF ic) || image_prc_param_.bits.paper == PAPER_TRIGEMINY ) { - ic->cropRect.enable = false; + ic.cropRect.enable = false; } + img_conf_ = ic; + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.pixtype=%d", ic.pixtype); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.papertype=%d", ic.papertype); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.AutoCrop_threshold=%d", ic.AutoCrop_threshold); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.autodescrew=%d", ic.autodescrew); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.automaticcolor=%d", ic.automaticcolor); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.brightness=%f", ic.brightness); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.contrast=%f", ic.contrast); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.en_fold=%d", ic.en_fold); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.en_sizecheck=%d", ic.en_sizecheck); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.enhance_color=%d", ic.enhance_color); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.fillbackground=%d", ic.fillbackground); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.filter=%d", ic.filter); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.gamma=%f", ic.gamma); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.hardwarecaps.capturepixtype=%d", ic.hardwarecaps.capturepixtype); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.hardwarecaps.en_doublefeed=%d", ic.hardwarecaps.en_doublefeed); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.hsvcorrect=%d", ic.hsvcorrect); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.imageRotateDegree=%f", ic.imageRotateDegree); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.indent=%d", 5); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.is_autocontrast=%d", ic.is_autocontrast); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.is_autocrop=%d", ic.is_autocrop); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.is_autodiscradblank_normal=%d", ic.is_autodiscradblank_normal); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.is_autodiscradblank_vince=%d", ic.is_autodiscradblank_vince); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.is_autotext=%d", ic.is_autotext); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.is_backrotate180=%d", ic.is_backrotate180); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.is_convex=%d", ic.is_convex); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.is_duplex=%d", ic.is_duplex); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.is_switchfrontback=%d", ic.is_switchfrontback); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.is_dogeardetection=%d", ic.is_dogeardetection); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.fillhole.multi_output_red=%d", ic.multi_output_red); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.noise=%d", ic.noise); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.pixtype=%d", ic.pixtype); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.resolution_dst=%f", ic.resolution_dst); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.resolution_native=%f", ic.resolution_native); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.scannum=%d", ic.scannum); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.sharpen=%d", ic.sharpen); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.discardblank_percent=%d", ic.discardblank_percent); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.detachnoise.is_detachnoise=%d", ic.detachnoise.is_detachnoise); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.detachnoise.detachnoise=%d\r ", ic.detachnoise.detachnoise); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.detachnoise.refuseInflow=%d\r ", ic.refuseInflow); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.detachnoise.refuseInflow=%d\r ", ic.refuseInflow); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.removeMorr=%d\r ", ic.removeMorr); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.errorExtention=%d\r ", ic.errorExtention); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.textureRemove=%d\r\n ", ic.refuseInflow); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.fillhole.is_fillhole=%d\r\n ", ic.fillhole.is_fillhole); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.ic.fillhole.fillholeratio=%d\r\n ", ic.fillhole.fillholeratio); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.fadeback=%d\r\n ", ic.fadeback); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.cropRect.enable=%d\r ", ic.cropRect.enable); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.cropRect.width=%d\r\n ", ic.cropRect.width); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.cropRect.height=%d\r\n ", ic.cropRect.height); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.cropRect.x=%d\r\n ", ic.cropRect.x); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic.cropRect.y=%d\r\n ", ic.cropRect.y); - { - std::lock_guard lock(io_lock_); - - ret = io_->write_bulk(&ic, &len); - - this_thread::sleep_for(chrono::milliseconds(500)); - io_->set_timeout(2000);//必要延时 - } - - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "Write-down 0x%x bytes image process parameters\n", len); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->pixtype=%d", ic->pixtype); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->papertype=%d", ic->papertype); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->AutoCrop_threshold=%d", ic->AutoCrop_threshold); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->autodescrew=%d", ic->autodescrew); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->automaticcolor=%d", ic->automaticcolor); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->brightness=%f", ic->brightness); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->contrast=%f", ic->contrast); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->en_fold=%d", ic->en_fold); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->en_sizecheck=%d", ic->en_sizecheck); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->enhance_color=%d", ic->enhance_color); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->fillbackground=%d", ic->fillbackground); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->filter=%d", ic->filter); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->gamma=%f", ic->gamma); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->hardwarecaps.capturepixtype=%d", ic->hardwarecaps.capturepixtype); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->hardwarecaps.en_doublefeed=%d", ic->hardwarecaps.en_doublefeed); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->hsvcorrect=%d", ic->hsvcorrect); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->imageRotateDegree=%f", ic->imageRotateDegree); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->indent=%d", 5); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->is_autocontrast=%d", ic->is_autocontrast); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->is_autocrop=%d", ic->is_autocrop); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->is_autodiscradblank_normal=%d", ic->is_autodiscradblank_normal); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->is_autodiscradblank_vince=%d", ic->is_autodiscradblank_vince); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->is_autotext=%d", ic->is_autotext); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->is_backrotate180=%d", ic->is_backrotate180); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->is_convex=%d", ic->is_convex); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->is_duplex=%d", ic->is_duplex); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->is_switchfrontback=%d", ic->is_switchfrontback); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->is_dogeardetection=%d", ic->is_dogeardetection); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->fillhole.multi_output_red=%d", ic->multi_output_red); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->noise=%d", ic->noise); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->pixtype=%d", ic->pixtype); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->resolution_dst=%f", ic->resolution_dst); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->resolution_native=%f", ic->resolution_native); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->scannum=%d", ic->scannum); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->sharpen=%d", ic->sharpen); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->discardblank_percent=%d", ic->discardblank_percent); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->detachnoise.is_detachnoise=%d", ic->detachnoise.is_detachnoise); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->detachnoise.detachnoise=%d\r ", ic->detachnoise.detachnoise); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->detachnoise.refuseInflow=%d\r ", ic->refuseInflow); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->detachnoise.refuseInflow=%d\r ", ic->refuseInflow); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->removeMorr=%d\r ", ic->removeMorr); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->errorExtention=%d\r ", ic->errorExtention); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->textureRemove=%d\r\n ", ic->refuseInflow); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->fillhole.is_fillhole=%d\r\n ", ic->fillhole.is_fillhole); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->ic->fillhole.fillholeratio=%d\r\n ", ic->fillhole.fillholeratio); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->fadeback=%d\r\n ", ic->fadeback); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->cropRect.enable=%d\r ", ic->cropRect.enable); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->cropRect.width=%d\r\n ", ic->cropRect.width); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->cropRect.height=%d\r\n ", ic->cropRect.height); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->cropRect.x=%d\r\n ", ic->cropRect.x); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "\n ic->cropRect.y=%d\r\n ", ic->cropRect.y); - - img_conf_ = *ic; return ret; } int hg_scanner::invoke_setting_xxx(int(hg_scanner::*func)(void*), void* data) @@ -1370,14 +1355,14 @@ int hg_scanner::setting_multi_out(void* data) int val = image_prc_param_.bits.color_mode; VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "image_prc_param_.bits.multi_out %d\n", image_prc_param_.bits.multi_out); - if (is_multiout) - { - if (image_prc_param_.bits.multi_out == MULTI_GRAY_AND_BW) - val = COLOR_MODE_256_GRAY; - else - val = COLOR_MODE_24_BITS; - } - on_color_mode_changed(val); + //if (is_multiout) + //{ + // if (image_prc_param_.bits.multi_out == MULTI_GRAY_AND_BW) + // val = COLOR_MODE_256_GRAY; + // else + // val = COLOR_MODE_24_BITS; + //} + //on_color_mode_changed(val); return SCANNER_ERR_OK; } @@ -1394,26 +1379,25 @@ int hg_scanner::setting_multi_out_type(void* data) save_multiout = str; VLOG_MINI_3(LOG_LEVEL_DEBUG_INFO, "set multi_out type from %s to %s = %s\n", multi_out_string(image_prc_param_.bits.multi_out).c_str(), (char*)data, hg_scanner_err_name(ret)); - if (image_prc_param_.bits.multi_out == MULTI_GRAY_AND_BW) + /*if (image_prc_param_.bits.multi_out == MULTI_GRAY_AND_BW) color = COLOR_MODE_256_GRAY; else color = COLOR_MODE_24_BITS; - on_color_mode_changed(color); + on_color_mode_changed(color);*/ return ret; } int hg_scanner::setting_rid_color(void* data) { std::string str((char*)data); int ret = SCANNER_ERR_OK, - color = -1, old = image_prc_param_.bits.rid_color; bool exact = check_range(SANE_STD_OPT_NAME_FILTER, str); image_prc_param_.bits.rid_color = match_best_rid_color(str, NULL); - on_color_mode_changed(color); + //on_color_mode_changed(color); if (!exact) { diff --git a/hgdriver/hgdev/hg_scanner.h b/hgdriver/hgdev/hg_scanner.h index 606b1f7..63bf299 100644 --- a/hgdriver/hgdev/hg_scanner.h +++ b/hgdriver/hgdev/hg_scanner.h @@ -281,6 +281,8 @@ protected: bool is_kernelsnap_220830_; //此版本支持待纸扫描,手动睡眠唤醒,分纸强度 bool is_kernelsnap_211209_; //获取固件版本号是否是新旧版本 + bool is_kernelsnap3288_221106_; //G300 3288 在221106版本支持真实dpi + SCANCONF img_conf_; //此参数外部不做任何改变,请在writedown_image_configuration做修改 std::string img_type_; @@ -347,7 +349,7 @@ public: int set_setting(const char* name, void* data, int len); int get_setting(const char* name, char* json_txt_buf, int* len); int hgpaper_to_devspaper(Paper_Map papermap[], int len, int& paper, bool* exact, TwSS* type); - int image_configuration(LPSCANCONF ic); + int image_configuration(SCANCONF &ic); std::string name(void); int status(void); bool is_online(void); diff --git a/hgdriver/hgdev/hg_scanner_200.cpp b/hgdriver/hgdev/hg_scanner_200.cpp index 8af704e..b76026e 100644 --- a/hgdriver/hgdev/hg_scanner_200.cpp +++ b/hgdriver/hgdev/hg_scanner_200.cpp @@ -223,7 +223,7 @@ int hg_scanner_200::start(void) //discard_prev(); user_cancel_ = false; - //ret = writedown_device_configuration(true); + ret = writedown_device_configuration(true); if (ret == SCANNER_ERR_OK) writedown_image_configuration(); else @@ -417,6 +417,16 @@ int hg_scanner_200::writedown_device_configuration(bool type,setting_hardware::H if (!d) d = &dsp_config_; + if (is_multiout) + { + d->params_dsp.color = image_prc_param_.bits.multi_out == MULTI_COLOR_AND_BW ? 0 : 1; + } + else if ((image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY + || image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE) + && image_prc_param_.bits.rid_color != RID_COLOR_NONE) + { + d->params_dsp.color = 1; + } USBCB usbcb = { setting3288dsp::CONFIGURED_DATA, d->value, 0 }; len = sizeof(USBCB); @@ -429,18 +439,8 @@ int hg_scanner_200::writedown_device_configuration(bool type,setting_hardware::H int hg_scanner_200::on_color_mode_changed(int& color_mode) { - int ret = SCANNER_ERR_OK; - - if (color_mode == COLOR_MODE_BLACK_WHITE || color_mode == COLOR_MODE_256_GRAY) - { - dsp_config_.params_dsp.color = 0; - } - else if(color_mode == COLOR_MODE_24_BITS || color_mode == COLOR_MODE_AUTO_MATCH) - { - dsp_config_.params_dsp.color = 1; - } - - return ret; + dsp_config_.params_dsp.color = (color_mode == COLOR_MODE_BLACK_WHITE || color_mode == COLOR_MODE_256_GRAY) ? 0 : 1; + return SCANNER_ERR_OK; } int hg_scanner_200::on_paper_changed(int& paper) { @@ -611,71 +611,20 @@ int hg_scanner_200::initdevice() void hg_scanner_200::writedown_image_configuration(void) { SCANCONF ic; + int len = sizeof(ic); - ic.papertype = paper_size_; - - if (is_lateral(image_prc_param_.bits.paper)) - ic.paperAlign = Rot270; - // else if (image_prc_param_.bits.text_direction == TEXT_DIRECTION_AUTO) - // ic.paperAlign = AutoTextOrientation; - else - ic.paperAlign = Rot0; - - ic.en_sizecheck = dsp_config_.params_dsp.enable_sizecheck; - -if (image_prc_param_.bits.text_direction != TEXT_DIRECTION_AUTO) - ic.imageRotateDegree = image_prc_param_.bits.text_direction; -else - ic.imageRotateDegree = 0; - - ic.is_duplex = (image_prc_param_.bits.page == PAGE_DOUBLE || image_prc_param_.bits.page == PAGE_OMIT_EMPTY || - image_prc_param_.bits.page == PAGE_OMIT_EMPTY_RECEIPT || image_prc_param_.bits.page ==PAGE_FOLIO); - - ic.en_fold = (image_prc_param_.bits.page == PAGE_FOLIO); - - ic.pixtype = image_prc_param_.bits.color_mode == COLOR_MODE_AUTO_MATCH ? 2 : image_prc_param_.bits.color_mode; - - ic.automaticcolor = is_auto_matic_color; - ic.automaticcolortype = 1;// ic.pixtype; //存疑 - ic.resolution_dst = resolution_; - ic.resolution_native = 200; - - ic.gamma = (float)gamma_; - ic.contrast = contrast_ ; - ic.brightness = bright_ ; - ic.threshold = threshold_; - ic.is_autocontrast = 0; //无参数 - ic.is_autocrop = (ic.papertype == TwSS::None || ic.papertype ==TwSS::USStatement); - ic.is_autodiscradblank_normal = image_prc_param_.bits.page == PAGE_OMIT_EMPTY; - ic.discardblank_percent = omit_empty_level_; //默认20 - ic.is_autodiscradblank_vince = image_prc_param_.bits.page == PAGE_OMIT_EMPTY_RECEIPT; - ic.is_switchfrontback = image_prc_param_.bits.exchange; - ic.autodescrew = image_prc_param_.bits.automatic_skew; - ic.multi_output_red = image_prc_param_.bits.rid_red; - ic.hsvcorrect = image_prc_param_.bits.rid_answer_red; - - ic.sharpen = image_prc_param_.bits.sharpen; - //ic.enhance_color = image_prc_param_.bits.rid_color; - ic.fillbackground = image_prc_param_.bits.erase_black_frame; - ic.is_convex = (image_prc_param_.bits.fill_background == FILL_BKG_CONVEX_POLYGON); - ic.noise = image_prc_param_.bits.noise_optimize; - ic.indent = margin_; - ic.AutoCrop_threshold = threshold_; + bzero(&ic, len); + ic.contrast = contrast_; + ic.brightness = bright_; if (test_1_paper_) { LOG_INFO(LOG_LEVEL_DEBUG_INFO, "scanning mode: testing ONE paper ...\n"); - ic.scannum = 1; + ic.scannum = 1; } else - { - ic.scannum = scan_count_; - } - - - ic.is_backrotate180 = image_prc_param_.bits.rotate_back_180; - ic.is_dogeardetection = image_prc_param_.bits.fractate_check; - + ic.scannum = scan_count_; + ic.en_sizecheck = dsp_config_.params_dsp.enable_sizecheck; ic.hardwarecaps.en_skrewdetect = dsp_config_.params_dsp.screw_detect_enable; ic.hardwarecaps.en_doublefeed = dsp_config_.params_dsp.double_feed_enbale; ic.hardwarecaps.en_stapledetect = dsp_config_.params_dsp.stable_enbale; @@ -684,153 +633,225 @@ else ic.hardwarecaps.capturepixtype = 0; //暂无参数 获取图像类型 ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //暂无参数 设置休眠时间 两个参数3399未使用 - ic.fillhole.is_fillhole = image_prc_param_.bits.rid_hole; - ic.fillhole.fillholeratio = rid_hole_range_; - adjust_filling_hole(&ic); - - ic.detachnoise.is_detachnoise = image_prc_param_.bits.noise_optimize; - ic.detachnoise.detachnoise = noise_range_; - - - ic.is_autotext = image_prc_param_.bits.text_direction == TEXT_DIRECTION_AUTO ? 1 :0; - ic.isfillcolor = is_color_fill; - ic.refuseInflow = image_prc_param_.bits.is_permeate; - ic.colorCorrection = 0; - ic.removeMorr = image_prc_param_.bits.remove_morr; - ic.errorExtention = image_prc_param_.bits.error_extention ;//暂无参数 - ic.textureRemove = image_prc_param_.bits.remove_txtture;//暂无参数 - ic.splitImage = image_prc_param_.bits.split; - - //custom_area_br_x_ *ic.resolution_dst /25.4; - //custom_area_br_y_ *ic.resolution_dst /25.4; - - ic.cropRect.enable = custom_area_; - - int height = (custom_area_br_y_ *ic.resolution_dst) /25.4 - (custom_area_lt_y_ *ic.resolution_dst /25.4); - int width = (custom_area_br_x_ *ic.resolution_dst) /25.4 - (custom_area_lt_x_ *ic.resolution_dst /25.4); - ic.cropRect.height = height; - ic.cropRect.width = width; - ic.cropRect.x = custom_area_lt_x_ *ic.resolution_dst /25.4; - ic.cropRect.y = custom_area_lt_y_ *ic.resolution_dst /25.4; - - ic.multiOutput = (MultiOutput)image_prc_param_.bits.multi_out; - if (!is_multiout) - { - ic.multiOutput = MultiOutput::Unused; - } - ic.normalCrop = image_prc_param_.bits.dark_sample; - ic.dogeardistabce = fractate_level_; - ic.fadeback = image_prc_param_.bits.erase_bakground; - ic.fadebackrange = erase_bkg_range_; - ic.isuoloadexceptionimage = (double_paper_handle_ & DOUBLE_PAPER_SAVE_IMG) == DOUBLE_PAPER_SAVE_IMG; - ic.fold_concatmode = fold_type_; - int filter_clr[] = { 3, 0, 1, 2, 5, 6, 7 }; - if(image_prc_param_.bits.color_mode == COLOR_MODE_24_BITS || image_prc_param_.bits.color_mode == COLOR_MODE_AUTO_MATCH) - ic.filter = 3; - else - { - ic.filter = filter_clr[image_prc_param_.bits.rid_color]; - // if(ic.filter != 3) - // ic.pixtype = 2; - - ic.hsvcorrect = 0; - ic.multi_output_red = 0; - ic.multiOutput = MultiOutput::Unused; - ic.fadeback = false; - } - //多留输出的处理 - if (image_prc_param_.bits.multi_out == MULTI_GRAY_AND_BW && is_multiout) - { - ic.pixtype = 1; - } - else if ((image_prc_param_.bits.multi_out == MULTI_OUT_ALL ||image_prc_param_.bits.multi_out == MULTI_COLOR_AND_GRAY||image_prc_param_.bits.multi_out == MULTI_COLOR_AND_BW) && is_multiout) - { - ic.pixtype = 2; - } - if (is_multiout) - { - ic.hsvcorrect = 0; - ic.multi_output_red = 0; - ic.fadeback = false; - ic.sharpen = 0; - ic.removeMorr = 0; - ic.textureRemove = 0; - - ic.errorExtention = 0; - ic.detachnoise.is_detachnoise = 0; - } - if (ic.pixtype == 0) - { - ic.hsvcorrect = 0; - ic.multi_output_red = 0; - ic.fadeback = false; - ic.sharpen = 0; - ic.removeMorr = 0; - ic.textureRemove = 0; - } - - //自定义裁切 - if (image_prc_param_.bits.paper == PAPER_AUTO_MATCH - ||image_prc_param_.bits.paper == PAPER_MAX_SIZE - ||image_prc_param_.bits.paper == PAPER_MAX_SIZE_CLIP - ||image_prc_param_.bits.paper == PAPER_TRIGEMINY - ) - { - ic.cropRect.enable = false; - } - img_conf_ = ic; - + image_configuration(ic); agreement(); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.pixtype=%d", ic.pixtype); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.papertype=%d", ic.papertype); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.AutoCrop_threshold=%d", ic.AutoCrop_threshold); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.autodescrew=%d", ic.autodescrew); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.automaticcolor=%d", ic.automaticcolor); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.brightness=%f", ic.brightness); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.contrast=%f", ic.contrast); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.en_fold=%d", ic.en_fold); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.en_sizecheck=%d", ic.en_sizecheck); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.enhance_color=%d", ic.enhance_color); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.fillbackground=%d", ic.fillbackground); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.filter=%d", ic.filter); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.gamma=%f", ic.gamma); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.hardwarecaps.capturepixtype=%d", ic.hardwarecaps.capturepixtype); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.hardwarecaps.en_doublefeed=%d", ic.hardwarecaps.en_doublefeed); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.hsvcorrect=%d", ic.hsvcorrect); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.imageRotateDegree=%f", ic.imageRotateDegree); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.indent=%d", 5); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.is_autocontrast=%d", ic.is_autocontrast); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.is_autocrop=%d", ic.is_autocrop); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.is_autodiscradblank_normal=%d", ic.is_autodiscradblank_normal); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.is_autodiscradblank_vince=%d", ic.is_autodiscradblank_vince); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.is_autotext=%d", ic.is_autotext); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.is_backrotate180=%d", ic.is_backrotate180); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.is_convex=%d", ic.is_convex); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.is_duplex=%d", ic.is_duplex); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.is_switchfrontback=%d", ic.is_switchfrontback); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.is_dogeardetection=%d", ic.is_dogeardetection); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.fillhole.multi_output_red=%d", ic.multi_output_red); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.noise=%d", 8); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.resolution_dst=%f", ic.resolution_dst); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.resolution_native=%f", ic.resolution_native); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.scannum=%d", ic.scannum); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.sharpen=%d", ic.sharpen); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.discardblank_percent=%d", ic.discardblank_percent); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.detachnoise.is_detachnoise=%d", ic.detachnoise.is_detachnoise); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.detachnoise.detachnoise=%d\r ", ic.detachnoise.detachnoise); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.detachnoise.refuseInflow=%d\r ", ic.refuseInflow); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.refuseInflow=%d\r ", ic.refuseInflow); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.removeMorr=%d\r ", ic.removeMorr); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.errorExtention=%d\r ", ic.errorExtention); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.textureRemove=%d\r\n ", ic.textureRemove); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.fillhole.is_fillhole=%d\r\n ", ic.fillhole.is_fillhole); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.ic.fillhole.fillholeratio=%f\r\n ", ic.fillhole.fillholeratio); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.fadeback=%d\r\n ",ic.fadeback); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.cropRect.enable=%d\r\n ",ic.cropRect.enable); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.cropRect.height=%d\r\n ",ic.cropRect.height); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.cropRect.width=%d\r\n ",ic.cropRect.width); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.cropRect.x=%d\r\n ",ic.cropRect.x); - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.cropRect.y=%d\r\n ",ic.cropRect.y); +// ic.papertype = paper_size_; +// +// if (is_lateral(image_prc_param_.bits.paper)) +// ic.paperAlign = Rot270; +// else +// ic.paperAlign = Rot0; +// +// ic.en_sizecheck = dsp_config_.params_dsp.enable_sizecheck; +// +//if (image_prc_param_.bits.text_direction != TEXT_DIRECTION_AUTO) +// ic.imageRotateDegree = image_prc_param_.bits.text_direction; +//else +// ic.imageRotateDegree = 0; +// +// ic.is_duplex = (image_prc_param_.bits.page == PAGE_DOUBLE || image_prc_param_.bits.page == PAGE_OMIT_EMPTY || +// image_prc_param_.bits.page == PAGE_OMIT_EMPTY_RECEIPT || image_prc_param_.bits.page ==PAGE_FOLIO); +// +// ic.en_fold = (image_prc_param_.bits.page == PAGE_FOLIO); +// +// ic.pixtype = image_prc_param_.bits.color_mode == COLOR_MODE_AUTO_MATCH ? 2 : image_prc_param_.bits.color_mode; +// +// ic.automaticcolor = is_auto_matic_color; +// ic.automaticcolortype = 1;// ic.pixtype; //存疑 +// ic.resolution_dst = resolution_; +// ic.resolution_native = 200; +// +// ic.gamma = (float)gamma_; +// ic.contrast = contrast_ ; +// ic.brightness = bright_ ; +// ic.threshold = threshold_; +// ic.is_autocontrast = 0; //无参数 +// ic.is_autocrop = (ic.papertype == TwSS::None || ic.papertype ==TwSS::USStatement); +// ic.is_autodiscradblank_normal = image_prc_param_.bits.page == PAGE_OMIT_EMPTY; +// ic.discardblank_percent = omit_empty_level_; //默认20 +// ic.is_autodiscradblank_vince = image_prc_param_.bits.page == PAGE_OMIT_EMPTY_RECEIPT; +// ic.is_switchfrontback = image_prc_param_.bits.exchange; +// ic.autodescrew = image_prc_param_.bits.automatic_skew; +// ic.multi_output_red = image_prc_param_.bits.rid_red; +// ic.hsvcorrect = image_prc_param_.bits.rid_answer_red; +// +// ic.sharpen = image_prc_param_.bits.sharpen; +// //ic.enhance_color = image_prc_param_.bits.rid_color; +// ic.fillbackground = image_prc_param_.bits.erase_black_frame; +// ic.is_convex = (image_prc_param_.bits.fill_background == FILL_BKG_CONVEX_POLYGON); +// ic.noise = image_prc_param_.bits.noise_optimize; +// ic.indent = margin_; +// ic.AutoCrop_threshold = threshold_; +// +// if (test_1_paper_) +// { +// LOG_INFO(LOG_LEVEL_DEBUG_INFO, "scanning mode: testing ONE paper ...\n"); +// ic.scannum = 1; +// } +// else +// { +// ic.scannum = scan_count_; +// } +// +// +// ic.is_backrotate180 = image_prc_param_.bits.rotate_back_180; +// ic.is_dogeardetection = image_prc_param_.bits.fractate_check; +// +// ic.hardwarecaps.en_skrewdetect = dsp_config_.params_dsp.screw_detect_enable; +// ic.hardwarecaps.en_doublefeed = dsp_config_.params_dsp.double_feed_enbale; +// ic.hardwarecaps.en_stapledetect = dsp_config_.params_dsp.stable_enbale; +// ic.hardwarecaps.skrewdetectlevel = dsp_config_.params_dsp.screw_detect_level; +// // ic.hardwarecaps.is_autopaper = dsp_config_.params_dsp.is_autopaper; +// ic.hardwarecaps.capturepixtype = 0; //暂无参数 获取图像类型 +// ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //暂无参数 设置休眠时间 两个参数3399未使用 +// +// ic.fillhole.is_fillhole = image_prc_param_.bits.rid_hole; +// ic.fillhole.fillholeratio = rid_hole_range_; +// adjust_filling_hole(&ic); +// +// ic.detachnoise.is_detachnoise = image_prc_param_.bits.noise_optimize; +// ic.detachnoise.detachnoise = noise_range_; +// +// +// ic.is_autotext = image_prc_param_.bits.text_direction == TEXT_DIRECTION_AUTO ? 1 :0; +// ic.isfillcolor = is_color_fill; +// ic.refuseInflow = image_prc_param_.bits.is_permeate; +// ic.colorCorrection = 0; +// ic.removeMorr = image_prc_param_.bits.remove_morr; +// ic.errorExtention = image_prc_param_.bits.error_extention ;//暂无参数 +// ic.textureRemove = image_prc_param_.bits.remove_txtture;//暂无参数 +// ic.splitImage = image_prc_param_.bits.split; +// +// //custom_area_br_x_ *ic.resolution_dst /25.4; +// //custom_area_br_y_ *ic.resolution_dst /25.4; +// +// ic.cropRect.enable = custom_area_; +// +// int height = (custom_area_br_y_ *ic.resolution_dst) /25.4 - (custom_area_lt_y_ *ic.resolution_dst /25.4); +// int width = (custom_area_br_x_ *ic.resolution_dst) /25.4 - (custom_area_lt_x_ *ic.resolution_dst /25.4); +// ic.cropRect.height = height; +// ic.cropRect.width = width; +// ic.cropRect.x = custom_area_lt_x_ *ic.resolution_dst /25.4; +// ic.cropRect.y = custom_area_lt_y_ *ic.resolution_dst /25.4; +// +// ic.multiOutput = (MultiOutput)image_prc_param_.bits.multi_out; +// if (!is_multiout) +// { +// ic.multiOutput = MultiOutput::Unused; +// } +// ic.normalCrop = image_prc_param_.bits.dark_sample; +// ic.dogeardistabce = fractate_level_; +// ic.fadeback = image_prc_param_.bits.erase_bakground; +// ic.fadebackrange = erase_bkg_range_; +// ic.isuoloadexceptionimage = (double_paper_handle_ & DOUBLE_PAPER_SAVE_IMG) == DOUBLE_PAPER_SAVE_IMG; +// ic.fold_concatmode = fold_type_; +// int filter_clr[] = { 3, 0, 1, 2, 5, 6, 7 }; +// if(image_prc_param_.bits.color_mode == COLOR_MODE_24_BITS || image_prc_param_.bits.color_mode == COLOR_MODE_AUTO_MATCH) +// ic.filter = 3; +// else +// { +// ic.filter = filter_clr[image_prc_param_.bits.rid_color]; +// // if(ic.filter != 3) +// // ic.pixtype = 2; +// +// ic.hsvcorrect = 0; +// ic.multi_output_red = 0; +// ic.multiOutput = MultiOutput::Unused; +// ic.fadeback = false; +// } +// //多留输出的处理 +// if (image_prc_param_.bits.multi_out == MULTI_GRAY_AND_BW && is_multiout) +// { +// ic.pixtype = 1; +// } +// else if ((image_prc_param_.bits.multi_out == MULTI_OUT_ALL ||image_prc_param_.bits.multi_out == MULTI_COLOR_AND_GRAY||image_prc_param_.bits.multi_out == MULTI_COLOR_AND_BW) && is_multiout) +// { +// ic.pixtype = 2; +// } +// if (is_multiout) +// { +// ic.hsvcorrect = 0; +// ic.multi_output_red = 0; +// ic.fadeback = false; +// ic.sharpen = 0; +// ic.removeMorr = 0; +// ic.textureRemove = 0; +// +// ic.errorExtention = 0; +// ic.detachnoise.is_detachnoise = 0; +// } +// if (ic.pixtype == 0) +// { +// ic.hsvcorrect = 0; +// ic.multi_output_red = 0; +// ic.fadeback = false; +// ic.sharpen = 0; +// ic.removeMorr = 0; +// ic.textureRemove = 0; +// } +// +// //自定义裁切 +// if (image_prc_param_.bits.paper == PAPER_AUTO_MATCH +// ||image_prc_param_.bits.paper == PAPER_MAX_SIZE +// ||image_prc_param_.bits.paper == PAPER_MAX_SIZE_CLIP +// ||image_prc_param_.bits.paper == PAPER_TRIGEMINY +// ) +// { +// ic.cropRect.enable = false; +// } +// img_conf_ = ic; +// +// agreement(); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.pixtype=%d", ic.pixtype); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.papertype=%d", ic.papertype); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.AutoCrop_threshold=%d", ic.AutoCrop_threshold); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.autodescrew=%d", ic.autodescrew); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.automaticcolor=%d", ic.automaticcolor); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.brightness=%f", ic.brightness); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.contrast=%f", ic.contrast); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.en_fold=%d", ic.en_fold); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.en_sizecheck=%d", ic.en_sizecheck); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.enhance_color=%d", ic.enhance_color); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.fillbackground=%d", ic.fillbackground); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.filter=%d", ic.filter); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.gamma=%f", ic.gamma); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.hardwarecaps.capturepixtype=%d", ic.hardwarecaps.capturepixtype); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.hardwarecaps.en_doublefeed=%d", ic.hardwarecaps.en_doublefeed); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.hsvcorrect=%d", ic.hsvcorrect); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.imageRotateDegree=%f", ic.imageRotateDegree); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.indent=%d", 5); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.is_autocontrast=%d", ic.is_autocontrast); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.is_autocrop=%d", ic.is_autocrop); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.is_autodiscradblank_normal=%d", ic.is_autodiscradblank_normal); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.is_autodiscradblank_vince=%d", ic.is_autodiscradblank_vince); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.is_autotext=%d", ic.is_autotext); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.is_backrotate180=%d", ic.is_backrotate180); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.is_convex=%d", ic.is_convex); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.is_duplex=%d", ic.is_duplex); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.is_switchfrontback=%d", ic.is_switchfrontback); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.is_dogeardetection=%d", ic.is_dogeardetection); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.fillhole.multi_output_red=%d", ic.multi_output_red); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.noise=%d", 8); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.resolution_dst=%f", ic.resolution_dst); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.resolution_native=%f", ic.resolution_native); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.scannum=%d", ic.scannum); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.sharpen=%d", ic.sharpen); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.discardblank_percent=%d", ic.discardblank_percent); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.detachnoise.is_detachnoise=%d", ic.detachnoise.is_detachnoise); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.detachnoise.detachnoise=%d\r ", ic.detachnoise.detachnoise); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.detachnoise.refuseInflow=%d\r ", ic.refuseInflow); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.refuseInflow=%d\r ", ic.refuseInflow); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.removeMorr=%d\r ", ic.removeMorr); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.errorExtention=%d\r ", ic.errorExtention); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.textureRemove=%d\r\n ", ic.textureRemove); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.fillhole.is_fillhole=%d\r\n ", ic.fillhole.is_fillhole); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.ic.fillhole.fillholeratio=%f\r\n ", ic.fillhole.fillholeratio); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.fadeback=%d\r\n ",ic.fadeback); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.cropRect.enable=%d\r\n ",ic.cropRect.enable); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.cropRect.height=%d\r\n ",ic.cropRect.height); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.cropRect.width=%d\r\n ",ic.cropRect.width); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.cropRect.x=%d\r\n ",ic.cropRect.x); +// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.cropRect.y=%d\r\n ",ic.cropRect.y); } void hg_scanner_200::printf_devconfig(setting_hardware::HGSCANCONF_DSP *d) @@ -892,13 +913,13 @@ int hg_scanner_200::agreement() int ret = SCANNER_ERR_OK; - if (image_prc_param_.bits.rid_color != RID_COLOR_NONE) - { - dsp_config_.params_dsp.color = 1; - } - + //if (image_prc_param_.bits.rid_color != RID_COLOR_NONE) + //{ + // dsp_config_.params_dsp.color = 1; + //} + // ret = writedown_device_configuration(true); - io_->set_timeout(200); + //io_->set_timeout(200); return ret; } diff --git a/hgdriver/hgdev/hg_scanner_239.cpp b/hgdriver/hgdev/hg_scanner_239.cpp index 9626ab5..e498385 100644 --- a/hgdriver/hgdev/hg_scanner_239.cpp +++ b/hgdriver/hgdev/hg_scanner_239.cpp @@ -336,25 +336,25 @@ void hg_scanner_239::init_version(void) is_kernelsnap_220830_ = false; } -int hg_scanner_239::writedown_device_configuration(setting_hardware::HGSCANCONF_3399 *dev_conf) +int hg_scanner_239::writedown_device_configuration(bool type, setting_hardware::HGSCANCONF_3399* dev_conf) { int ret = SCANNER_ERR_OK; - + if (!type) + return ret; if (!dev_conf) - { dev_conf = &dev_conf_; + + if (is_multiout) + { + dev_conf->params_3399.color = image_prc_param_.bits.multi_out == MULTI_COLOR_AND_BW ? 0 : 1; } - if (image_prc_param_.bits.rid_color != RID_COLOR_NONE - && (image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY || image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE)) + else if ((image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY + || image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE) + && image_prc_param_.bits.rid_color != RID_COLOR_NONE) { dev_conf->params_3399.color = 1; } - else if (image_prc_param_.bits.rid_color == RID_COLOR_NONE - && (image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY || image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE)) - { - dev_conf->params_3399.color = 0; - } - + if (image_prc_param_.bits.paper == PAPER_AUTO_MATCH || image_prc_param_.bits.paper == PAPER_MAX_SIZE || image_prc_param_.bits.paper == PAPER_MAX_SIZE_CLIP @@ -382,74 +382,11 @@ int hg_scanner_239::writedown_image_configuration(void) int len = sizeof(ic); bzero(&ic, len); - - ic.papertype = paper_size_; - - if (is_lateral(image_prc_param_.bits.paper)) - ic.paperAlign = Rot270; - else - ic.paperAlign = Rot0; - - ic.en_sizecheck = dev_conf_.params_3399.enable_sizecheck; - - if (image_prc_param_.bits.text_direction != TEXT_DIRECTION_AUTO) - ic.imageRotateDegree = (float)image_prc_param_.bits.text_direction; - else - ic.imageRotateDegree = 0; - - ic.imageRotateDegree *= 90.0f; - ic.is_duplex = (image_prc_param_.bits.page == PAGE_DOUBLE - || image_prc_param_.bits.page == PAGE_OMIT_EMPTY - || image_prc_param_.bits.page == PAGE_OMIT_EMPTY_RECEIPT - || image_prc_param_.bits.page ==PAGE_FOLIO); - - ic.en_fold = (image_prc_param_.bits.page == PAGE_FOLIO); - ic.pixtype = image_prc_param_.bits.color_mode == COLOR_MODE_AUTO_MATCH ? 2 : image_prc_param_.bits.color_mode; - ic.automaticcolor = is_auto_matic_color; - ic.automaticcolortype = 1;// ic.pixtype; //存疑 - if (resolution_ >= 300) - { - if(is_quality_ == IMG_SPEED) - { - ic.resolution_dst = 200; - } - else if(is_quality_ ==IMG_QUALITY) - { - ic.resolution_dst = resolution_; - } - } - else - { - ic.resolution_dst = resolution_; - } - - ic.resolution_native = 200.0f; - ic.gamma = (float)gamma_; - ic.contrast = (contrast_ - 4) * 333.0; - ic.brightness = (bright_ - 128) * (2000.0 / 254.0); - ic.threshold = threshold_; - ic.is_autocontrast = 0; //无参数 - ic.is_autocrop = (ic.papertype == TwSS::None || ic.papertype ==TwSS::USStatement); - ic.is_autodiscradblank_normal = image_prc_param_.bits.page == PAGE_OMIT_EMPTY; - ic.discardblank_percent = omit_empty_level_ >= 70 ? 70 : omit_empty_level_; - ic.is_autodiscradblank_vince = image_prc_param_.bits.page == PAGE_OMIT_EMPTY_RECEIPT; - ic.is_switchfrontback = image_prc_param_.bits.exchange; - ic.autodescrew = image_prc_param_.bits.automatic_skew; - //ic.multi_output_red = image_prc_param_.bits.rid_red; //必须屏蔽,否则超时,未知错误不可描述。 - ic.hsvcorrect = image_prc_param_.bits.rid_answer_red; - ic.sharpen = image_prc_param_.bits.sharpen; - //ic.enhance_color = image_prc_param_.bits.rid_color; //加这个会有问题 - ic.fillbackground = image_prc_param_.bits.erase_black_frame; - ic.is_convex = (image_prc_param_.bits.fill_background == FILL_BKG_CONVEX_POLYGON); - if (ic.resolution_dst == 300) - ic.noise = anti_noise_ * 1.5; - else if(ic.resolution_dst == 600) - ic.noise = anti_noise_ * 3; - else - ic.noise = anti_noise_; - - ic.indent = margin_; - ic.AutoCrop_threshold = threshold_; + ic.en_sizecheck = dev_conf_.params_3399.enable_sizecheck; + ic.hardwarecaps.en_skrewdetect = dev_conf_.params_3399.screw_detect_enable; + ic.hardwarecaps.en_doublefeed = dev_conf_.params_3399.ultrasonic_enable; + ic.hardwarecaps.en_stapledetect = dev_conf_.params_3399.staple_enbale; + ic.hardwarecaps.skrewdetectlevel = dev_conf_.params_3399.screw_detect_level; if (test_1_paper_) { LOG_INFO(LOG_LEVEL_DEBUG_INFO, "scanning mode: testing ONE paper ...\n"); @@ -462,100 +399,191 @@ int hg_scanner_239::writedown_image_configuration(void) else ic.scannum = (ic.is_duplex ? scan_count_ * 2 : scan_count_); } - ic.is_backrotate180 = image_prc_param_.bits.rotate_back_180; - ic.is_dogeardetection = image_prc_param_.bits.fractate_check; - ic.hardwarecaps.en_skrewdetect = dev_conf_.params_3399.screw_detect_enable; - ic.hardwarecaps.en_doublefeed = dev_conf_.params_3399.ultrasonic_enable; - ic.hardwarecaps.en_stapledetect = dev_conf_.params_3399.staple_enbale; - ic.hardwarecaps.skrewdetectlevel = dev_conf_.params_3399.screw_detect_level; - // ic.hardwarecaps.is_autopaper = dev_conf_.params_3399.is_autopaper; - ic.hardwarecaps.capturepixtype = 0; //暂无参数 获取图像类型 - ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //暂无参数 设置休眠时间 两个参数3399未使用 - ic.fillhole.is_fillhole = image_prc_param_.bits.rid_hole; - ic.fillhole.fillholeratio = rid_hole_range_; - ic.detachnoise.is_detachnoise = image_prc_param_.bits.noise_optimize; - ic.detachnoise.detachnoise = noise_range_; - ic.is_autotext = image_prc_param_.bits.text_direction == TEXT_DIRECTION_AUTO ? 1 :0; - ic.isfillcolor = is_color_fill; - ic.refuseInflow = image_prc_param_.bits.is_permeate; - ic.colorCorrection = 0; - ic.removeMorr = image_prc_param_.bits.remove_morr; - ic.errorExtention = image_prc_param_.bits.error_extention ;// - ic.textureRemove = image_prc_param_.bits.remove_txtture;// - ic.splitImage = image_prc_param_.bits.split; -{ - ic.cropRect.enable = custom_area_; - int height = (custom_area_br_y_ *ic.resolution_dst) /25.4 - (custom_area_lt_y_ *ic.resolution_dst /25.4); - int width = (custom_area_br_x_ *ic.resolution_dst) /25.4 - (custom_area_lt_x_ *ic.resolution_dst /25.4); - ic.cropRect.height = height; - ic.cropRect.width = width; - ic.cropRect.x = custom_area_lt_x_ *ic.resolution_dst /25.4; - ic.cropRect.y = custom_area_lt_y_ *ic.resolution_dst /25.4; -} - ic.multiOutput = (MultiOutput)image_prc_param_.bits.multi_out; - ic.normalCrop = image_prc_param_.bits.dark_sample; - ic.dogeardistabce = fractate_level_; - ic.fadeback = image_prc_param_.bits.erase_bakground; - ic.fadebackrange = erase_bkg_range_; - ic.isuoloadexceptionimage = (double_paper_handle_ & DOUBLE_PAPER_SAVE_IMG) == DOUBLE_PAPER_SAVE_IMG; - adjust_filling_hole(&ic); - ic.fold_concatmode = fold_type_; -//多流输出优先级最高 - if (is_multiout) - { - ic.pixtype = image_prc_param_.bits.multi_out == MULTI_GRAY_AND_BW ? COLOR_MODE_256_GRAY : COLOR_MODE_24_BITS; - ic.filter = 3; - ic.hsvcorrect = 0; - ic.multi_output_red = 0; - ic.fadeback = false; - ic.sharpen = 0; - ic.removeMorr = 0; - ic.textureRemove = 0; - ic.errorExtention = 0; - ic.detachnoise.is_detachnoise = 0; - } - else if(image_prc_param_.bits.multi_out == COLOR_MODE_24_BITS) - { - ic.filter = 3; - ic.errorExtention = 0; - ic.detachnoise.is_detachnoise = 0; - } - else if (image_prc_param_.bits.multi_out == COLOR_MODE_256_GRAY) - { - int filter_clr[] = { 3, 0, 1, 2, 5, 6, 7 }; - ic.filter = filter_clr[image_prc_param_.bits.rid_color]; - ic.multi_output_red = 0; - ic.hsvcorrect = 0; - ic.fadeback = false; - ic.errorExtention = 0; - ic.detachnoise.is_detachnoise = 0; - } - else if (image_prc_param_.bits.multi_out == COLOR_MODE_BLACK_WHITE) - { - int filter_clr[] = { 3, 0, 1, 2, 5, 6, 7 }; - ic.filter = filter_clr[image_prc_param_.bits.rid_color]; - ic.multi_output_red = 0; - ic.hsvcorrect = 0; - ic.fadeback = false; - ic.sharpen = 0; - ic.removeMorr = 0; - ic.textureRemove = 0; - } - else if (image_prc_param_.bits.multi_out == COLOR_MODE_AUTO_MATCH) - { - ic.pixtype = 2; - ic.filter = 3; - ic.hsvcorrect = 0; - ic.multi_output_red = 0; - ic.fadeback = false; - ic.sharpen = 0; - ic.removeMorr = 0; - ic.textureRemove = 0; - ic.errorExtention = 0; - ic.detachnoise.is_detachnoise = 0; + ic.contrast = (contrast_ - 4) * 333.0; + ic.brightness = (bright_ - 128) * (2000.0 / 254.0); + image_configuration(ic); - } + { + std::lock_guard lock(io_lock_); + ret = io_->write_bulk(&ic, &len); + + this_thread::sleep_for(chrono::milliseconds(500)); + io_->set_timeout(2000);//必要延时 + } +// ic.papertype = paper_size_; +// +// if (is_lateral(image_prc_param_.bits.paper)) +// ic.paperAlign = Rot270; +// else +// ic.paperAlign = Rot0; +// +// ic.en_sizecheck = dev_conf_.params_3399.enable_sizecheck; +// +// if (image_prc_param_.bits.text_direction != TEXT_DIRECTION_AUTO) +// ic.imageRotateDegree = (float)image_prc_param_.bits.text_direction; +// else +// ic.imageRotateDegree = 0; +// +// ic.imageRotateDegree *= 90.0f; +// ic.is_duplex = (image_prc_param_.bits.page == PAGE_DOUBLE +// || image_prc_param_.bits.page == PAGE_OMIT_EMPTY +// || image_prc_param_.bits.page == PAGE_OMIT_EMPTY_RECEIPT +// || image_prc_param_.bits.page ==PAGE_FOLIO); +// +// ic.en_fold = (image_prc_param_.bits.page == PAGE_FOLIO); +// ic.pixtype = image_prc_param_.bits.color_mode == COLOR_MODE_AUTO_MATCH ? 2 : image_prc_param_.bits.color_mode; +// ic.automaticcolor = is_auto_matic_color; +// ic.automaticcolortype = 1;// ic.pixtype; //存疑 +// if (resolution_ >= 300) +// { +// if(is_quality_ == IMG_SPEED) +// { +// ic.resolution_dst = 200; +// } +// else if(is_quality_ ==IMG_QUALITY) +// { +// ic.resolution_dst = resolution_; +// } +// } +// else +// { +// ic.resolution_dst = resolution_; +// } +// +// ic.resolution_native = 200.0f; +// ic.gamma = (float)gamma_; +// ic.contrast = (contrast_ - 4) * 333.0; +// ic.brightness = (bright_ - 128) * (2000.0 / 254.0); +// ic.threshold = threshold_; +// ic.is_autocontrast = 0; //无参数 +// ic.is_autocrop = (ic.papertype == TwSS::None || ic.papertype ==TwSS::USStatement); +// ic.is_autodiscradblank_normal = image_prc_param_.bits.page == PAGE_OMIT_EMPTY; +// ic.discardblank_percent = omit_empty_level_ >= 70 ? 70 : omit_empty_level_; +// ic.is_autodiscradblank_vince = image_prc_param_.bits.page == PAGE_OMIT_EMPTY_RECEIPT; +// ic.is_switchfrontback = image_prc_param_.bits.exchange; +// ic.autodescrew = image_prc_param_.bits.automatic_skew; +// //ic.multi_output_red = image_prc_param_.bits.rid_red; //必须屏蔽,否则超时,未知错误不可描述。 +// ic.hsvcorrect = image_prc_param_.bits.rid_answer_red; +// ic.sharpen = image_prc_param_.bits.sharpen; +// //ic.enhance_color = image_prc_param_.bits.rid_color; //加这个会有问题 +// ic.fillbackground = image_prc_param_.bits.erase_black_frame; +// ic.is_convex = (image_prc_param_.bits.fill_background == FILL_BKG_CONVEX_POLYGON); +// if (ic.resolution_dst == 300) +// ic.noise = anti_noise_ * 1.5; +// else if(ic.resolution_dst == 600) +// ic.noise = anti_noise_ * 3; +// else +// ic.noise = anti_noise_; +// +// ic.indent = margin_; +// ic.AutoCrop_threshold = threshold_; +// if (test_1_paper_) +// { +// LOG_INFO(LOG_LEVEL_DEBUG_INFO, "scanning mode: testing ONE paper ...\n"); +// ic.scannum = ic.is_duplex ? 2 : 1; +// } +// else +// { +// if (scan_count_ == -1) +// ic.scannum = -1; +// else +// ic.scannum = (ic.is_duplex ? scan_count_ * 2 : scan_count_); +// } +// ic.is_backrotate180 = image_prc_param_.bits.rotate_back_180; +// ic.is_dogeardetection = image_prc_param_.bits.fractate_check; +// ic.hardwarecaps.en_skrewdetect = dev_conf_.params_3399.screw_detect_enable; +// ic.hardwarecaps.en_doublefeed = dev_conf_.params_3399.ultrasonic_enable; +// ic.hardwarecaps.en_stapledetect = dev_conf_.params_3399.staple_enbale; +// ic.hardwarecaps.skrewdetectlevel = dev_conf_.params_3399.screw_detect_level; +// // ic.hardwarecaps.is_autopaper = dev_conf_.params_3399.is_autopaper; +// ic.hardwarecaps.capturepixtype = 0; //暂无参数 获取图像类型 +// ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //暂无参数 设置休眠时间 两个参数3399未使用 +// ic.fillhole.is_fillhole = image_prc_param_.bits.rid_hole; +// ic.fillhole.fillholeratio = rid_hole_range_; +// ic.detachnoise.is_detachnoise = image_prc_param_.bits.noise_optimize; +// ic.detachnoise.detachnoise = noise_range_; +// ic.is_autotext = image_prc_param_.bits.text_direction == TEXT_DIRECTION_AUTO ? 1 :0; +// ic.isfillcolor = is_color_fill; +// ic.refuseInflow = image_prc_param_.bits.is_permeate; +// ic.colorCorrection = 0; +// ic.removeMorr = image_prc_param_.bits.remove_morr; +// ic.errorExtention = image_prc_param_.bits.error_extention ;// +// ic.textureRemove = image_prc_param_.bits.remove_txtture;// +// ic.splitImage = image_prc_param_.bits.split; +//{ +// ic.cropRect.enable = custom_area_; +// int height = (custom_area_br_y_ *ic.resolution_dst) /25.4 - (custom_area_lt_y_ *ic.resolution_dst /25.4); +// int width = (custom_area_br_x_ *ic.resolution_dst) /25.4 - (custom_area_lt_x_ *ic.resolution_dst /25.4); +// ic.cropRect.height = height; +// ic.cropRect.width = width; +// ic.cropRect.x = custom_area_lt_x_ *ic.resolution_dst /25.4; +// ic.cropRect.y = custom_area_lt_y_ *ic.resolution_dst /25.4; +//} +// ic.multiOutput = (MultiOutput)image_prc_param_.bits.multi_out; +// ic.normalCrop = image_prc_param_.bits.dark_sample; +// ic.dogeardistabce = fractate_level_; +// ic.fadeback = image_prc_param_.bits.erase_bakground; +// ic.fadebackrange = erase_bkg_range_; +// ic.isuoloadexceptionimage = (double_paper_handle_ & DOUBLE_PAPER_SAVE_IMG) == DOUBLE_PAPER_SAVE_IMG; +// adjust_filling_hole(&ic); +// ic.fold_concatmode = fold_type_; +////多流输出优先级最高 +// if (is_multiout) +// { +// ic.pixtype = image_prc_param_.bits.multi_out == MULTI_GRAY_AND_BW ? COLOR_MODE_256_GRAY : COLOR_MODE_24_BITS; +// ic.filter = 3; +// ic.hsvcorrect = 0; +// ic.multi_output_red = 0; +// ic.fadeback = false; +// ic.sharpen = 0; +// ic.removeMorr = 0; +// ic.textureRemove = 0; +// ic.errorExtention = 0; +// ic.detachnoise.is_detachnoise = 0; +// } +// else if(image_prc_param_.bits.multi_out == COLOR_MODE_24_BITS) +// { +// ic.filter = 3; +// ic.errorExtention = 0; +// ic.detachnoise.is_detachnoise = 0; +// } +// else if (image_prc_param_.bits.multi_out == COLOR_MODE_256_GRAY) +// { +// int filter_clr[] = { 3, 0, 1, 2, 5, 6, 7 }; +// ic.filter = filter_clr[image_prc_param_.bits.rid_color]; +// ic.multi_output_red = 0; +// ic.hsvcorrect = 0; +// ic.fadeback = false; +// ic.errorExtention = 0; +// ic.detachnoise.is_detachnoise = 0; +// } +// else if (image_prc_param_.bits.multi_out == COLOR_MODE_BLACK_WHITE) +// { +// int filter_clr[] = { 3, 0, 1, 2, 5, 6, 7 }; +// ic.filter = filter_clr[image_prc_param_.bits.rid_color]; +// ic.multi_output_red = 0; +// ic.hsvcorrect = 0; +// ic.fadeback = false; +// ic.sharpen = 0; +// ic.removeMorr = 0; +// ic.textureRemove = 0; +// } +// else if (image_prc_param_.bits.multi_out == COLOR_MODE_AUTO_MATCH) +// { +// ic.pixtype = 2; +// ic.filter = 3; +// ic.hsvcorrect = 0; +// ic.multi_output_red = 0; +// ic.fadeback = false; +// ic.sharpen = 0; +// ic.removeMorr = 0; +// ic.textureRemove = 0; +// ic.errorExtention = 0; +// ic.detachnoise.is_detachnoise = 0; +// +// } +// /*if (ic.filter != 3 && (image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE || image_prc_param_.bits.color_mode != COLOR_MODE_256_GRAY)) @@ -598,25 +626,18 @@ int hg_scanner_239::writedown_image_configuration(void) }*/ //自定义裁切 - if (image_prc_param_.bits.paper == PAPER_AUTO_MATCH + /*if (image_prc_param_.bits.paper == PAPER_AUTO_MATCH ||image_prc_param_.bits.paper == PAPER_MAX_SIZE ||image_prc_param_.bits.paper == PAPER_MAX_SIZE_CLIP ||image_prc_param_.bits.paper == PAPER_TRIGEMINY ) { ic.cropRect.enable = false; - } + }*/ - { - std::lock_guard lock(io_lock_); - - ret = io_->write_bulk(&ic, &len); - this_thread::sleep_for(chrono::milliseconds(500)); - io_->set_timeout(2000);//必要延时 - } - VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "Write-down 0x%x bytes image process parameters\n", len); + /*VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "Write-down 0x%x bytes image process parameters\n", len); VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.pixtype=%d", ic.pixtype); VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.papertype=%d", ic.papertype); VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.AutoCrop_threshold=%d", ic.AutoCrop_threshold); @@ -669,7 +690,7 @@ int hg_scanner_239::writedown_image_configuration(void) VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.cropRect.x=%d\r\n ", ic.cropRect.x); VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.cropRect.y=%d\r\n ",ic.cropRect.y); - img_conf_ = ic; + img_conf_ = ic;*/ return ret; } @@ -813,7 +834,12 @@ void hg_scanner_239::discard_all_images(void) //color_mode =-1 除色选项 int hg_scanner_239::on_color_mode_changed(int& color_mode) { - int ret = SCANNER_ERR_OK; + + dev_conf_.params_3399.color = (color_mode == COLOR_MODE_BLACK_WHITE || color_mode == COLOR_MODE_256_GRAY) ? 0 : 1; + + return SCANNER_ERR_OK; + + /*int ret = SCANNER_ERR_OK; if ((((color_mode == COLOR_MODE_24_BITS || color_mode == COLOR_MODE_AUTO_MATCH) && !dev_conf_.params_3399.color) || ((color_mode != COLOR_MODE_24_BITS && color_mode != COLOR_MODE_AUTO_MATCH) && dev_conf_.params_3399.color)) && color_mode != -1) @@ -827,33 +853,7 @@ int hg_scanner_239::on_color_mode_changed(int& color_mode) { dev_conf_.params_3399.color = 1; } - - //setting_hardware::HGSCANCONF_3399 d = dev_conf_; - - /*if (image_prc_param_.bits.rid_color != RID_COLOR_NONE - &&(image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY || image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE) - ) - { - d.params_3399.color = 1; - ret = writedown_device_configuration(&d); - }*/ - - //if(image_prc_param_.bits.rid_color != RID_COLOR_NONE - //&& (image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY || image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE) - //&& color_mode == -1) - //{ - // d.params_3399.color = 1; - //} - //else if (image_prc_param_.bits.rid_color == RID_COLOR_NONE - //&& (image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY || image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE) - //&& color_mode == -1) - //{ - // d.params_3399.color = 0; - //} - //if(color_mode == -1) - //ret = writedown_device_configuration(&d); - - return ret; + return ret;*/ } int hg_scanner_239::on_paper_changed(int& paper) { @@ -900,45 +900,10 @@ int hg_scanner_239::on_paper_check_changed(bool& check) check = dev_conf_.params_3399.enable_sizecheck; } } - //if (image_prc_param_.bits.paper == PAPER_AUTO_MATCH - // || image_prc_param_.bits.paper == PAPER_MAX_SIZE - // || image_prc_param_.bits.paper == PAPER_MAX_SIZE_CLIP - // || image_prc_param_.bits.paper == PAPER_TRIGEMINY - // || image_prc_param_.bits.paper == PAPER_16K - // || image_prc_param_.bits.paper == PAPER_8K - // || image_prc_param_.bits.paper == PAPER_16K_LATERAL - // ) - //{ - // setting_hardware::HGSCANCONF_3399* d = &dev_conf_; - // d->params_3399.enable_sizecheck = false; - // ret = writedown_device_configuration(d); - //} return ret; } int hg_scanner_239::on_resolution_changed(int& dpi) { - //bool exact = true; - //int ind = settings::match_best_resolution(dpi, &exact), - // ret = exact ? SCANNER_ERR_OK : SCANNER_ERR_NOT_EXACT; - - //if (dev_conf_.params_3399.dpi != settings::resolution_map[ind].dev_value) - //{ - // int old = dev_conf_.params_3399.dpi; - // dev_conf_.params_3399.dpi = settings::resolution_map[ind].dev_value; - // dev_conf_.params_3399.dpi = 1; - // ret = writedown_device_configuration(); - // if (ret) - // { - // dev_conf_.params_3399.dpi = old; - // } - // else if (!exact) - // ret = SCANNER_ERR_NOT_EXACT; - //} - // - //if (ret == SCANNER_ERR_NOT_EXACT) - // dpi = settings::resolution_map[ind].resolution; - //return ret; - dev_conf_.params_3399.dpi = 1; //dpi 华凌cis和敦南cis 默认发1无需改变 int ret = writedown_device_configuration(); return ret; @@ -1373,7 +1338,7 @@ int hg_scanner_239::start(void) notify_ui_working_status(STATU_DESC_REWRITE_CONFIGURATION); if(ret == SCANNER_ERR_OK) { - ret = writedown_device_configuration(); + ret = writedown_device_configuration(true); } if(ret == SCANNER_ERR_OK) diff --git a/hgdriver/hgdev/hg_scanner_239.h b/hgdriver/hgdev/hg_scanner_239.h index 11d55b0..f2802a3 100644 --- a/hgdriver/hgdev/hg_scanner_239.h +++ b/hgdriver/hgdev/hg_scanner_239.h @@ -37,7 +37,7 @@ class hg_scanner_239 : public hg_scanner int read_register(int addr, int* val); int write_register(int addr, int val); int write_command(int cmd); - int writedown_device_configuration(setting_hardware::HGSCANCONF_3399* dev_conf = NULL); + int writedown_device_configuration(bool type = false, setting_hardware::HGSCANCONF_3399* dev_conf = NULL);//false 在start再把type置为true,其他做设置时不发 int writedown_image_configuration(void); int pop_first_image(void); int read_one_image_from_usb(SANE_Image_Statu statu = SANE_Image_Statu_OK); diff --git a/hgdriver/hgdev/hg_scanner_300.cpp b/hgdriver/hgdev/hg_scanner_300.cpp index 9a22eb1..4ca511a 100644 --- a/hgdriver/hgdev/hg_scanner_300.cpp +++ b/hgdriver/hgdev/hg_scanner_300.cpp @@ -71,6 +71,10 @@ hg_scanner_300::hg_scanner_300(const char* dev_name,int pid, usb_io* io) : hg_sc pid_ = pid; string fw = get_firmware_version(); + if (atoi(fw.substr(4, 9).c_str()) >= 221106) + is_kernelsnap3288_221106_ = true; + else + is_kernelsnap3288_221106_ = false; initdevice(); #ifndef MAPPING_FUNCTION_IN_BASE init_setting_map(setting_map_, ARRAY_SIZE(setting_map_));//优先初始化 @@ -380,12 +384,28 @@ int hg_scanner_300::writedown_device_configuration(bool type,setting_hardware::H int ret = SCANNER_ERR_OK, len = 0; - + SIZE size; if (!d) { dsp_config.params_3288.lutmode = keep_watermark_; d = &dsp_config; } + if (is_multiout) + { + d->params_3288.isColor = image_prc_param_.bits.multi_out == MULTI_COLOR_AND_BW ? 0 : 1; + } + else if ((image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY + || image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE) + && image_prc_param_.bits.rid_color != RID_COLOR_NONE) + { + d->params_3288.isColor = 1; + } + if (img_conf_.is_autocrop) + { + d->params_3288.pageSize = setting3288dsp::G400_AUTO; + } + size = papersize.GetPaperSize(TwSS::A4, 200, img_conf_.paperAlign); + dsp_config.params_3288.dstHeight = (int)((size.cy + 200) / 100); USBCB usbcb = { setting3288dsp::CONFIGURED_DATA, d->value, 0}; len = sizeof(USBCB); @@ -398,42 +418,8 @@ int hg_scanner_300::writedown_device_configuration(bool type,setting_hardware::H int hg_scanner_300::on_color_mode_changed(int& color_mode) { - int ret = SCANNER_ERR_OK; - // if ((((color_mode == COLOR_MODE_24_BITS || color_mode == COLOR_MODE_AUTO_MATCH) && !dsp_config.params_3288.color) || - // ((color_mode != COLOR_MODE_24_BITS && color_mode != COLOR_MODE_AUTO_MATCH) && dsp_config.params_3288.color)) && color_mode != -1) - // { - // printf("color_mode111111111111111111111 =%d\r\n",color_mode); - // dsp_config.params_3288.color ^= 1; - - // //ret = writedown_device_configuration(); - // printf("on_color_mode_changed ret =%d\r\n",ret); - // if(ret) - // dsp_config.params_3288.color ^= 1; - // } - - if (color_mode == COLOR_MODE_BLACK_WHITE || color_mode == COLOR_MODE_256_GRAY) - { - dsp_config.params_3288.isColor = 0; - } - else if(color_mode == COLOR_MODE_24_BITS || color_mode == COLOR_MODE_AUTO_MATCH) - { - dsp_config.params_3288.isColor = 1; - } - - setting_hardware::HGSCANCONF_3288 d = dsp_config; - if(image_prc_param_.bits.rid_color != RID_COLOR_NONE && image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY && color_mode == -1) - { - d.params_3288.isColor = 1; - } - else if (image_prc_param_.bits.rid_color == RID_COLOR_NONE && image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY && color_mode == -1) - { - d.params_3288.isColor = 0; - } - if(color_mode == -1) - ret = writedown_device_configuration(false,&d); - - return ret; - + dsp_config.params_3288.isColor = (color_mode == COLOR_MODE_BLACK_WHITE || color_mode == COLOR_MODE_256_GRAY) ? 0 : 1; + return SCANNER_ERR_OK; } int hg_scanner_300::on_paper_changed(int& paper) { @@ -483,7 +469,8 @@ int hg_scanner_300::on_paper_check_changed(bool& check) int hg_scanner_300::on_resolution_changed(int& dpi) { int ret = SCANNER_ERR_OK; - dsp_config.params_3288.dpi = 1; + dsp_config.params_3288.dpi = is_kernelsnap3288_221106_ ? (dsp_config.params_3288.dpi = (dpi > 200) ? 2 : 1) : dsp_config.params_3288.dpi = 1;//暂时还未有固件支持 + ret = writedown_device_configuration(); return ret; } @@ -512,17 +499,7 @@ int hg_scanner_300::agreement(TwSS tw,int align) setting_hardware::HGSCANCONF_3288 d = dsp_config; size = papersize.GetPaperSize(TwSS::A4,200,align); dsp_config.params_3288.dstHeight = (int)((size.cy + 200)/100); - if (img_conf_.is_autocrop) - { - dsp_config.params_3288.pageSize = setting3288dsp::G400_AUTO; - } - if (img_conf_.filter != 3) - { - d.params_3288.isColor = 1; - } ret = writedown_device_configuration(true,&d); - //io_->set_timeout(200); - return ret; } int hg_scanner_300::initdevice() @@ -542,6 +519,35 @@ int hg_scanner_300::initdevice() void hg_scanner_300::writedown_image_configuration(void) { SCANCONF ic; + int len = sizeof(ic); + + bzero(&ic, len); + + ic.contrast = contrast_; + ic.brightness = bright_; + if (test_1_paper_) + { + LOG_INFO(LOG_LEVEL_DEBUG_INFO, "scanning mode: testing ONE paper ...\n"); + ic.scannum = 1; + } + else + ic.scannum = scan_count_; + ic.en_sizecheck = dsp_config.params_3288.enableSizeDetect; + ic.hardwarecaps.en_skrewdetect = 0; + ic.hardwarecaps.en_doublefeed = dsp_config.params_3288.doubleFeeded; + ic.hardwarecaps.en_stapledetect = 0; + ic.hardwarecaps.skrewdetectlevel = 0; + + // ic.hardwarecaps.is_autopaper = dsp_config_.params_dsp.is_autopaper; + ic.hardwarecaps.capturepixtype = 0; //暂无参数 获取图像类型 + ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //暂无参数 设置休眠时间 两个参数3399未使用 + + + image_configuration(ic); + //int ret = agreement((TwSS)img_conf_.papertype, img_conf_.paperAlign); + + + /*SCANCONF ic; ic.papertype = paper_size_; @@ -754,6 +760,7 @@ void hg_scanner_300::writedown_image_configuration(void) VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.cropRect.width=%d\r\n ",ic.cropRect.width); VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.cropRect.x=%d\r\n ",ic.cropRect.x); VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.cropRect.y=%d\r\n ",ic.cropRect.y); + */ } void hg_scanner_300::printf_devconfig(setting_hardware::HGSCANCONF_3288 *d) @@ -993,20 +1000,6 @@ int hg_scanner_300::on_skew_check_level_changed(int& check) return SCANNER_ERR_OK; } -int hg_scanner_300::agreement() -{ - int ret = SCANNER_ERR_OK; - - if (image_prc_param_.bits.rid_color != RID_COLOR_NONE) - { - dsp_config.params_3288.isColor = 1; - } - - ret = writedown_device_configuration(true); - //io_->set_timeout(200); - - return ret; -} int hg_scanner_300::on_set_feedmode(int feedmode) { diff --git a/hgdriver/hgdev/hg_scanner_300.h b/hgdriver/hgdev/hg_scanner_300.h index 2e7bf88..2fc4b5f 100644 --- a/hgdriver/hgdev/hg_scanner_300.h +++ b/hgdriver/hgdev/hg_scanner_300.h @@ -47,7 +47,6 @@ public: virtual int stop(void)override; private: - int agreement(); int agreement(TwSS tw,int align); int initdevice(); int writeusb(USBCB &usb); @@ -66,6 +65,7 @@ private: setting_hardware::HGSCANCONF_3288 dsp_config; Device::PaperSize papersize; + public: virtual int set_leaflet_scan(void);//单张扫描 virtual int get_abuot_info(void);//获取软件关于信息 diff --git a/hgdriver/hgdev/hg_scanner_302.cpp b/hgdriver/hgdev/hg_scanner_302.cpp index 5d7cd28..08fbf25 100644 --- a/hgdriver/hgdev/hg_scanner_302.cpp +++ b/hgdriver/hgdev/hg_scanner_302.cpp @@ -442,16 +442,37 @@ int hg_scanner_302::get_device_paperon_stautus(void) // return ret; // } -int hg_scanner_302::writedown_device_configuration(setting_hardware::HGSCANCONF_3399 *dev_conf) +int hg_scanner_302::writedown_device_configuration(bool type,setting_hardware::HGSCANCONF_3399 *dev_conf) { int ret = SCANNER_ERR_OK; - + if (!type) + return ret; if (!dev_conf) { dev_conf_.params_3399.is_textcorrect = !keep_watermark_; dev_conf = &dev_conf_; } - + if (is_multiout) + { + dev_conf->params_3399.color = image_prc_param_.bits.multi_out == MULTI_COLOR_AND_BW ? 0 : 1; + } + else if ((image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY + || image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE) + && image_prc_param_.bits.rid_color != RID_COLOR_NONE) + { + dev_conf->params_3399.color = 1; + } + if (image_prc_param_.bits.paper == PAPER_AUTO_MATCH + || image_prc_param_.bits.paper == PAPER_MAX_SIZE + || image_prc_param_.bits.paper == PAPER_MAX_SIZE_CLIP + || image_prc_param_.bits.paper == PAPER_TRIGEMINY + || image_prc_param_.bits.paper == PAPER_16K + || image_prc_param_.bits.paper == PAPER_8K + || image_prc_param_.bits.paper == PAPER_16K_LATERAL + ) + { + dev_conf->params_3399.enable_sizecheck = false; + } ret = write_register(setting3399::SR_CONFIG_SCAN_PARAM, dev_conf->value); VLOG_MINI_2(LOG_LEVEL_DEBUG_INFO, "Writedown scanner configuration(0x%x) = %s\n", dev_conf->value, hg_scanner_err_name(ret)); @@ -460,16 +481,47 @@ int hg_scanner_302::writedown_device_configuration(setting_hardware::HGSCANCONF_ int hg_scanner_302::writedown_image_configuration(void) { - //int ret = write_register(SR_CONFIF_IMGPROCPARAM, sizeof(SCANCONF)); - //if (ret != SCANNER_ERR_OK) - // return ret; - int ret = SCANNER_ERR_OK; SCANCONF ic; int len = sizeof(ic); bzero(&ic, len); + ic.en_sizecheck = dev_conf_.params_3399.enable_sizecheck; + ic.hardwarecaps.en_skrewdetect = dev_conf_.params_3399.screw_detect_enable; + ic.hardwarecaps.en_doublefeed = dev_conf_.params_3399.ultrasonic_enable; + ic.hardwarecaps.en_stapledetect = dev_conf_.params_3399.staple_enbale; + ic.hardwarecaps.skrewdetectlevel = dev_conf_.params_3399.screw_detect_level; + if (test_1_paper_) + { + LOG_INFO(LOG_LEVEL_DEBUG_INFO, "scanning mode: testing ONE paper ...\n"); + ic.scannum = /*ic.is_duplex ? 2 :*/ 1; + } + else + { + if (scan_count_ == -1) + ic.scannum = -1; + else + ic.scannum = (ic.is_duplex ? scan_count_ * 2 : scan_count_); + } + ic.contrast = (contrast_ - 4) * 333.0; + ic.brightness = (bright_ - 128) * (2000.0 / 254.0); + image_configuration(ic); + + { + std::lock_guard lock(io_lock_); + + ret = io_->write_bulk(&ic, &len); + + this_thread::sleep_for(chrono::milliseconds(500)); + io_->set_timeout(2000);//必要延时 +} + /*int ret = SCANNER_ERR_OK; + SCANCONF ic; + int len = sizeof(ic); + + bzero(&ic, len); + ic.papertype = paper_size_; if (is_lateral(image_prc_param_.bits.paper)) @@ -540,7 +592,7 @@ int hg_scanner_302::writedown_image_configuration(void) if (test_1_paper_) { LOG_INFO(LOG_LEVEL_DEBUG_INFO, "scanning mode: testing ONE paper ...\n"); - ic.scannum = /*ic.is_duplex ? 2 :*/ 1; + ic.scannum = 1//ic.is_duplex ? 2 : 1; } else { @@ -709,7 +761,7 @@ int hg_scanner_302::writedown_image_configuration(void) VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.cropRect.x=%f\r\n ", ic.cropRect.x); VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.cropRect.y=%d\r\n ",ic.cropRect.y); - img_conf_ = ic; + img_conf_ = ic*/ return ret; } @@ -850,47 +902,26 @@ void hg_scanner_302::discard_all_images(void) //color_mode =-1 除色选项 int hg_scanner_302::on_color_mode_changed(int& color_mode) { - int ret = SCANNER_ERR_OK; + + dev_conf_.params_3399.color = (color_mode == COLOR_MODE_BLACK_WHITE || color_mode == COLOR_MODE_256_GRAY) ? 0 : 1; + + return SCANNER_ERR_OK; + + /*int ret = SCANNER_ERR_OK; if ((((color_mode == COLOR_MODE_24_BITS || color_mode == COLOR_MODE_AUTO_MATCH) && !dev_conf_.params_3399.color) || - ((color_mode != COLOR_MODE_24_BITS && color_mode != COLOR_MODE_AUTO_MATCH) && dev_conf_.params_3399.color)) && color_mode != -1) + ((color_mode != COLOR_MODE_24_BITS && color_mode != COLOR_MODE_AUTO_MATCH) && dev_conf_.params_3399.color)) && color_mode != -1) { dev_conf_.params_3399.color ^= 1; ret = writedown_device_configuration(); - if(ret) + if (ret) dev_conf_.params_3399.color ^= 1; } - if(color_mode == COLOR_MODE_AUTO_MATCH) + if (color_mode == COLOR_MODE_AUTO_MATCH) { dev_conf_.params_3399.color = 1; - } - - setting_hardware::HGSCANCONF_3399 d = dev_conf_; - - if (image_prc_param_.bits.rid_color != RID_COLOR_NONE - &&(image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY || image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE) - ) - { - d.params_3399.color = 1; - ret = writedown_device_configuration(&d); } - - if(image_prc_param_.bits.rid_color != RID_COLOR_NONE - && (image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY || image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE) - && color_mode == -1) - { - d.params_3399.color = 1; - } - else if (image_prc_param_.bits.rid_color == RID_COLOR_NONE - && (image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY || image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE) - && color_mode == -1) - { - d.params_3399.color = 0; - } - if(color_mode == -1) - ret = writedown_device_configuration(&d); - - return ret; + return ret;*/ } int hg_scanner_302::on_paper_changed(int& paper) { @@ -1262,8 +1293,14 @@ int hg_scanner_302::start(void) return SCANNER_ERR_DEVICE_NO_PAPER; } notify_ui_working_status(STATU_DESC_REWRITE_CONFIGURATION); - writedown_device_configuration(); - writedown_image_configuration(); + ret = writedown_device_configuration(true); + if (ret == SCANNER_ERR_OK) + writedown_image_configuration(); + else + { + status_ = ret; + return ret; + } val = 0; ret = read_register(/*SR_GET_ANDROID_STATE*/0x1001, &val); diff --git a/hgdriver/hgdev/hg_scanner_302.h b/hgdriver/hgdev/hg_scanner_302.h index f35d8ae..33118e7 100644 --- a/hgdriver/hgdev/hg_scanner_302.h +++ b/hgdriver/hgdev/hg_scanner_302.h @@ -47,7 +47,7 @@ class hg_scanner_302 : public hg_scanner int get_device_sleep_stautus(void); int get_device_paperon_stautus(void); - int writedown_device_configuration(setting_hardware::HGSCANCONF_3399 *dev_conf = NULL); + int writedown_device_configuration(bool type =false,setting_hardware::HGSCANCONF_3399 *dev_conf = NULL); int writedown_image_configuration(void); int pop_first_image(void); diff --git a/hgdriver/hgdev/hg_scanner_400.cpp b/hgdriver/hgdev/hg_scanner_400.cpp index f62b5a6..9634536 100644 --- a/hgdriver/hgdev/hg_scanner_400.cpp +++ b/hgdriver/hgdev/hg_scanner_400.cpp @@ -377,20 +377,36 @@ int hg_scanner_400::writedown_device_configuration(bool type,setting_hardware::H { if (!type) return SCANNER_ERR_OK; - - int ret = SCANNER_ERR_OK, - len = 0; - + + int ret = SCANNER_ERR_OK, + len = 0; + SIZE size; if (!d) { - d = &dsp_config; dsp_config.params_3288.lutmode = keep_watermark_; + d = &dsp_config; } + if (is_multiout) + { + d->params_3288.isColor = image_prc_param_.bits.multi_out == MULTI_COLOR_AND_BW ? 0 : 1; + } + else if ((image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY + || image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE) + && image_prc_param_.bits.rid_color != RID_COLOR_NONE) + { + d->params_3288.isColor = 1; + } + if (img_conf_.is_autocrop) + { + d->params_3288.pageSize = setting3288dsp::G400_AUTO; + } + size = papersize.GetPaperSize(TwSS::A4, 200, img_conf_.paperAlign); + dsp_config.params_3288.dstHeight = (int)((size.cy + 200) / 100); - USBCB usbcb = { setting3288dsp::CONFIGURED_DATA, d->value, 0}; + USBCB usbcb = { setting3288dsp::CONFIGURED_DATA, d->value, 0 }; len = sizeof(USBCB); - ret = io_->write_bulk(&usbcb,&len); - + ret = io_->write_bulk(&usbcb, &len); + VLOG_MINI_1(LOG_LEVEL_WARNING, "writedown_device_configuration is .(%s)\n", hg_scanner_err_name(ret)); return ret; @@ -398,43 +414,8 @@ int hg_scanner_400::writedown_device_configuration(bool type,setting_hardware::H int hg_scanner_400::on_color_mode_changed(int& color_mode) { - int ret = SCANNER_ERR_OK; - //printf("color_mode =%d\r\n",color_mode); - // if ((((color_mode == COLOR_MODE_24_BITS || color_mode == COLOR_MODE_AUTO_MATCH) && !dsp_config.params_3288.color) || - // ((color_mode != COLOR_MODE_24_BITS && color_mode != COLOR_MODE_AUTO_MATCH) && dsp_config.params_3288.color)) && color_mode != -1) - // { - // printf("color_mode111111111111111111111 =%d\r\n",color_mode); - // dsp_config.params_3288.color ^= 1; - - // //ret = writedown_device_configuration(); - // printf("on_color_mode_changed ret =%d\r\n",ret); - // if(ret) - // dsp_config.params_3288.color ^= 1; - // } - - if (color_mode == COLOR_MODE_BLACK_WHITE || color_mode == COLOR_MODE_256_GRAY) - { - dsp_config.params_3288.isColor = 0; - } - else if(color_mode == COLOR_MODE_24_BITS || color_mode == COLOR_MODE_AUTO_MATCH) - { - dsp_config.params_3288.isColor = 1; - } - - setting_hardware::HGSCANCONF_3288 d = dsp_config; - if(image_prc_param_.bits.rid_color != RID_COLOR_NONE && image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY && color_mode == -1) - { - dsp_config.params_3288.isColor = 1; - } - else if (image_prc_param_.bits.rid_color == RID_COLOR_NONE && image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY && color_mode == -1) - { - dsp_config.params_3288.isColor = 0; - } - if(color_mode == -1) - ret = writedown_device_configuration(true); - - return ret; - + dsp_config.params_3288.isColor = (color_mode == COLOR_MODE_BLACK_WHITE || color_mode == COLOR_MODE_256_GRAY) ? 0 : 1; + return SCANNER_ERR_OK; } int hg_scanner_400::on_paper_changed(int& paper) { @@ -547,6 +528,35 @@ int hg_scanner_400::initdevice() void hg_scanner_400::writedown_image_configuration(void) { SCANCONF ic; + int len = sizeof(ic); + + bzero(&ic, len); + + ic.contrast = contrast_; + ic.brightness = bright_; + if (test_1_paper_) + { + LOG_INFO(LOG_LEVEL_DEBUG_INFO, "scanning mode: testing ONE paper ...\n"); + ic.scannum = 1; + } + else + ic.scannum = scan_count_; + ic.en_sizecheck = dsp_config.params_3288.enableSizeDetect; + ic.hardwarecaps.en_skrewdetect = 0; + ic.hardwarecaps.en_doublefeed = dsp_config.params_3288.doubleFeeded; + ic.hardwarecaps.en_stapledetect = 0; + ic.hardwarecaps.skrewdetectlevel = 0; + + // ic.hardwarecaps.is_autopaper = dsp_config_.params_dsp.is_autopaper; + ic.hardwarecaps.capturepixtype = 0; //暂无参数 获取图像类型 + ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //暂无参数 设置休眠时间 两个参数3399未使用 + + + image_configuration(ic); + //int ret = agreement((TwSS)img_conf_.papertype, img_conf_.paperAlign); + + + /*SCANCONF ic; ic.papertype = paper_size_; @@ -774,7 +784,7 @@ void hg_scanner_400::writedown_image_configuration(void) VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.cropRect.height=%d\r\n ", ic.cropRect.height); VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.cropRect.x=%f\r\n ", ic.cropRect.x); VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.cropRect.y=%d\r\n ",ic.cropRect.y); - + */ } void hg_scanner_400::printf_devconfig(setting_hardware::HGSCANCONF_3288 *d) diff --git a/hgdriver/hgdev/hg_scanner_402.cpp b/hgdriver/hgdev/hg_scanner_402.cpp index 9e55d83..daeebbd 100644 --- a/hgdriver/hgdev/hg_scanner_402.cpp +++ b/hgdriver/hgdev/hg_scanner_402.cpp @@ -415,19 +415,26 @@ int hg_scanner_402::get_device_paperon_stautus(void) // return ret; // } -int hg_scanner_402::writedown_device_configuration(setting_hardware::HGSCANCONF_3399 *dev_conf) +int hg_scanner_402::writedown_device_configuration(bool type, setting_hardware::HGSCANCONF_3399* dev_conf) { int ret = SCANNER_ERR_OK; - + if (!type) + return ret; if (!dev_conf) + { + dev_conf_.params_3399.is_textcorrect = !keep_watermark_; dev_conf = &dev_conf_; - - if (image_prc_param_.bits.rid_color != RID_COLOR_NONE - && (image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY || image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE)) + } + if (is_multiout) + { + dev_conf->params_3399.color = image_prc_param_.bits.multi_out == MULTI_COLOR_AND_BW ? 0 : 1; + } + else if ((image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY + || image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE) + && image_prc_param_.bits.rid_color != RID_COLOR_NONE) { dev_conf->params_3399.color = 1; } - if (image_prc_param_.bits.paper == PAPER_AUTO_MATCH || image_prc_param_.bits.paper == PAPER_MAX_SIZE || image_prc_param_.bits.paper == PAPER_MAX_SIZE_CLIP @@ -457,6 +464,42 @@ int hg_scanner_402::writedown_image_configuration(void) bzero(&ic, len); + ic.en_sizecheck = dev_conf_.params_3399.enable_sizecheck; + ic.hardwarecaps.en_skrewdetect = dev_conf_.params_3399.screw_detect_enable; + ic.hardwarecaps.en_doublefeed = dev_conf_.params_3399.ultrasonic_enable; + ic.hardwarecaps.en_stapledetect = dev_conf_.params_3399.staple_enbale; + ic.hardwarecaps.skrewdetectlevel = dev_conf_.params_3399.screw_detect_level; + if (test_1_paper_) + { + LOG_INFO(LOG_LEVEL_DEBUG_INFO, "scanning mode: testing ONE paper ...\n"); + ic.scannum = /*ic.is_duplex ? 2 :*/ 1; + } + else + { + if (scan_count_ == -1) + ic.scannum = -1; + else + ic.scannum = (ic.is_duplex ? scan_count_ * 2 : scan_count_); + } + ic.contrast = (contrast_ - 4) * 333.0; + ic.brightness = (bright_ - 128) * (2000.0 / 254.0); + image_configuration(ic); + + { + std::lock_guard lock(io_lock_); + + ret = io_->write_bulk(&ic, &len); + + this_thread::sleep_for(chrono::milliseconds(500)); + io_->set_timeout(2000);//必要延时 + } + + /*int ret = SCANNER_ERR_OK; + SCANCONF ic; + int len = sizeof(ic); + + bzero(&ic, len); + ic.papertype = paper_size_; if (is_lateral(image_prc_param_.bits.paper)) @@ -527,7 +570,7 @@ int hg_scanner_402::writedown_image_configuration(void) if (test_1_paper_) { LOG_INFO(LOG_LEVEL_DEBUG_INFO, "scanning mode: testing ONE paper ...\n"); - ic.scannum = /*ic.is_duplex ? 2 :*/ 1; + ic.scannum = //ic.is_duplex ? 2 :// 1; } else { @@ -698,6 +741,7 @@ int hg_scanner_402::writedown_image_configuration(void) VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO,"\n ic.cropRect.y=%d\r\n ",ic.cropRect.y); img_conf_ = ic; + */ return ret; } @@ -1225,8 +1269,14 @@ int hg_scanner_402::start(void) return SCANNER_ERR_DEVICE_NO_PAPER; } notify_ui_working_status(STATU_DESC_REWRITE_CONFIGURATION); - writedown_device_configuration(); - writedown_image_configuration(); + ret = writedown_device_configuration(true); + if (ret == SCANNER_ERR_OK) + writedown_image_configuration(); + else + { + status_ = ret; + return ret; + } val = 0; ret = read_register(/*SR_GET_ANDROID_STATE*/0x1001, &val); diff --git a/hgdriver/hgdev/hg_scanner_402.h b/hgdriver/hgdev/hg_scanner_402.h index 6b20f13..8f05333 100644 --- a/hgdriver/hgdev/hg_scanner_402.h +++ b/hgdriver/hgdev/hg_scanner_402.h @@ -47,7 +47,7 @@ class hg_scanner_402 : public hg_scanner int get_device_sleep_stautus(void); int get_device_paperon_stautus(void); - int writedown_device_configuration(setting_hardware::HGSCANCONF_3399 *dev_conf = NULL); + int writedown_device_configuration(bool type = false, setting_hardware::HGSCANCONF_3399* dev_conf = NULL); int writedown_image_configuration(void); int pop_first_image(void); diff --git a/hgdriver/hgdev/image_process.cpp b/hgdriver/hgdev/image_process.cpp index e4d65e2..f1bf8d0 100644 --- a/hgdriver/hgdev/image_process.cpp +++ b/hgdriver/hgdev/image_process.cpp @@ -783,9 +783,9 @@ namespace hg_imgproc std::vector mats(mats_); mats_.clear(); - SIZE temp_Size = papersize_.GetPaperSize(img_conf_.papertype,200,img_conf_.paperAlign); + SIZE temp_Size = papersize_.GetPaperSize(img_conf_.papertype, img_conf_.resolution_dst,img_conf_.paperAlign); cv::Size cvSize(temp_Size.cx, temp_Size.cy); - CImageApplyAutoCrop crop(img_conf_.is_autocrop,img_conf_.autodescrew,img_conf_.fillbackground,cvSize,img_conf_.is_convex,img_conf_.isfillcolor); + CImageApplyAutoCrop crop(img_conf_.is_autocrop, img_conf_.autodescrew, img_conf_.fillbackground, cvSize, true, false, 40, 8, 5, false, false); crop.apply(mats,img_conf_.is_duplex); mats_ = mats;