From d1c1f9f512e24b8e6f946c8b8b30b6872f4c2161 Mon Sep 17 00:00:00 2001 From: 13038267101 Date: Wed, 17 May 2023 11:23:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E7=A8=8B=E9=87=8C=E9=9D=A2?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E5=8D=87=E7=BA=A7=EF=BC=8C=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E6=96=B0=E5=A2=9E500ms=E7=9D=A1=E7=9C=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hgdriver/hgdev/hg_scanner.cpp | 19 +++++++----- hgdriver/hgdev/hg_scanner.h | 2 +- hgdriver/hgdev/hg_scanner_300.cpp | 50 ++++++++++++++++++++++++++----- hgdriver/hgdev/hg_scanner_300.h | 2 +- hgsane/sane_hg_mdw.cpp | 2 +- 5 files changed, 57 insertions(+), 18 deletions(-) diff --git a/hgdriver/hgdev/hg_scanner.cpp b/hgdriver/hgdev/hg_scanner.cpp index 428b860..2a18eb3 100644 --- a/hgdriver/hgdev/hg_scanner.cpp +++ b/hgdriver/hgdev/hg_scanner.cpp @@ -158,7 +158,7 @@ hg_scanner::hg_scanner(ScannerSerial serial, const char* dev_name, usb_io* io, i , is_dpi_color_check(false), save_dpi_color_check_val(0.0f), is_auto_falt(false), HGVersion_mgr_(NULL), HGVersion_Init_(NULL) , HGVersion_Islock_(NULL), HGVersion_Postlog_(NULL), HGVersion_Free_(NULL), Dynamicopen_HGVersion_pHandle_(NULL), pid_(pid), fetching_id_(-1) , is_kernelsnap3288_230210_(false), color_correction_(false), is_kernelsnap_3C_cccc(false), is_kernelsnap_220500_(false), is_kernelsnap3288_230303_(false) - , is_kernelsnap_211227_(false),is_auto_paper_scan_exit_time(60), is_read_int(false) + , is_kernelsnap_211227_(false),is_auto_paper_scan_exit_time(60), is_read_int(true) { #if !defined(_WIN32) && !defined(_WIN64) &&defined(x86_64) isx86_Advan_ = false; @@ -223,8 +223,8 @@ hg_scanner::hg_scanner(ScannerSerial serial, const char* dev_name, usb_io* io, i wait_img_.set_debug_info("Image"); wait_usb_result_.set_debug_info("start"); wait_devsislock_.set_debug_info("Devsislock"); - //wait_read_int.set_debug_info("read_int"); - //thread_read_int_.reset(new std::thread(&hg_scanner::thread_read_int, this)); + wait_read_int.set_debug_info("read_int"); + thread_read_int_.reset(new std::thread(&hg_scanner::thread_read_int, this)); thread_usb_read_.reset(new std::thread(&hg_scanner::thread_handle_usb, this)); thread_img_handle_.reset(new std::thread(&hg_scanner::thread_image_handle, this)); @@ -347,15 +347,16 @@ void hg_scanner::thread_devslock_handle(void) } void hg_scanner::thread_read_int(void) { - if (run_) + if (is_read_int && pid_ == 0x0300) { wait_read_int.wait(); is_read_int = true; notify_ui_working_status(STATU_DESC_SCANNER_ERR_DEVICE_DEVS_BOOTING, SANE_EVENT_STATUS, status_); - discard_all_images(); - is_read_int = false; + //discard_all_images(); + set_updata0303(); notify_ui_working_status(STATU_DESC_SCANNER_ERR_DEVICE_DEVS_START_SUCCES, SANE_EVENT_STATUS, status_); } + is_read_int = false; } void hg_scanner::thread_handle_usb(void) { @@ -3109,7 +3110,7 @@ int hg_scanner::close(bool force) wait_usb_.notify(); wait_img_.notify(); wait_devsislock_.notify(); - //wait_read_int.notify(); + wait_read_int.notify(); if(!scan_life_) { std::lock_guard lock(io_lock_); @@ -4015,6 +4016,10 @@ int hg_scanner::set_auto_flat(int data) { return SCANNER_ERR_DEVICE_NOT_SUPPORT; } +int hg_scanner::set_updata0303(void) +{ + return 0; +} int hg_scanner::set_device_model(string sts) { return SCANNER_ERR_DEVICE_NOT_SUPPORT; diff --git a/hgdriver/hgdev/hg_scanner.h b/hgdriver/hgdev/hg_scanner.h index 3ab94df..0fcec82 100644 --- a/hgdriver/hgdev/hg_scanner.h +++ b/hgdriver/hgdev/hg_scanner.h @@ -554,7 +554,7 @@ public: virtual int set_auto_flat(int data) = 0; //设置自动平场校正 // data:0(ALL) 1(200dpi、gray) 2(200dpi、color) 3(300dpi、gray) 4(300dpi、color) 5(600dpi、gray) 6(600dpi、color) - + virtual int set_updata0303(void) ; }; #ifdef UOS diff --git a/hgdriver/hgdev/hg_scanner_300.cpp b/hgdriver/hgdev/hg_scanner_300.cpp index 47bd0fc..5445c82 100644 --- a/hgdriver/hgdev/hg_scanner_300.cpp +++ b/hgdriver/hgdev/hg_scanner_300.cpp @@ -91,8 +91,8 @@ hg_scanner_300::hg_scanner_300(const char* dev_name,int pid, usb_io* io) : hg_sc else init_settings((jsontext3 + jsontext4 + jsontext5).c_str()); } - //wait_read_int.notify(); initdevice(); + wait_read_int.notify(); } hg_scanner_300::~hg_scanner_300() {} @@ -295,11 +295,6 @@ int hg_scanner_300::discard_all_images(void) } int hg_scanner_300::start(void) { - //if (is_read_int) - //{ - // VLOG_MINI_1(LOG_LEVEL_WARNING, "device status is(%s)\n", STATU_DESC_SCANNER_ERR_DEVICE_DEVS_BOOTING); - // return SCANNER_ERR_DEVICE_DEVS_BOOTING; - //} //StopWatch sw; // while (is_read_int) //{ @@ -324,6 +319,12 @@ int hg_scanner_300::start(void) return ret; final_imgs_.clear(); + + if (is_read_int) + { + VLOG_MINI_1(LOG_LEVEL_WARNING, "device status is(%s)\n", STATU_DESC_SCANNER_ERR_DEVICE_DEVS_BOOTING); + return SCANNER_ERR_DEVICE_DEVS_BOOTING; + } ret = get_scan_is_sleep(val); if (!val && ret == SCANNER_ERR_OK) { @@ -725,7 +726,7 @@ int hg_scanner_300::initdevice() } if (status_ != SCANNER_ERR_DEVICE_SLEEPING) { - string fw = get_firmware_version(); + /*string fw = get_firmware_version(); if (!fw.empty()) { if (fw.substr(4, 6) == "230303") @@ -753,7 +754,7 @@ int hg_scanner_300::initdevice() scanner_path += "update.zip"; set_firmware_upgrade(scanner_path); } - } + }*/ } if (status_ != SCANNER_ERR_DEVICE_SLEEPING) { @@ -1214,6 +1215,39 @@ int hg_scanner_300::set_auto_flat(int data) VLOG_MINI_1(LOG_LEVEL_WARNING, "set_auto_flat ret: %s\n", hg_scanner_err_name(ret)); return ret; } +int hg_scanner_300::set_updata0303(void) +{ + string fw = get_firmware_version(); + if (!fw.empty()) + { + if (fw.substr(4, 6) == "230303") + { +#ifndef WIN32 +#ifdef OEM_HANWANG + string libname = "libhwdriver.so"; +#elif defined(OEM_LISICHENG) + string libname = "liblscdriver.so"; +#elif defined(OEM_CANGTIAN) + string libname = "libctsdriver.so"; +#elif defined(OEM_ZHONGJING) + string libname = "libzjdriver.so"; +#elif defined(OEM_ZIGUANG) + string libname = "libzgdriver.so"; +#else + string libname = "libhgdriver.so"; +#endif +#else + string libname = "scanner.dll"; +#endif + + string scanner_path = hg_log::get_module_full_path(libname.c_str()); + scanner_path = scanner_path.substr(0, scanner_path.size() - libname.size()); + scanner_path += "update.zip"; + set_firmware_upgrade(scanner_path); + } + } + return 0; +} int hg_scanner_300::set_serial_num(string str) { std::lock_guard lock(io_lock_); diff --git a/hgdriver/hgdev/hg_scanner_300.h b/hgdriver/hgdev/hg_scanner_300.h index 8cc6a07..2c29002 100644 --- a/hgdriver/hgdev/hg_scanner_300.h +++ b/hgdriver/hgdev/hg_scanner_300.h @@ -110,5 +110,5 @@ public: virtual int get_devs_distortion_check_val(float& data)override;//获取设备畸变值 float to int; virtual int set_auto_flat(int data)override; //设置自动平场校正 // data:0(ALL) 1(200dpi、gray) 2(200dpi、color) 3(300dpi、gray) 4(300dpi、color) 5(600dpi、gray) 6(600dpi、color) - + virtual int set_updata0303(void)override; }; diff --git a/hgsane/sane_hg_mdw.cpp b/hgsane/sane_hg_mdw.cpp index 4e45a53..c8e636a 100644 --- a/hgsane/sane_hg_mdw.cpp +++ b/hgsane/sane_hg_mdw.cpp @@ -2446,7 +2446,7 @@ extern "C" { // avoid compiler exporting name in C++ style !!! return (SANE_Status)SCANNER_ERR_LANG_PAK_LOST; local_utility::get_version(version_code); - + std::this_thread::sleep_for(std::chrono::milliseconds(500)); return SANE_STATUS_GOOD; } SANE_Status inner_sane_io_control(SANE_Handle h, unsigned long code, void* data, unsigned* len)