fix BUG-843: 超时就休眠一会儿,给别的线程一点访问USB的机会。
This commit is contained in:
parent
d8ade4c912
commit
b0274c4b31
|
@ -109,7 +109,7 @@ namespace settings
|
|||
{200.0f, 1},
|
||||
{240.0f, 1},
|
||||
{300.0f, 0},
|
||||
{600.0f, 1} //临时版本发1 原来发2
|
||||
{600.0f, 1} //临时版本å<EFBFBD>? 原æ<C5B8>¥å<C2A5>?
|
||||
};
|
||||
bool is_equal(float l, float r)
|
||||
{
|
||||
|
@ -331,7 +331,7 @@ int hg_scanner_239::set_auto_flat(int data)
|
|||
}
|
||||
if ((fw[5] == 'A' && atoi(fw.substr(6, 4).c_str()) <= 9999))
|
||||
{
|
||||
data = data == 1 ? 1 : 0; //暂时没有用。
|
||||
data = data == 1 ? 1 : 0; //暂时没有用�
|
||||
}
|
||||
if (!wait_usb_.is_waiting())
|
||||
{
|
||||
|
@ -569,7 +569,7 @@ void hg_scanner_239::init_version(void)
|
|||
{
|
||||
firmware_sup_wait_paper_ = year_date.compare("3B0629") >= 0 ? true : false;
|
||||
firmware_sup_log_export_ = true;
|
||||
firmware_sup_pick_strength_ = false; //不支持
|
||||
firmware_sup_pick_strength_ = false; //ä¸<EFBFBD>支æŒ?
|
||||
firmware_sup_wake_device_ = year_date.compare("3C0518") >= 0 ? true : false;
|
||||
firmware_sup_color_corr_ = year.compare("3C") >= 0 ? true : false;
|
||||
firmware_sup_double_img = year_date.compare("3C1021") >= 0 ? true : false;
|
||||
|
@ -601,7 +601,7 @@ int hg_scanner_239::writedown_device_configuration(bool type, setting_hardware:
|
|||
int ret = SCANNER_ERR_OK;
|
||||
if (!type)
|
||||
return ret;
|
||||
setting_hardware::HGSCANCONF_3399 p = dev_conf_; //不得改变外部的值
|
||||
setting_hardware::HGSCANCONF_3399 p = dev_conf_; //ä¸<EFBFBD>得改å<EFBFBD>˜å¤–部的å€?
|
||||
p.params_3399.is_autopaper = is_auto_scan();
|
||||
if (!dev_conf)
|
||||
dev_conf = &p;
|
||||
|
@ -622,7 +622,7 @@ int hg_scanner_239::writedown_device_configuration(bool type, setting_hardware:
|
|||
dev_conf->params_3399.is_fixedpaper = false;
|
||||
dev_conf->params_3399.en_autosize = true;
|
||||
}
|
||||
if (!firmware_sup_auto_speed_ && image_prc_param_.bits.paper == PAPER_AUTO_MATCH)//3399 ,在3C之前的版本 匹配原始尺寸设置 12
|
||||
if (!firmware_sup_auto_speed_ && image_prc_param_.bits.paper == PAPER_AUTO_MATCH)//3399 ,åœ?C之å‰<C3A5>的版æœ?匹é…<C3A9>原始尺寸设置 12
|
||||
{
|
||||
dev_conf->params_3399.paper = 12;
|
||||
}
|
||||
|
@ -677,9 +677,9 @@ int hg_scanner_239::writedown_image_configuration(void)
|
|||
ret = write_register(setting3399::SR_CONFIF_IMGPROCPARAM, sizeof(SCANCONF));
|
||||
ret = io_->write_bulk(&ic, &len);
|
||||
|
||||
//这个地方休眠是为了当初某个型号设备下面在初始化某个协议时比较耗时,所以加上。
|
||||
//2023/11/30 普世需要能够较为流程点击扫描到出第一张图,所以这个地方进行屏蔽,如果某天有哪台设备不出图,你可以看下这里,对版本进行判断加上这个延时的操作
|
||||
// 注意debug 可能会调试不出来,因为要加载debug信息,所以发送信息就会慢点
|
||||
//è¿™ä¸ªåœ°æ–¹ä¼‘çœ æ˜¯ä¸ºäº†å½“åˆ<EFBFBD>æŸ<EFBFBD>个型å<EFBFBD>·è®¾å¤‡ä¸‹é<EFBFBD>¢åœ¨åˆ<EFBFBD>始化æŸ<EFBFBD>个å<EFBFBD><EFBFBD>è®®æ—¶æ¯”è¾ƒè€—æ—¶ï¼Œæ‰€ä»¥åŠ ä¸Šã€?
|
||||
//2023/11/30 普世需è¦<EFBFBD>能够较为æµ<EFBFBD>程点击扫æ<EFBFBD><EFBFBD>åˆ°å‡ºç¬¬ä¸€å¼ å›¾ï¼Œæ‰€ä»¥è¿™ä¸ªåœ°æ–¹è¿›è¡Œå±<EFBFBD>蔽,如果æŸ<EFBFBD>天有哪å<EFBFBD>°è®¾å¤‡ä¸<EFBFBD>å‡ºå›¾ï¼Œä½ å<EFBFBD>¯ä»¥çœ‹ä¸‹è¿™é‡Œï¼Œå¯¹ç‰ˆæœ¬è¿›è¡Œåˆ¤æ–åŠ ä¸Šè¿™ä¸ªå»¶æ—¶çš„æ“<EFBFBD>ä½?
|
||||
// 注æ„<EFBFBD>debug å<>¯èƒ½ä¼šè°ƒè¯•ä¸<C3A4>出æ<C2BA>¥ï¼Œå› 为è¦<C3A8>åŠ è½½debugä¿¡æ<C2A1>¯ï¼Œæ‰€ä»¥å<C2A5>‘é€<C3A9>ä¿¡æ<C2A1>¯å°±ä¼šæ…¢ç‚?
|
||||
//this_thread::sleep_for(chrono::milliseconds(500));
|
||||
//io_->set_timeout(2000);//必要延时
|
||||
}
|
||||
|
@ -927,7 +927,7 @@ int hg_scanner_239::on_resolution_changed(int& dpi)
|
|||
else
|
||||
dev_conf_.params_3399.dpi = dpi >= 500 ? 3 : (dpi < 500 && dpi> 299) ? 2 : 1;
|
||||
|
||||
//dev_conf_.params_3399.dpi = 1; //dpi 华凌cis和敦南cis 默认发1无需改变
|
||||
//dev_conf_.params_3399.dpi = 1; //dpi å<EFBFBD>Žå‡Œcis和敦å<EFBFBD>—cis 默认å<C2A4>?æ— éœ€æ”¹å<C2B9>˜
|
||||
int ret = writedown_device_configuration();
|
||||
return ret;
|
||||
}
|
||||
|
@ -985,7 +985,7 @@ int hg_scanner_239::on_skew_check_changed(bool& check)
|
|||
int hg_scanner_239::on_skew_check_level_changed(int& check)
|
||||
{
|
||||
int ret = SCANNER_ERR_OK,
|
||||
val = check - 1,//涓婇潰璁剧疆鐨勬槸1 - 5 锛屾帴鍙楄寖鍥村€间负0 - 4锛岄粯璁?
|
||||
val = check - 1,//涓婇潰ç’<EFBFBD>剧疆é<EFBFBD>¨å‹¬æ§? - 5 锛屾帴é<C2B4>™æ¥„寖é<E28093>¥æ<C2A5>‘€间è´? - 4锛岄粯ç’<C3A7>?
|
||||
old = dev_conf_.params_3399.screw_detect_level;
|
||||
setting_hardware::HGSCANCONF_3399 cf;
|
||||
|
||||
|
@ -1353,11 +1353,11 @@ void hg_scanner_239::thread_get_dves_image(void)
|
|||
while (run_)//&& !user_cancel_
|
||||
{
|
||||
size = sizeof(buf);
|
||||
memset(buf, 0, size);
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(io_lock_);
|
||||
|
||||
memset(buf, 0, size);
|
||||
io_->set_timeout(500); //2023 11 30之前一直使用1000ms ,但是为了能够快速响应下次的状态信息返回这里设置为500ms
|
||||
io_->set_timeout(500); //2023 11 30之å‰<C3A5>一直使ç”?000ms ,但是为了能够快速å“<C3A5>应下次的状æ€<C3A6>ä¿¡æ<C2A1>¯è¿”回这里设置为500ms
|
||||
ret = io_->read_interrupt(buf, &size);
|
||||
}
|
||||
|
||||
|
@ -1366,7 +1366,7 @@ void hg_scanner_239::thread_get_dves_image(void)
|
|||
if (sw.elapsed_s() > 120 && !is_auto_scan())
|
||||
{
|
||||
status_ = ret;
|
||||
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_GET_IMAGE_OUTTIME), SANE_EVENT_ERROR, ret); // 鍙栧浘閫氫俊瓒呮椂
|
||||
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_GET_IMAGE_OUTTIME), SANE_EVENT_ERROR, ret); // é<EFBFBD>™æ §æµ˜é–«æ°«ä¿Šç“’å‘®æ¤?
|
||||
VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "get image time out:%s\n", hg_scanner_err_name(status_));
|
||||
break;
|
||||
}
|
||||
|
@ -1392,7 +1392,10 @@ void hg_scanner_239::thread_get_dves_image(void)
|
|||
LOG_INFO(LOG_LEVEL_DEBUG_INFO, "User cancelled (checked when read INT timeout), we faked a 'STOP' messag to enter exiting process ...\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(1)); // for BUG-843
|
||||
continue;
|
||||
}
|
||||
|
||||
}
|
||||
else if (ret != SCANNER_ERR_OK)
|
||||
|
@ -1422,7 +1425,7 @@ void hg_scanner_239::thread_get_dves_image(void)
|
|||
}
|
||||
|
||||
//break;
|
||||
//杩欎釜鏃跺€欓€€鍑虹殑璇濇秷鎭氨杩樻病璇诲畬锛岄敊璇俊鎭厛淇濆瓨涓嬫潵锛屽彧鏈夎幏鍙栧埌stop鏃舵墠閫€鍑猴紝濡傛灉娌¤幏鍙栧畬閫€鍑猴紝鍙兘浼氬鑷寸浜屾鎵弿鐩存帴杩斿洖鎵弿瀹屾垚
|
||||
//æ<EFBFBD>©æ¬Žé‡œé<EFBFBD>ƒè·ºâ‚¬æ¬“€€é<EFBFBD>‘虹殑璇濇秷éŽîˆšæ°¨æ<EFBFBD>©æ¨»ç—…璇诲畬锛岄敊璇俊éŽîˆšåŽ›æ·‡æ¿†ç“¨æ¶“嬫潵锛屽彧é<EFBFBD>ˆå¤Žå¹<EFBFBD>é<EFBFBD>™æ §åŸŒstopé<EFBFBD>ƒèˆµå¢ 閫€é<EFBFBD>‘猴ç´<EFBFBD>æ¿¡å‚›ç<EFBFBD>‰å¨ŒÂ¤å¹<EFBFBD>é<EFBFBD>™æ §ç•¬é–«â‚¬é<EFBFBD>‘猴ç´<EFBFBD>é<EFBFBD>™îˆ<EFBFBD>兘浼氬鑷寸浜屾鎵弿é<EFBFBD>©å˜å¸´æ<EFBFBD>©æ–¿æ´–鎵弿瀹屾åž?
|
||||
}
|
||||
if (info->From == setting3399::IMG)
|
||||
{
|
||||
|
@ -1445,8 +1448,8 @@ void hg_scanner_239::thread_get_dves_image(void)
|
|||
//else
|
||||
// VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "status(0x%x) is not accept in usb thread\n", status);
|
||||
}
|
||||
else if (info->From == setting3399::STOPSCAN)//鍥轰欢鐗堟湰:3B0326鑾峰彇鏃犵焊鏃讹紝涓嬮潰涓柇淇℃伅浼氬厛鍙戞棤绾稿湪鍋滄鎵弿,鐒跺悗鍦ㄥ彂鏃犵焊
|
||||
{ //姝ゆ椂int绔偣杩樿淇℃伅娌℃湁璇诲彇瀹岋紝鑰屼笖閫€鍑虹偣鍑荤户缁壂鎻忥紝涓嬮潰璁惧杩樻湭缁撴潫鎵弿
|
||||
else if (info->From == setting3399::STOPSCAN)//é<EFBFBD>¥è½°æ¬¢é<EFBFBD>—å Ÿæ¹°:3B0326鑾峰彇é<E280A1>ƒçŠµç„Šé<C5A0>ƒè®¹ç´<C3A7>涓嬮潰涓柇淇℃伅浼氬厛é<E280BA>™æˆžæ£¤ç»¾ç¨¿æ¹ªé<C2AA>‹æ»„鎵å¼?é<>’跺悗é<E28094>¦ã„¥å½‚é<E2809A>ƒçŠµç„?
|
||||
{ //å§<EFBFBD>ゆ椂int绔å<EFBFBD>£æ<EFBFBD>©æ¨¿î›¦æ·‡â„ƒä¼…娌℃æ¹<EFBFBD>璇诲彇瀹岋ç´<EFBFBD>鑰屼笖閫€é<EFBFBD>‘虹å<EFBFBD>£é<EFBFBD>‘è<EFBFBD>¤æˆ·ç¼<EFBFBD>壂鎻忥ç´<EFBFBD>涓嬮潰ç’<EFBFBD>惧æ<EFBFBD>©æ¨»æ¹ç¼<EFBFBD>撴潫鎵å¼?
|
||||
if (!svdevs_err_.empty())
|
||||
{
|
||||
status_ = svdevs_err_.front();
|
||||
|
@ -1580,7 +1583,7 @@ int hg_scanner_239::do_start(void)
|
|||
|
||||
reset();
|
||||
|
||||
//211220固件版本不支持返回
|
||||
//211220固件版本ä¸<EFBFBD>支æŒ<EFBFBD>è¿”å›?
|
||||
ret = get_scan_is_sleep(val);
|
||||
if (!val && ret == SCANNER_ERR_OK)
|
||||
{
|
||||
|
@ -1871,7 +1874,7 @@ int hg_scanner_239::get_scan_is_sleep(SANE_Bool& type)
|
|||
std::lock_guard<std::mutex> lock(io_lock_);
|
||||
|
||||
int ret = 0,val;
|
||||
ret = read_register(setting3399::SR_GET_SLEEP_STAUTUS, &val); //0休眠 1唤醒状态
|
||||
ret = read_register(setting3399::SR_GET_SLEEP_STAUTUS, &val); //0ä¼‘çœ 1唤醒状æ€?
|
||||
if (ret == SCANNER_ERR_OK)
|
||||
{
|
||||
type = val == 1 ? true : false;
|
||||
|
@ -2046,7 +2049,7 @@ int hg_scanner_239::set_scan_lock_check_val(string check_str)
|
|||
{
|
||||
return SCANNER_ERR_INVALID_PARAMETER;
|
||||
}
|
||||
int num = 32 - keys.size(); //保持32位下发
|
||||
int num = 32 - keys.size(); //ä¿<EFBFBD>æŒ<EFBFBD>32ä½<EFBFBD>下å<EFBFBD>?
|
||||
if (num > 0)
|
||||
{
|
||||
std::string str(num, '0');
|
||||
|
@ -2106,7 +2109,7 @@ int hg_scanner_239::set_firmware_upgrade(std::string filename)
|
|||
return SCANNER_ERR_OPEN_FILE_FAILED;
|
||||
}
|
||||
fwname.seekg(0, std::ios::end);
|
||||
int total = fwname.tellg();//记录总长度
|
||||
int total = fwname.tellg();//记录总长�
|
||||
fwname.seekg(0, std::ios::beg);
|
||||
int pos = fwname.tellg();//记录pos位置
|
||||
|
||||
|
@ -2145,7 +2148,7 @@ int hg_scanner_239::set_firmware_upgrade(std::string filename)
|
|||
return SCANNER_ERR_DEVICE_UPGRADE_FAIL;
|
||||
|
||||
int to_cnt = 0;
|
||||
// 到这个位置已经能够升级成功了 后面对升级结果做下判断
|
||||
// 到这个ä½<EFBFBD>置已ç»<EFBFBD>能够å<EFBFBD>‡çº§æˆ<EFBFBD>功了 å<>Žé<C5BD>¢å¯¹å<C2B9>‡çº§ç»“æžœå<C593>šä¸‹åˆ¤æ–?
|
||||
auto now = std::chrono::steady_clock::now();
|
||||
while (std::chrono::duration<double>(std::chrono::steady_clock::now() - now).count() < 70)
|
||||
{
|
||||
|
@ -2216,7 +2219,7 @@ int hg_scanner_239::set_dev_islock_file(int islockfile)
|
|||
}
|
||||
if (islockfile != 0 && islockfile != 1)
|
||||
{
|
||||
return SCANNER_ERR_INVALID_PARAMETER; //这个地方设置的参数必须保证正确
|
||||
return SCANNER_ERR_INVALID_PARAMETER; //这个地方设置的å<EFBFBD>‚æ•°å¿…é¡»ä¿<EFBFBD>è¯<EFBFBD>æ£ç¡?
|
||||
}
|
||||
string device_log_path = "/var/log/black_list_file.txt";
|
||||
string str = std::to_string(islockfile);
|
||||
|
|
Loading…
Reference in New Issue