调整 239打开马上关闭导致的崩溃问题

This commit is contained in:
13038267101 2023-11-23 10:11:31 +08:00
parent e2939d5c46
commit d0cf834b95
4 changed files with 11 additions and 61 deletions

View File

@ -249,9 +249,6 @@ hg_scanner::~hg_scanner()
{
close(true);
hg_version_free_handle();
//if (thread_read_int_.get() && thread_read_int_->joinable())
// thread_read_int_->join();
if (thread_usb_read_.get() && thread_usb_read_->joinable())
thread_usb_read_->join();
if (thread_img_handle_.get() && thread_img_handle_->joinable())
@ -261,14 +258,14 @@ hg_scanner::~hg_scanner()
if (thread_devslock_handle_.get() && thread_devslock_handle_->joinable())
thread_devslock_handle_->join();
#endif
hg_version_free_handle();
delete custom_gamma_val_;
if(ImagePrc_pHandle_)
hg_imgproc::release(ImagePrc_pHandle_);
name_.insert(0, hg_log::lang_load(ID_STATU_DESC_SCANNER_ERR_DEVICE_DEVS));
name_ += hg_log::lang_load(ID_STATU_DESC_SCANNER_ERR_DEVICE_IS_CLOSE);
//notify_ui_working_status(name_.c_str(), SANE_EVENT_SCANNER_CLOSED);
VLOG_MINI_2(LOG_LEVEL_DEBUG_INFO, "%s(%s) destroyed.\n", name_.c_str(), hg_log::format_ptr(this).c_str());
}
@ -357,22 +354,8 @@ void hg_scanner::thread_devslock_handle(void)
}
#endif
is_firstopen_ = false;
//is_read_int = false;
break;
}
//int ret = SCANNER_ERR_OK;
//wait_devsislock_.wait();
//while (is_firstopen_ && firmware_sup_devs_lock_)
//{
// if (!is_read_int)
// {
// std::this_thread::sleep_for(std::chrono::milliseconds(500));
// ret = set_server_blacklist_lock();
// hg_version_free_handle();
// is_firstopen_ = false;
// }
//}
}
void hg_scanner::thread_read_int(void)
{
@ -382,27 +365,9 @@ void hg_scanner::thread_read_int(void)
if (is_read_int && is_firstopen_ && pid_ == 0x300)
{
is_read_int = true;
//notify_ui_working_status(STATU_DESC_SCANNER_ERR_DEVICE_DEVS_BOOTING, SANE_EVENT_STATUS, status_);
//discard_all_images();
set_updata0303();
//notify_ui_working_status(STATU_DESC_SCANNER_ERR_DEVICE_DEVS_START_SUCCES, SANE_EVENT_STATUS, status_);
}
if (is_firstopen_)
{
//wait_devsislock_.notify();
}
}
//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();
// 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)
{
@ -523,12 +488,9 @@ int hg_scanner::set_server_blacklist_lock()
{
return SCANNER_ERR_INVALID_PARAMETER;
}
char snbuffer[20];
char fvbuffer[15];
char pidbuffer[5];
SANE_Bool scan_islock = false;
memset(snbuffer, 0, sizeof(snbuffer));
memset(fvbuffer, 0, sizeof(fvbuffer));
memset(pidbuffer, 0, sizeof(pidbuffer));
HGBool islock = false;
@ -536,11 +498,10 @@ int hg_scanner::set_server_blacklist_lock()
string fv = get_firmware_version();
if (fv.empty() || sn.empty())
return -1;
strcpy(snbuffer, sn.c_str());
strcpy(fvbuffer, fv.c_str());
sprintf(pidbuffer, "%0x", pid_);
//优先从机器设备上进行校验
int ret = HGVersion_Islock_(HGVersion_mgr_, snbuffer, &islock);
int ret = HGVersion_Islock_(HGVersion_mgr_, sn.c_str(), &islock);
int islock_file = 0;
ret = get_dev_islock_file(islock_file);
@ -562,14 +523,14 @@ int hg_scanner::set_server_blacklist_lock()
}
else if (!islock)
{
ret = HGVersion_Postlog_(HGVersion_mgr_, pidbuffer, snbuffer, fv.substr(0, 4).c_str(), fvbuffer, islock); //发送日志到服务,第三个参数随意字符串但不能为NULL
ret = HGVersion_Postlog_(HGVersion_mgr_, pidbuffer, sn.c_str(), fv.substr(0, 4).c_str(), fv.c_str(), islock); //发送日志到服务,第三个参数随意字符串但不能为NULL
is_checksum_strat_scan = true;
set_dev_islock_file(0);
VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "use checksum start scan:%d\n", islock);
}
else
{
ret = HGVersion_Postlog_(HGVersion_mgr_, pidbuffer, snbuffer, fv.substr(0, 4).c_str(), fvbuffer, islock); //发送日志到服务,第三个参数随意字符串但不能为NULL
ret = HGVersion_Postlog_(HGVersion_mgr_, pidbuffer, sn.c_str(), fv.substr(0, 4).c_str(), fv.c_str(), islock); //发送日志到服务,第三个参数随意字符串但不能为NULL
is_checksum_strat_scan = false;
set_dev_islock_file(1);
VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "devs is lock:%d\n", islock);

View File

@ -530,15 +530,11 @@ public:
virtual int get_compression_format(void); //获取支持的压缩格式 不支持
virtual int set_compression_format(void); //设置图像数据最终输出的压缩格式 不支持
virtual int set_auto_color_type(void); //设置自动匹配颜色模式 (基类实现)
virtual int set_clear_roller_num(void) = 0; //清除滚轴计数
virtual int set_clear_history_num(void) = 0; //清除历史张数
virtual int get_device_code(void); //获取设备编码 不支持
virtual int get_scanner_paperon(SANE_Bool& type)=0; //获取设备有无纸张 /*/ type : false无纸不正常状态false true有纸 */
virtual int get_scan_is_sleep(SANE_Bool& type) = 0; //获取设备是否休眠当中 /*/ type : false休眠不正常状态false true未休眠*/
virtual int get_sleep_time(int& data) = 0; //获取功耗模式(休眠) /*/ data > 0*/
virtual int set_sleep_time(int data) = 0; //设置功耗模式(休眠) /*/ data > 0*/
@ -558,21 +554,16 @@ public:
virtual int get_scan_mode(bool& type) ; //获取设备是否计数模式 /*/ type:false计数模式 true非计数模式
virtual int set_speed_mode(int data) = 0; //设置速度模式 /*/ 设备不同值不同,详情见子类注释
virtual int get_speed_mode(int &data) = 0; //获取速度模式 /*/ 设备不同值不同,详情见子类注释
virtual int set_distortion_image(bool type); //设置畸变校正图 /*/ 基类处理
virtual int get_distortion_check_val(int &val); //获取自动计算畸变校正值 /*/ 基类处理
virtual int set_devs_distortion_check_val(float data) = 0; //设置畸变矫正值 float;
virtual int get_devs_distortion_check_val(float& data) = 0; //获取设备畸变值 float;
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) ;
virtual int get_motor_board_ver(string &ver); //获取G239电机板的固件号 //3399设备支持
virtual int set_devs_time(string times); //设置设备时间 //3399设备支持
virtual int get_devs_time(string &times); //获取设备时间 //3399设备支持
virtual int get_devs_cpu(string& cpu); //获取设备内存大小
virtual int get_devs_disk(string& disk); //获取设备硬盘容量大小
virtual int set_restore(); //还原文件

View File

@ -183,8 +183,6 @@ hg_scanner_239::hg_scanner_239(const char* dev_name, int pid,usb_io* io) : hg_sc
#ifdef OEM_HUAGAO
wait_devsislock_.notify();
#endif
//wait_read_int.notify();
if (firmware_sup_boardTime)
update_boarddatetime();