在线程里面进行升级,初始化新增500ms睡眠

This commit is contained in:
13038267101 2023-05-17 11:23:15 +08:00
parent d807da6eb8
commit d1c1f9f512
5 changed files with 57 additions and 18 deletions

View File

@ -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) , 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) , 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_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) #if !defined(_WIN32) && !defined(_WIN64) &&defined(x86_64)
isx86_Advan_ = false; 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_img_.set_debug_info("Image");
wait_usb_result_.set_debug_info("start"); wait_usb_result_.set_debug_info("start");
wait_devsislock_.set_debug_info("Devsislock"); wait_devsislock_.set_debug_info("Devsislock");
//wait_read_int.set_debug_info("read_int"); wait_read_int.set_debug_info("read_int");
//thread_read_int_.reset(new std::thread(&hg_scanner::thread_read_int, this)); 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_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)); 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) void hg_scanner::thread_read_int(void)
{ {
if (run_) if (is_read_int && pid_ == 0x0300)
{ {
wait_read_int.wait(); wait_read_int.wait();
is_read_int = true; is_read_int = true;
notify_ui_working_status(STATU_DESC_SCANNER_ERR_DEVICE_DEVS_BOOTING, SANE_EVENT_STATUS, status_); notify_ui_working_status(STATU_DESC_SCANNER_ERR_DEVICE_DEVS_BOOTING, SANE_EVENT_STATUS, status_);
discard_all_images(); //discard_all_images();
is_read_int = false; set_updata0303();
notify_ui_working_status(STATU_DESC_SCANNER_ERR_DEVICE_DEVS_START_SUCCES, SANE_EVENT_STATUS, status_); 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) void hg_scanner::thread_handle_usb(void)
{ {
@ -3109,7 +3110,7 @@ int hg_scanner::close(bool force)
wait_usb_.notify(); wait_usb_.notify();
wait_img_.notify(); wait_img_.notify();
wait_devsislock_.notify(); wait_devsislock_.notify();
//wait_read_int.notify(); wait_read_int.notify();
if(!scan_life_) if(!scan_life_)
{ {
std::lock_guard<std::mutex> lock(io_lock_); std::lock_guard<std::mutex> lock(io_lock_);
@ -4015,6 +4016,10 @@ int hg_scanner::set_auto_flat(int data)
{ {
return SCANNER_ERR_DEVICE_NOT_SUPPORT; return SCANNER_ERR_DEVICE_NOT_SUPPORT;
} }
int hg_scanner::set_updata0303(void)
{
return 0;
}
int hg_scanner::set_device_model(string sts) int hg_scanner::set_device_model(string sts)
{ {
return SCANNER_ERR_DEVICE_NOT_SUPPORT; return SCANNER_ERR_DEVICE_NOT_SUPPORT;

View File

@ -554,7 +554,7 @@ public:
virtual int set_auto_flat(int data) = 0; //设置自动平场校正 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) // 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 #ifdef UOS

View File

@ -91,8 +91,8 @@ hg_scanner_300::hg_scanner_300(const char* dev_name,int pid, usb_io* io) : hg_sc
else else
init_settings((jsontext3 + jsontext4 + jsontext5).c_str()); init_settings((jsontext3 + jsontext4 + jsontext5).c_str());
} }
//wait_read_int.notify();
initdevice(); initdevice();
wait_read_int.notify();
} }
hg_scanner_300::~hg_scanner_300() hg_scanner_300::~hg_scanner_300()
{} {}
@ -295,11 +295,6 @@ int hg_scanner_300::discard_all_images(void)
} }
int hg_scanner_300::start(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; //StopWatch sw;
// while (is_read_int) // while (is_read_int)
//{ //{
@ -324,6 +319,12 @@ int hg_scanner_300::start(void)
return ret; return ret;
final_imgs_.clear(); 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); ret = get_scan_is_sleep(val);
if (!val && ret == SCANNER_ERR_OK) if (!val && ret == SCANNER_ERR_OK)
{ {
@ -725,7 +726,7 @@ int hg_scanner_300::initdevice()
} }
if (status_ != SCANNER_ERR_DEVICE_SLEEPING) if (status_ != SCANNER_ERR_DEVICE_SLEEPING)
{ {
string fw = get_firmware_version(); /*string fw = get_firmware_version();
if (!fw.empty()) if (!fw.empty())
{ {
if (fw.substr(4, 6) == "230303") if (fw.substr(4, 6) == "230303")
@ -753,7 +754,7 @@ int hg_scanner_300::initdevice()
scanner_path += "update.zip"; scanner_path += "update.zip";
set_firmware_upgrade(scanner_path); set_firmware_upgrade(scanner_path);
} }
} }*/
} }
if (status_ != SCANNER_ERR_DEVICE_SLEEPING) 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)); VLOG_MINI_1(LOG_LEVEL_WARNING, "set_auto_flat ret: %s\n", hg_scanner_err_name(ret));
return 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) int hg_scanner_300::set_serial_num(string str)
{ {
std::lock_guard<std::mutex> lock(io_lock_); std::lock_guard<std::mutex> lock(io_lock_);

View File

@ -110,5 +110,5 @@ public:
virtual int get_devs_distortion_check_val(float& data)override;//获取设备畸变值 float to int; virtual int get_devs_distortion_check_val(float& data)override;//获取设备畸变值 float to int;
virtual int set_auto_flat(int data)override; //设置自动平场校正 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) // 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;
}; };

View File

@ -2446,7 +2446,7 @@ extern "C" { // avoid compiler exporting name in C++ style !!!
return (SANE_Status)SCANNER_ERR_LANG_PAK_LOST; return (SANE_Status)SCANNER_ERR_LANG_PAK_LOST;
local_utility::get_version(version_code); local_utility::get_version(version_code);
std::this_thread::sleep_for(std::chrono::milliseconds(500));
return SANE_STATUS_GOOD; return SANE_STATUS_GOOD;
} }
SANE_Status inner_sane_io_control(SANE_Handle h, unsigned long code, void* data, unsigned* len) SANE_Status inner_sane_io_control(SANE_Handle h, unsigned long code, void* data, unsigned* len)