调整 239打开马上关闭导致的崩溃问题
This commit is contained in:
parent
e2939d5c46
commit
d0cf834b95
|
@ -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);
|
||||
|
|
|
@ -523,22 +523,18 @@ public:
|
|||
/////////////成功返回:SCANNER_ERR_OK /////////////
|
||||
/////////////失败返回:IO错误码 /////////////
|
||||
virtual int set_leaflet_scan(void) = 0; //单张扫描
|
||||
virtual int get_abuot_info(void); //获取软件关于信息 (基类实现)
|
||||
virtual int get_abuot_info(void); //获取软件关于信息 (基类实现)
|
||||
virtual int restore_default_setting(void); //恢复默认设置 (基类实现)
|
||||
virtual int set_final_image_format(SANE_FinalImgFormat* fmt);//设置图像处理最终输出(final())的图像数据格式 (基类实现) ***
|
||||
|
||||
|
||||
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,23 +554,18 @@ 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 ×); //获取设备时间 //3399设备支持
|
||||
|
||||
virtual int get_devs_cpu(string& cpu); //获取设备内存大小
|
||||
virtual int get_devs_disk(string& disk); //获取设备硬盘容量大小
|
||||
virtual int get_devs_cpu(string& cpu); //获取设备内存大小
|
||||
virtual int get_devs_disk(string& disk); //获取设备硬盘容量大小
|
||||
virtual int set_restore(); //还原文件
|
||||
virtual int set_backup(); //备份文件
|
||||
};
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ protected:
|
|||
virtual int on_pick_paper_threshold(double threshold)override;
|
||||
virtual int on_is_auto_paper(bool isautopaper)override; //待纸扫描
|
||||
virtual int on_cis_get_image(bool isautopaper) override; //cis 原图获取
|
||||
virtual int on_process_double_paper(bool type) override; //双张图像校验
|
||||
virtual int on_process_double_paper(bool type) override; //双张图像校验
|
||||
virtual int on_detect_lens_dirty(bool &type) override; //检测镜头脏污
|
||||
|
||||
public:
|
||||
|
|
Loading…
Reference in New Issue