微调编码格式

This commit is contained in:
yangjiaxuan 2023-12-06 14:54:48 +08:00
parent 21c0ddec8f
commit 24cd6b5c10
3 changed files with 59 additions and 59 deletions

View File

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

View File

@ -89,7 +89,7 @@ hg_scanner_300::hg_scanner_300(const char* dev_name,int pid, usb_io* io) :
{ {
VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "hg_scanner_300(%s) constructing ...\n", hg_log::format_ptr(this).c_str()); VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "hg_scanner_300(%s) constructing ...\n", hg_log::format_ptr(this).c_str());
dsp_config.value = 0; dsp_config.value = 0;
dsp_config.params_3288.enableLed = 1; //暺䁅恕<EFBFBD>? dsp_config.params_3288.enableLed = 1; //默认值
dsp_config.params_3288.isCorrect = 1; dsp_config.params_3288.isCorrect = 1;
int ret = initdevice(); int ret = initdevice();
@ -118,7 +118,7 @@ hg_scanner_300::hg_scanner_300(const char* dev_name,int pid, usb_io* io) :
firmware_sup_log_export_G300_ = year_date.compare("230430") >= 0 ? true : false; firmware_sup_log_export_G300_ = year_date.compare("230430") >= 0 ? true : false;
#ifndef MAPPING_FUNCTION_IN_BASE #ifndef MAPPING_FUNCTION_IN_BASE
init_setting_map(setting_map_, ARRAY_SIZE(setting_map_));//隡睃<EFBFBD><EFBFBD><EFBFBD><EFBFBD>? init_setting_map(setting_map_, ARRAY_SIZE(setting_map_));//优先初始化
#endif #endif
if (init_settings(pid_)) if (init_settings(pid_))
@ -159,11 +159,11 @@ void hg_scanner_300::thread_handle_usb_read(void)
} }
//printf("usb.u32_Data = %d ret = %d\r\n",usb.u32_Data,ret); //printf("usb.u32_Data = %d ret = %d\r\n",usb.u32_Data,ret);
//<EFBFBD><EFBFBD>霈曉<EFBFBD><EFBFBD>箇緵<EFBFBD>∠爾 <20>𤥁<EFBFBD><F0A4A581><EFBFBD>撘删<E69298>霈曉<E99C88>靽⊥<E99DBD><E28AA5><EFBFBD>嚗屸<E59A97><EFBFBD><E996AC><EFBFBD>啗挽憭<E68CBD><E686AD><EFBFBD><E98AB5><EFBFBD><EFBFBD>top<6F><EFBFBD><E6BBA9>𨀣迫<F0A880A3>?<3F><>隞亙<E99A9E><EFBFBD>誑 "<22>𨀣迫" 瘨<><E798A8>銝箇<E98A9D><E7AE87>煺縑<E785BA>? //如果设备出现卡纸 或者双张等设备信息问题需要等到设备进行发送stop才能停止。 所以始终以 "停止" 消息为结束信号
//<EFBFBD><EFBFBD><EFBFBD>匧㦛<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>僎銝𥪜㨃蝥豢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝑㚁<EFBFBD>霈曉<EFBFBD>隡𡁜<EFBFBD><EFBFBD><EFBFBD><EFBFBD>㨃蝥詨<EFBFBD>撘牐縑<EFBFBD><EFBFBD><EFBFBD><EFBFBD>隞交𦻖<EFBFBD><EFBFBD><EFBFBD>躰秤靽⊥<EFBFBD>銋见<EFBFBD>嚗䔶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>硋枂<EFBFBD><EFBFBD>? //如果有图的情况下,并且卡纸或双张等,设备会先发送卡纸双张信息。所以接受到错误信息之后,仍需要把图像取出来。
if (ret == SCANNER_ERR_DEVICE_STOPPED) if (ret == SCANNER_ERR_DEVICE_STOPPED)
{ {
status_ = !savestatus_.empty() ? savestatus_[0] : SCANNER_ERR_OK;//隞亦洵銝<EFBFBD>銝芣<EFBFBD><EFBFBD>臭蛹<EFBFBD>? status_ = !savestatus_.empty() ? savestatus_[0] : SCANNER_ERR_OK;//以第一个消息为准
savestatus_.clear(); savestatus_.clear();
if (user_cancel_) if (user_cancel_)
{ {
@ -240,7 +240,7 @@ void hg_scanner_300::thread_handle_usb_read(void)
VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "%s\n", hg_scanner_err_description(status_)); VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "%s\n", hg_scanner_err_description(status_));
break; break;
} }
if (sw.elapsed_ms() > 30000 && img_conf_.resolution_dst != 600)//<EFBFBD>脫迫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝滢<EFBFBD><EFBFBD>亙紡<EFBFBD>游㨃甇? if (sw.elapsed_ms() > 30000 && img_conf_.resolution_dst != 600)//防止状态信息一直取不上来导致卡死
{ {
if ((img_conf_.papertype == TwSS::MaxSize || img_conf_.papertype == TwSS::USStatement) && pid_ == 0x0300 && firmware_sup_dpi_600) if ((img_conf_.papertype == TwSS::MaxSize || img_conf_.papertype == TwSS::USStatement) && pid_ == 0x0300 && firmware_sup_dpi_600)
{ {
@ -248,30 +248,30 @@ void hg_scanner_300::thread_handle_usb_read(void)
} }
else else
{ {
if (!savestatus_.empty())//隞亦洵銝<EFBFBD>銝芣<EFBFBD><EFBFBD>臭蛹<EFBFBD>? if (!savestatus_.empty())//以第一个消息为准
{ {
status_ = savestatus_[0]; status_ = savestatus_[0];
} }
savestatus_.clear(); savestatus_.clear();
hg_log::log(LOG_LEVEL_WARNING, "Get Status TimeOut,get image out 30S\n"); hg_log::log(LOG_LEVEL_WARNING, "Get Status TimeOut,get image out 30S\n");
notify_ui_working_status(hg_log::lang_load(ID_STATU_DESC_SCANNER_ERR_DEVICE_GET_IMAGE_OUTTIME), SANE_EVENT_ERROR, status_); // <EFBFBD>蹱𡵆瘚㗛𢥫瘞思<EFBFBD><EFBFBD>鍦䴴璊? notify_ui_working_status(hg_log::lang_load(ID_STATU_DESC_SCANNER_ERR_DEVICE_GET_IMAGE_OUTTIME), SANE_EVENT_ERROR, status_); // 閸欐牕娴橀柅姘繆鐡掑懏妞?
break; break;
} }
} }
if (sw.elapsed_s() > 130) if (sw.elapsed_s() > 130)
{ {
if (!savestatus_.empty())//隞亦洵銝<EFBFBD>銝芣<EFBFBD><EFBFBD>臭蛹<EFBFBD>? if (!savestatus_.empty())//以第一个消息为准
{ {
status_ = savestatus_[0]; status_ = savestatus_[0];
} }
savestatus_.clear(); savestatus_.clear();
hg_log::log(LOG_LEVEL_WARNING, "MaxSize TimeOut,Get Image 130s\n"); hg_log::log(LOG_LEVEL_WARNING, "MaxSize TimeOut,Get Image 130s\n");
notify_ui_working_status(hg_log::lang_load(ID_STATU_DESC_SCANNER_ERR_DEVICE_GET_IMAGE_OUTTIME), SANE_EVENT_ERROR, status_); // <EFBFBD>蹱𡵆瘚㗛𢥫瘞思<EFBFBD><EFBFBD>鍦䴴璊? notify_ui_working_status(hg_log::lang_load(ID_STATU_DESC_SCANNER_ERR_DEVICE_GET_IMAGE_OUTTIME), SANE_EVENT_ERROR, status_); // 閸欐牕娴橀柅姘繆鐡掑懏妞?
break; break;
} }
if (ret == SCANNER_ERR_OK && usb.u32_Count > 0) if (ret == SCANNER_ERR_OK && usb.u32_Count > 0)
{ {
int totalNum = usb.u32_Count & 0x3fffffff; // 2022-08-04: <EFBFBD>澆捆Android嚗屸<EFBFBD>霈文㦛<EFBFBD><EFBFBD>之撠誩<EFBFBD><EFBFBD>?GB隞亙<E99A9E> int totalNum = usb.u32_Count & 0x3fffffff; // 2022-08-04: 兼容Android默认图片大小均在1GB以内
VLOG_MINI_2(LOG_LEVEL_WARNING, "Get Scaner Image Size:%d bytes,Image Num[%d]\n", totalNum,img_num); VLOG_MINI_2(LOG_LEVEL_WARNING, "Get Scaner Image Size:%d bytes,Image Num[%d]\n", totalNum,img_num);
img_num++; img_num++;
if (totalNum) if (totalNum)
@ -382,7 +382,7 @@ int hg_scanner_300::do_start(void)
{ {
return ret; return ret;
} }
if (is_devs_sleep_)//霈曉<EFBFBD><EFBFBD>函辺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝剛繮<EFBFBD>硋𤐄隞嗆糓憭梯揖<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>隞亙銁餈嗘葵<EFBFBD>唳䲮餈𥡝<EFBFBD><EFBFBD><EFBFBD><EFBFBD>雿滩挽蝵柴<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>閫劐<EFBFBD>靽嗪埯嚗? if (is_devs_sleep_)//设备在睡眠的状态当中获取固件是失败的,所以在这个地方进行标志位设置。(总感觉不保险)
{ {
is_devs_sleep_ = false; is_devs_sleep_ = false;
set_kernelsnap_ver(); set_kernelsnap_ver();
@ -807,7 +807,7 @@ int hg_scanner_300::initdevice()
if (status_ != SCANNER_ERR_DEVICE_SLEEPING) if (status_ != SCANNER_ERR_DEVICE_SLEEPING)
{ {
set_kernelsnap_ver(); set_kernelsnap_ver();
is_devs_sleep_ = false; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><E691B0><EFBCB8>𣂼<EFBFBD><F0A382BC>孵稬霈曄蔭餈躰器<E8BAB0>箔辣<E7AE94><E8BEA3>𧋦<EFBFBD>?餈䀹瓷<E480B9><EFBFBD><E58CA7>斗鱏<E69697>? is_devs_sleep_ = false; // 睡眠唤醒 客户提前点击设置这边固件版本号 还没有做判断的
} }
return status_; return status_;
} }
@ -839,7 +839,7 @@ void hg_scanner_300::writedown_image_configuration(void)
// ic.hardwarecaps.is_autopaper = dsp_config_.params_dsp.is_autopaper; // ic.hardwarecaps.is_autopaper = dsp_config_.params_dsp.is_autopaper;
ic.hardwarecaps.capturepixtype = 0; //暂无参数 获取图像类型 ic.hardwarecaps.capturepixtype = 0; //暂无参数 获取图像类型
ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㺭 霈曄蔭隡𤑳<E99AA1><F0A491B3>園𡢿 銝支葵<E694AF><E891B5>㺭3399<39>芯蝙<E88AAF>? ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //暂无参数 设置休眠时间 两个参数3399未使用
image_configuration(ic); image_configuration(ic);
} }
void hg_scanner_300::printf_devconfig(setting_hardware::HGSCANCONF_3288 *d) void hg_scanner_300::printf_devconfig(setting_hardware::HGSCANCONF_3288 *d)
@ -980,7 +980,7 @@ int hg_scanner_300::get_correction_image(int inx , int dpi, int mode)
cv::Mat white_mat; cv::Mat white_mat;
cv::Mat black_mat;; cv::Mat black_mat;;
for (size_t i = 0; i < 2; i++) //暺𤑳蒾銝<EFBFBD>韏瑚<EFBFBD>摮䀝<EFBFBD><EFBFBD>? for (size_t i = 0; i < 2; i++) //黑白一起保存下来
{ {
vector<unsigned char> imagedata; vector<unsigned char> imagedata;
@ -1022,7 +1022,7 @@ int hg_scanner_300::get_correction_image(int inx , int dpi, int mode)
if (mat.empty()) if (mat.empty())
{ {
VLOG_MINI_1(LOG_LEVEL_WARNING, "get_correction_image image is NULL:%d\n", image_info.info.params.status); VLOG_MINI_1(LOG_LEVEL_WARNING, "get_correction_image image is NULL:%d\n", image_info.info.params.status);
return SCANNER_ERR_NO_DATA; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>撘惩㦛瘝⊥<EFBFBD> <20>湔𦻖<E6B994><F0A6BB96>鈭? return SCANNER_ERR_NO_DATA; //只要有一张图没有 直接退了
} }
float f = 0.0; float f = 0.0;
@ -1055,7 +1055,7 @@ std::string hg_scanner_300::get_firmware_version()
{ {
char buf[20] = { 0 }; char buf[20] = { 0 };
int ret = SCANNER_ERR_OK, int ret = SCANNER_ERR_OK,
len = 10; //<EFBFBD>讛悅摰帋<EFBFBD><EFBFBD>踹漲銝?0 100 200 =8 len = 10; //协议定义长度为10 100 200 =8
USBCB cmd = { setting3288dsp::GET_FW_VERSION,len,0,}; USBCB cmd = { setting3288dsp::GET_FW_VERSION,len,0,};
{ {

View File

@ -84,7 +84,7 @@ hg_scanner_306::hg_scanner_306(const char* dev_name,int pid, usb_io* io) :
{ {
VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "hg_scanner_306(%s) constructing ...\n", hg_log::format_ptr(this).c_str()); VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "hg_scanner_306(%s) constructing ...\n", hg_log::format_ptr(this).c_str());
dsp_config.value = 0; dsp_config.value = 0;
dsp_config.params_7010.enableLed = 1; //暺䁅恕<EFBFBD>? dsp_config.params_7010.enableLed = 1; //默认值
dsp_config.params_7010.isCorrect = 1; dsp_config.params_7010.isCorrect = 1;
int ret = get_device_type(firmware_sup_device_7010); int ret = get_device_type(firmware_sup_device_7010);
@ -101,7 +101,7 @@ hg_scanner_306::hg_scanner_306(const char* dev_name,int pid, usb_io* io) :
} }
#ifndef MAPPING_FUNCTION_IN_BASE #ifndef MAPPING_FUNCTION_IN_BASE
init_setting_map(setting_map_, ARRAY_SIZE(setting_map_));//隡睃<EFBFBD><EFBFBD><EFBFBD><EFBFBD>? init_setting_map(setting_map_, ARRAY_SIZE(setting_map_));//优先初始化
#endif #endif
if (init_settings(pid_)) if (init_settings(pid_))
init_settings((jsontext1 + jsontext2 + jsontext3).c_str()); init_settings((jsontext1 + jsontext2 + jsontext3).c_str());
@ -136,11 +136,11 @@ void hg_scanner_306::thread_handle_usb_read(void)
} }
//printf("usb.u32_Data = %d ret = %d\r\n",usb.u32_Data,ret); //printf("usb.u32_Data = %d ret = %d\r\n",usb.u32_Data,ret);
//<EFBFBD><EFBFBD>霈曉<EFBFBD><EFBFBD>箇緵<EFBFBD>∠爾 <20>𤥁<EFBFBD><F0A4A581><EFBFBD>撘删<E69298>霈曉<E99C88>靽⊥<E99DBD><E28AA5><EFBFBD>嚗屸<E59A97><EFBFBD><E996AC><EFBFBD>啗挽憭<E68CBD><E686AD><EFBFBD><E98AB5><EFBFBD><EFBFBD>top<6F><EFBFBD><E6BBA9>𨀣迫<F0A880A3>?<3F><>隞亙<E99A9E><EFBFBD>誑 "<22>𨀣迫" 瘨<><E798A8>銝箇<E98A9D><E7AE87>煺縑<E785BA>? //如果设备出现卡纸 或者双张等设备信息问题需要等到设备进行发送stop才能停止。 所以始终以 "停止" 消息为结束信号
//<EFBFBD><EFBFBD><EFBFBD>匧㦛<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>僎銝𥪜㨃蝥豢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝑㚁<EFBFBD>霈曉<EFBFBD>隡𡁜<EFBFBD><EFBFBD><EFBFBD><EFBFBD>㨃蝥詨<EFBFBD>撘牐縑<EFBFBD><EFBFBD><EFBFBD><EFBFBD>隞交𦻖<EFBFBD><EFBFBD><EFBFBD>躰秤靽⊥<EFBFBD>銋见<EFBFBD>嚗䔶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>硋枂<EFBFBD><EFBFBD>? //如果有图的情况下,并且卡纸或双张等,设备会先发送卡纸双张信息。所以接受到错误信息之后,仍需要把图像取出来。
if (ret == SCANNER_ERR_DEVICE_STOPPED) if (ret == SCANNER_ERR_DEVICE_STOPPED)
{ {
status_ = !savestatus_.empty() ? savestatus_[0] : SCANNER_ERR_OK;//隞亦洵銝<EFBFBD>銝芣<EFBFBD><EFBFBD>臭蛹<EFBFBD>? status_ = !savestatus_.empty() ? savestatus_[0] : SCANNER_ERR_OK;//以第一个消息为准
savestatus_.clear(); savestatus_.clear();
if (user_cancel_) if (user_cancel_)
{ {
@ -217,7 +217,7 @@ void hg_scanner_306::thread_handle_usb_read(void)
VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "%s\n", hg_scanner_err_description(status_)); VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "%s\n", hg_scanner_err_description(status_));
break; break;
} }
if (sw.elapsed_ms() > 30000 && img_conf_.resolution_dst != 600)//<EFBFBD>脫迫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝滢<EFBFBD><EFBFBD>亙紡<EFBFBD>游㨃甇? if (sw.elapsed_ms() > 30000 && img_conf_.resolution_dst != 600)//防止状态信息一直取不上来导致卡死
{ {
if ((img_conf_.papertype == TwSS::MaxSize || img_conf_.papertype == TwSS::USStatement) && pid_ == 0x0300 && firmware_sup_dpi_600) if ((img_conf_.papertype == TwSS::MaxSize || img_conf_.papertype == TwSS::USStatement) && pid_ == 0x0300 && firmware_sup_dpi_600)
{ {
@ -225,25 +225,25 @@ void hg_scanner_306::thread_handle_usb_read(void)
} }
else else
{ {
if (!savestatus_.empty())//隞亦洵銝<EFBFBD>銝芣<EFBFBD><EFBFBD>臭蛹<EFBFBD>? if (!savestatus_.empty())//以第一个消息为准
{ {
status_ = savestatus_[0]; status_ = savestatus_[0];
} }
savestatus_.clear(); savestatus_.clear();
hg_log::log(LOG_LEVEL_WARNING, "Get Status TimeOut,get image out 30S\n"); hg_log::log(LOG_LEVEL_WARNING, "Get Status TimeOut,get image out 30S\n");
notify_ui_working_status(hg_log::lang_load(ID_STATU_DESC_SCANNER_ERR_DEVICE_GET_IMAGE_OUTTIME), SANE_EVENT_ERROR, status_); // <EFBFBD>蹱𡵆瘚㗛𢥫瘞思<EFBFBD><EFBFBD>鍦䴴璊? notify_ui_working_status(hg_log::lang_load(ID_STATU_DESC_SCANNER_ERR_DEVICE_GET_IMAGE_OUTTIME), SANE_EVENT_ERROR, status_); // 鍙栧浘閫氫俊瓒呮椂
break; break;
} }
} }
if (sw.elapsed_s() > 130) if (sw.elapsed_s() > 130)
{ {
if (!savestatus_.empty())//隞亦洵銝<EFBFBD>銝芣<EFBFBD><EFBFBD>臭蛹<EFBFBD>? if (!savestatus_.empty())//以第一个消息为准
{ {
status_ = savestatus_[0]; status_ = savestatus_[0];
} }
savestatus_.clear(); savestatus_.clear();
hg_log::log(LOG_LEVEL_WARNING, "MaxSize TimeOut,Get Image 130s\n"); hg_log::log(LOG_LEVEL_WARNING, "MaxSize TimeOut,Get Image 130s\n");
notify_ui_working_status(hg_log::lang_load(ID_STATU_DESC_SCANNER_ERR_DEVICE_GET_IMAGE_OUTTIME), SANE_EVENT_ERROR, status_); // <EFBFBD>蹱𡵆瘚㗛𢥫瘞思<EFBFBD><EFBFBD>鍦䴴璊? notify_ui_working_status(hg_log::lang_load(ID_STATU_DESC_SCANNER_ERR_DEVICE_GET_IMAGE_OUTTIME), SANE_EVENT_ERROR, status_); // 閸欐牕娴橀柅姘繆鐡掑懏妞?
break; break;
} }
if (ret == SCANNER_ERR_OK && usb.u32_Count > 0) if (ret == SCANNER_ERR_OK && usb.u32_Count > 0)
@ -338,7 +338,7 @@ int hg_scanner_306::do_start(void)
{ {
return ret; return ret;
} }
if (is_devs_sleep_)//霈曉<EFBFBD><EFBFBD>函辺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝剛繮<EFBFBD>硋𤐄隞嗆糓憭梯揖<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>隞亙銁餈嗘葵<EFBFBD>唳䲮餈𥡝<EFBFBD><EFBFBD><EFBFBD><EFBFBD>雿滩挽蝵柴<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>閫劐<EFBFBD>靽嗪埯嚗? if (is_devs_sleep_)//设备在睡眠的状态当中获取固件是失败的,所以在这个地方进行标志位设置。(总感觉不保险)
{ {
is_devs_sleep_ = false; is_devs_sleep_ = false;
set_kernelsnap_ver(); set_kernelsnap_ver();
@ -763,7 +763,7 @@ int hg_scanner_306::initdevice()
if (status_ != SCANNER_ERR_DEVICE_SLEEPING) if (status_ != SCANNER_ERR_DEVICE_SLEEPING)
{ {
set_kernelsnap_ver(); set_kernelsnap_ver();
is_devs_sleep_ = false; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><E691B0><EFBCB8>𣂼<EFBFBD><F0A382BC>孵稬霈曄蔭餈躰器<E8BAB0>箔辣<E7AE94><E8BEA3>𧋦<EFBFBD>?餈䀹瓷<E480B9><EFBFBD><E58CA7>斗鱏<E69697>? is_devs_sleep_ = false; // 睡眠唤醒 客户提前点击设置这边固件版本号 还没有做判断的
} }
return SCANNER_ERR_OK; return SCANNER_ERR_OK;
} }
@ -795,7 +795,7 @@ void hg_scanner_306::writedown_image_configuration(void)
// ic.hardwarecaps.is_autopaper = dsp_config_.params_dsp.is_autopaper; // ic.hardwarecaps.is_autopaper = dsp_config_.params_dsp.is_autopaper;
ic.hardwarecaps.capturepixtype = 0; //暂无参数 获取图像类型 ic.hardwarecaps.capturepixtype = 0; //暂无参数 获取图像类型
ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㺭 霈曄蔭隡𤑳<E99AA1><F0A491B3>園𡢿 銝支葵<E694AF><E891B5>㺭3399<39>芯蝙<E88AAF>? ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //暂无参数 设置休眠时间 两个参数3399未使用
image_configuration(ic); image_configuration(ic);
} }
void hg_scanner_306::printf_devconfig(setting_hardware::HGSCANCONF_7010 *d) void hg_scanner_306::printf_devconfig(setting_hardware::HGSCANCONF_7010 *d)
@ -875,7 +875,7 @@ int hg_scanner_306::get_correction_image(int inx , int dpi, int mode)
cv::Mat white_mat; cv::Mat white_mat;
cv::Mat black_mat;; cv::Mat black_mat;;
for (size_t i = 0; i < 2; i++) //暺𤑳蒾銝<EFBFBD>韏瑚<EFBFBD>摮䀝<EFBFBD><EFBFBD>? for (size_t i = 0; i < 2; i++) //黑白一起保存下来
{ {
vector<unsigned char> imagedata; vector<unsigned char> imagedata;
@ -913,7 +913,7 @@ int hg_scanner_306::get_correction_image(int inx , int dpi, int mode)
if (mat.empty()) if (mat.empty())
{ {
VLOG_MINI_1(LOG_LEVEL_WARNING, "get_correction_image image is NULL:%d\n", image_info.info.params.status); VLOG_MINI_1(LOG_LEVEL_WARNING, "get_correction_image image is NULL:%d\n", image_info.info.params.status);
return SCANNER_ERR_NO_DATA; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>撘惩㦛瘝⊥<EFBFBD> <20>湔𦻖<E6B994><F0A6BB96>鈭? return SCANNER_ERR_NO_DATA; //只要有一张图没有 直接退了
} }
float f = 0.0; float f = 0.0;
@ -939,7 +939,7 @@ std::string hg_scanner_306::get_firmware_version()
{ {
char buf[20] = { 0 }; char buf[20] = { 0 };
int ret = SCANNER_ERR_OK, int ret = SCANNER_ERR_OK,
len = 10; //<EFBFBD>讛悅摰帋<EFBFBD><EFBFBD>踹漲銝?0 100 200 =8 len = 10; //协议定义长度为10 100 200 =8
USBCB cmd = { setting3288dsp::GET_FW_VERSION,len,0,}; USBCB cmd = { setting3288dsp::GET_FW_VERSION,len,0,};
{ {
@ -1226,13 +1226,13 @@ int hg_scanner_306::set_scan_lock_check_val(string str)
} }
//#enum scanner_err //#enum scanner_err
//#{ //#{
//# SCANNER_ERR_OK = 0, //霈曉<EFBFBD><EFBFBD><EFBFBD><EFBFBD>? //# SCANNER_ERR_OK = 0, //设备正常状态
//# SCANNER_ERR_SLEEP, 1 //设备处于休眠当中 //# SCANNER_ERR_SLEEP, 1 //设备处于休眠当中
//# SCANNER_ERR_UPDATE_OK, 2 //霈曉<EFBFBD><EFBFBD>湔鰵嚗𡁏<EFBFBD><EFBFBD>? //# SCANNER_ERR_UPDATE_OK, 2 //设备更新:成功
//# SCANNER_ERR_UPDATE_UPDATAING, 3 //设备更新:进行中 //# SCANNER_ERR_UPDATE_UPDATAING, 3 //设备更新:进行中
//# SCANNER_ERR_UPDATE_CHECK_VAL_ERROR, 4 //霈曉<EFBFBD><EFBFBD>湔鰵嚗𡁏嵗撉峕<EFBFBD>瘚钅<EFBFBD>霂? //# SCANNER_ERR_UPDATE_CHECK_VAL_ERROR, 4 //设备更新:校验检测错误
//# SCANNER_ERR_UPDATE_CHECK_FILE_LOST, 5 //霈曉<EFBFBD><EFBFBD>湔鰵嚗𡁏<EFBFBD>隞嗡腺憭? //# SCANNER_ERR_UPDATE_CHECK_FILE_LOST, 5 //设备更新:文件丢失
//# SCANNER_ERR_UPDATE_UNZIP_FAIL, 6 //霈曉<EFBFBD><EFBFBD>湔鰵嚗朞圾<EFBFBD>见仃韐? //# SCANNER_ERR_UPDATE_UNZIP_FAIL, 6 //设备更新:解压失败
//#}; //#};
int hg_scanner_306::set_firmware_upgrade(std::string str) int hg_scanner_306::set_firmware_upgrade(std::string str)
{ {