diff --git a/hgdriver/hgdev/hg_scanner.cpp b/hgdriver/hgdev/hg_scanner.cpp index b0ea78b..f77ce95 100644 --- a/hgdriver/hgdev/hg_scanner.cpp +++ b/hgdriver/hgdev/hg_scanner.cpp @@ -3120,7 +3120,7 @@ int hg_scanner::set_setting_value(const char* name, void* data, long* len) } int hg_scanner::on_scanner_closing(bool force) { - return SCANNER_ERR_DEVICE_NOT_SUPPORT; + return SCANNER_ERR_OK; } void hg_scanner::thread_handle_usb_read(void) diff --git a/hgdriver/wrapper/huagaoxxx_warraper_ex.cpp b/hgdriver/wrapper/huagaoxxx_warraper_ex.cpp index 9f1e45e..357dc52 100644 --- a/hgdriver/wrapper/huagaoxxx_warraper_ex.cpp +++ b/hgdriver/wrapper/huagaoxxx_warraper_ex.cpp @@ -13,6 +13,7 @@ #include #endif #include +#include #define MAKE_VERSION(a, b, c, d) \ @@ -138,7 +139,26 @@ extern "C" scanner_err hg_scanner_open(scanner_handle* h, const char* name, bool shared, const char* user, const char* pwd, const char* check, char* rsc) { - return hg_scanner_mgr::instance()->hg_scanner_open(h, name, shared, user, pwd, check, rsc); + try + { + return hg_scanner_mgr::instance()->hg_scanner_open(h, name, shared, user, pwd, check, rsc); + } + catch (std::exception& e) + { + if (h) + *h = nullptr; + VLOG_MINI_2(LOG_LEVEL_FATAL, "Exception occurs when open '%s': %s.\n", name, e.what()); + + return SCANNER_ERR_DATA_DAMAGED; + } + catch (...) + { + if (h) + *h = nullptr; + VLOG_MINI_1(LOG_LEVEL_FATAL, "Exception occurs when open '%s'!\n", name); + + return SCANNER_ERR_DATA_DAMAGED; + } } scanner_err hg_scanner_close(scanner_handle h, bool force)