更改SANE_Image_Status定义与固件一致

This commit is contained in:
gb 2023-10-07 16:43:24 +08:00
parent 6f5bde5cc4
commit 1b54667d92
7 changed files with 83 additions and 83 deletions

View File

@ -3040,13 +3040,13 @@ hg_imgproc::IMGPRCPARAM hg_scanner::get_image_process_object(int model)
}
SANE_Image_Statu hg_scanner::last_usb_image_statu(int err)
{
SANE_Image_Statu statu = SANE_Image_Statu_OK;
SANE_Image_Statu statu = IMG_STATUS_OK;
if (!is_continue_when_double_paper(double_paper_handle_) &&
is_save_img_when_double_paper(double_paper_handle_))
{
if (err == SCANNER_ERR_DEVICE_DOUBLE_FEEDING)
statu = SANE_Image_Statu_Double;
statu = IMG_STATUS_DOUBLE;
//else if (err == SCANNER_ERR_DEVICE_PAPER_JAMMED)
//statu = SANE_Image_Statu_Jammed;
}
@ -4030,7 +4030,7 @@ int hg_scanner::get_image_info(SANE_Parameters* ii, int len)
if (iiex)
{
iiex->src_id = -1;
iiex->flag.statu = SANE_Image_Statu_OK;
iiex->flag.statu = IMG_STATUS_OK;
iiex->flag.dpi = resolution_;
}

View File

@ -103,7 +103,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)
{
@ -322,7 +322,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())
{
@ -535,10 +535,10 @@ 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 = false; //不支持
firmware_sup_double_img = false; //ä¸<EFBFBD>支æŒ?
firmware_sup_devs_lock_ = year.compare("3C") >= 0 ? true : false;
firmware_sup_dpi_300 = false;
firmware_sup_dpi_600 = true;
@ -567,7 +567,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>˜å¤éƒ¨çš„å€?
if (!dev_conf)
dev_conf = &p;
@ -598,7 +598,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;
}
@ -904,7 +904,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;
}
@ -962,7 +962,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默认2
val = check - 1,//上é<EFBFBD>¢è®¾ç½®çš„是1 - 5 ,接å<C2A5>—范å´å€¼ä¸º0 - 4,默è®?
old = dev_conf_.params_3399.screw_detect_level;
setting_hardware::HGSCANCONF_3399 cf;
@ -1346,10 +1346,10 @@ void hg_scanner_239::thread_get_dves_image(void)
break;
}
}
////239 暂时先关闭双张存图弹窗提示,待到固件更新再确认是否需要弹窗
////239 æšæ—¶å…ˆå…³é—­å<EFBFBD>Œå¼ å­˜å¾å¼¹çª—æ<EFBFBD><EFBFBD>示,待到åºä»¶æ´æ°å†<EFBFBD>确认是å<EFBFBD>¦éœ€è¦<EFBFBD>å¼¹çª?
//while ((count = get_image_count()) > 0)
//{
// int s = SANE_Image_Statu_OK;
// int s = IMG_STATUS_OK;
// if (count <= 2)
// {
// if (image_prc_param_.bits.page == PAGE_SINGLE)
@ -1401,7 +1401,7 @@ void hg_scanner_239::thread_get_dves_image(void)
// fetch all buffered images and exit ...
//while(!is_dev_image_process_done())
if (img_conf_.resolution_dst > 200 && is_quality_ == IMG_QUALITY) //删除这段代码,你可能需要考虑一下后果
if (img_conf_.resolution_dst > 200 && is_quality_ == IMG_QUALITY) //删除这段代ç <EFBFBD>,你å<EFBFBD>¯èƒ½éœ€è¦<EFBFBD>考è™ä¸€ä¸å<EFBFBD>Žæž?
std::this_thread::sleep_for(std::chrono::milliseconds(5000));
else
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
@ -1512,7 +1512,7 @@ int hg_scanner_239::start(void)
reset();
//211220固件版本不支持返回
//211220åºä»¶ç‰ˆæœ¬ä¸<EFBFBD>支æŒ<EFBFBD>è¿”å?
ret = get_scan_is_sleep(val);
if (!val && ret == SCANNER_ERR_OK)
{
@ -1803,7 +1803,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;
@ -1975,7 +1975,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');
@ -2035,7 +2035,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位置
@ -2074,7 +2074,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)
{
@ -2141,7 +2141,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);

View File

@ -41,7 +41,7 @@ class hg_scanner_239 : public hg_scanner
int writedown_device_configuration(bool type = false, setting_hardware::HGSCANCONF_3399* dev_conf = NULL);//false 在start再把type置为true,其他做设置时不发
int writedown_image_configuration(void);
int pop_first_image(void);
int read_one_image_from_usb(SANE_Image_Statu statu = SANE_Image_Statu_OK);
int read_one_image_from_usb(SANE_Image_Statu statu = IMG_STATUS_OK);
bool is_dev_image_process_done(void);
bool is_dev_image_keep_last_paper(void);
@ -60,15 +60,15 @@ protected:
protected:
virtual int on_color_mode_changed(int& color_mode) override; //颜色切换
virtual int on_paper_changed(int& paper) override; //纸张大小设置
virtual int on_paper_check_changed(bool& check) override; //尺寸检测
virtual int on_resolution_changed(int& dpi) override; //分辨率设置
virtual int on_ultrasonic_check_changed(bool& check) override; //设置超声波检测
virtual int on_staple_check_changed(bool& check) override; //设置订书针检测
virtual int on_skew_check_changed(bool& check) override; //设置歪斜检测
virtual int on_skew_check_level_changed(int& check) override; //设置歪斜检测强度
virtual int on_paper_check_changed(bool& check) override; //尺寸检�
virtual int on_resolution_changed(int& dpi) override; //分辨率设�
virtual int on_ultrasonic_check_changed(bool& check) override; //设置超声波检�
virtual int on_staple_check_changed(bool& check) override; //设置订书针检�
virtual int on_skew_check_changed(bool& check) override; //设置歪斜检�
virtual int on_skew_check_level_changed(int& check) override; //设置歪斜检测强�
virtual int on_get_feedmode(int& feedmode) override; //获取分纸强度
virtual int on_set_feedmode(int feedmode) override; //设置分纸强度
virtual int on_pic_type(bool& pic)override; //照片模式或者文本模式
virtual int on_pic_type(bool& pic)override; //照片模å¼<EFBFBD>æˆè€…æ‡æœ¬æ¨¡å¼?
virtual int on_pick_paper(bool autostrength)override; //自动分纸强度
virtual int on_pick_paper_threshold(double threshold)override;
virtual int on_is_auto_paper(bool isautopaper)override; //待纸扫描
@ -96,44 +96,44 @@ public:
virtual std::string get_device_model(void);
virtual int set_device_model(string str);
virtual int set_serial_num(string str) override; //设置序列号
virtual int set_serial_num(string str) override; //设置åº<EFBFBD>列å<EFBFBD>?
virtual int set_vid_pid(int data) override; //设置vidpid
virtual int get_vid_pid(int& data)override; //获取vidpid
/////////////////成功返回:SCANNER_ERR_OK /////////////
/////////////////失败返回:IO错误码 or SCANNER_ERR_DEVICE_NOT_SUPPORT /////////////
/////////////////失败返回:IO错误�or SCANNER_ERR_DEVICE_NOT_SUPPORT /////////////
virtual int set_leaflet_scan(void) override; //单张扫描
virtual int set_clear_roller_num(void) override; //清除滚轴计数
virtual int set_clear_history_num(void) override; //清除历史张数
virtual int get_device_code(void); //获取设备编码 不支持
virtual int get_device_code(void); //获å<EFBFBD>设备ç¼ç <EFBFBD> ä¸<C3A4>支æŒ?
virtual int get_scanner_paperon(SANE_Bool& type) override; //获取设备有无纸张 /*/ type : 0无纸 1有纸 */
virtual int get_scan_is_sleep(SANE_Bool& type) override; //获取设备是否休眠当中 /*/ type : 0休眠 1唤醒状态*/
virtual int get_sleep_time(int& data) override; //获取功耗模式(休眠) /*/ data > 0*/
virtual int set_sleep_time(int data) override; //设置功耗模式(休眠) /*/ data > 0*/
virtual int get_scan_is_sleep(SANE_Bool& type) override; //获å<EFBFBD>设备是å<EFBFBD>¦ä¼çœ å½“中 /*/ type : 0ä¼çœ  1唤é†çŠ¶æ€?/
virtual int get_sleep_time(int& data) override; //获å<EFBFBD>功耗模å¼<EFBFBD>(ä¼çœ ï¼? /*/ data > 0*/
virtual int set_sleep_time(int data) override; //设置功耗模å¼<EFBFBD>(ä¼çœ ï¼? /*/ data > 0*/
virtual int get_history_scan_count(int& data) override; //获取历史扫描张数 /*/ data > 0*/
virtual int get_roller_num(int& data) override; //获取滚轮张数 /*/ data > 0*/
virtual int set_notify_sleep(void) override; //唤醒设备
virtual int get_device_log(string& log) override; //获取设备日志 /*/ log :储存路径*/
virtual int set_devreboot(int data) override; //设置设备重启
virtual int set_devshtudown() override; //设置设备关机
virtual int set_scan_islock(SANE_Bool type) override; //设置设备是否锁定 /*/ type:0解锁1锁定*/
virtual int get_scan_islock(SANE_Bool& type) override; //获取设备是否锁定 /*/ type:0解锁1锁定*/
virtual int set_scan_lock_check_val(string str) override; //获取设备是否锁定 /*/ str:校验码*/
virtual int set_firmware_upgrade(std::string str) override; //固件升级 /*/ str:文件名路径*/
virtual int set_scan_islock(SANE_Bool type) override; //设置设备是å<EFBFBD>¦é”<EFBFBD>定 /*/ type:0解é”<C3A9>ï¼?é”<C3A9>定*/
virtual int get_scan_islock(SANE_Bool& type) override; //获å<EFBFBD>设备是å<EFBFBD>¦é”<EFBFBD>定 /*/ type:0解é”<C3A9>ï¼?é”<C3A9>定*/
virtual int set_scan_lock_check_val(string str) override; //获å<EFBFBD>设备是å<EFBFBD>¦é”<EFBFBD>定 /*/ str:校验ç ?/
virtual int set_firmware_upgrade(std::string str) override; //åºä»¶å<EFBFBD>‡çº§ /*/ str:æ‡ä»¶å<C2B6><C3A5>è·¯å¾?/
virtual int set_clean_paper_road() override; //清理纸道
virtual int get_dev_islock_file(int& data) override; //获取设备文件 /*/ data:0 未上锁1 上锁。-1 未发现黑名单列表 -2列表没有信息*/
virtual int get_dev_islock_file(int& data) override; //获å<EFBFBD>设备æ‡ä»¶ /*/ data:0 未上é”<C3A9>,1 上é”<C3A9>ã€?1 未å<C2AA>现é»å<E28098><C3A5>å<EFBFBD>•åˆ—表 -2列表没有信æ<C2A1>¯*/
virtual int set_dev_islock_file(int data) override; //设置设备文件 /*/ data:0 未上锁1 上锁*/
virtual int get_scan_mode(bool& type); //获取是否是计数模式 /*/ type : fasle计数模式 true非计数 */
virtual int get_scan_mode(bool& type); //获å<EFBFBD>是å<EFBFBD>¦æ˜¯è®¡æ•°æ¨¡å¼? /*/ type : fasle计数模å¼<C3A5> trueé<65>žè®¡æ•?*/
virtual int set_speed_mode(int data) override; //设置速度模式 /*/ data:100,110,120
virtual int get_speed_mode(int& data)override; //获取速度模式 /*/ data:100,110,120
virtual int set_devs_distortion_check_val(float data) override; //设置畸变矫正值
virtual int get_devs_distortion_check_val(float &data) override; //获取畸变矫正值
virtual int set_devs_distortion_check_val(float data) override; //设置畸å<EFBFBD>˜çŸ«æ­£å€?
virtual int get_devs_distortion_check_val(float &data) override; //获å<EFBFBD>畸å<EFBFBD>˜çŸ«æ­£å€?
virtual int set_auto_flat(int data); //设置自动平场校正
// data:0(ALL) 1(200dpi、gray) 2(200dpi、color) 3(300dpi、gray) 4(300dpi、color) 5(600dpi、gray) 6(600dpi、color)

View File

@ -86,7 +86,7 @@ hg_scanner_300::hg_scanner_300(const char* dev_name,int pid, usb_io* io) :
, last_frame_total(0)
{
dsp_config.value = 0;
dsp_config.params_3288.enableLed = 1; //默认值
dsp_config.params_3288.enableLed = 1; //暺䁅恕<EFBFBD>?
dsp_config.params_3288.isCorrect = 1;
int ret = get_device_type(firmware_sup_device_7010);
@ -121,7 +121,7 @@ hg_scanner_300::hg_scanner_300(const char* dev_name,int pid, usb_io* io) :
#ifndef MAPPING_FUNCTION_IN_BASE
init_setting_map(setting_map_, ARRAY_SIZE(setting_map_));//优先初始化
init_setting_map(setting_map_, ARRAY_SIZE(setting_map_));//隡睃<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
#endif
if (init_settings(pid_))
{
@ -145,7 +145,7 @@ void hg_scanner_300::thread_handle_usb_read(void)
status = SCANNER_ERR_OK;
StopWatch sw;
sw.reset();
SANE_Image_Statu statu = SANE_Image_Statu_OK;
SANE_Image_Statu statu = IMG_STATUS_OK;
int img_num = 0;
savestatus_.clear();
while (run_)
@ -158,11 +158,11 @@ void hg_scanner_300::thread_handle_usb_read(void)
}
//printf("usb.u32_Data = %d ret = %d\r\n",usb.u32_Data,ret);
//如果设备出现卡纸 或者双张等设备信息问题需要等到设备进行发送stop才能停止。 所以始终以 "停止" 消息为结束信号
//如果有图的情况下,并且卡纸或双张等,设备会先发送卡纸双张信息。所以接受到错误信息之后,仍需要把图像取出来。
//<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>?
//<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)
{
status_ = !savestatus_.empty() ? savestatus_[0] : SCANNER_ERR_OK;//以第一个消息为准
status_ = !savestatus_.empty() ? savestatus_[0] : SCANNER_ERR_OK;//隞亦洵銝<EFBFBD>銝芣<EFBFBD><EFBFBD>臭蛹<EFBFBD>?
savestatus_.clear();
if (user_cancel_)
{
@ -189,7 +189,7 @@ void hg_scanner_300::thread_handle_usb_read(void)
ret != SCANNER_ERR_DEVICE_AUTO_FAIL_OVER &&
ret != SCANNER_ERR_DEVICE_AUTO_FAIL_INFO)
{
statu = SANE_Image_Statu_OK;
statu = IMG_STATUS_OK;
}
else if (ret == SCANNER_ERR_DEVICE_AUTO_FAIL_OVER)
{
@ -239,7 +239,7 @@ void hg_scanner_300::thread_handle_usb_read(void)
VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "%s\n", hg_scanner_err_description(status_));
break;
}
if (sw.elapsed_ms() > 30000 && img_conf_.resolution_dst != 600)//防止状态信息一直取不上来导致卡死
if (sw.elapsed_ms() > 30000 && img_conf_.resolution_dst != 600)//<EFBFBD>脫迫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝滢<EFBFBD><EFBFBD>亙紡<EFBFBD>游㨃甇?
{
if ((img_conf_.papertype == TwSS::MaxSize || img_conf_.papertype == TwSS::USStatement) && pid_ == 0x0300 && firmware_sup_dpi_600)
{
@ -247,7 +247,7 @@ void hg_scanner_300::thread_handle_usb_read(void)
}
else
{
if (!savestatus_.empty())//以第一个消息为准
if (!savestatus_.empty())//隞亦洵銝<EFBFBD>銝芣<EFBFBD><EFBFBD>臭蛹<EFBFBD>?
{
status_ = savestatus_[0];
}
@ -259,7 +259,7 @@ void hg_scanner_300::thread_handle_usb_read(void)
}
if (sw.elapsed_s() > 130)
{
if (!savestatus_.empty())//以第一个消息为准
if (!savestatus_.empty())//隞亦洵銝<EFBFBD>銝芣<EFBFBD><EFBFBD>臭蛹<EFBFBD>?
{
status_ = savestatus_[0];
}
@ -282,7 +282,7 @@ void hg_scanner_300::thread_handle_usb_read(void)
}
continue;
}
int totalNum = usb.u32_Count & 0x3fffffff; // 2022-08-04: 兼容Android默认图片大小均在1GB以内
int totalNum = usb.u32_Count & 0x3fffffff; // 2022-08-04: <EFBFBD>澆捆Android嚗屸<EFBFBD>霈文㦛<EFBFBD><EFBFBD>之撠誩<EFBFBD><EFBFBD>?GB隞亙<E99A9E>
VLOG_MINI_2(LOG_LEVEL_WARNING, "Get Scaner Image Size:%d bytes,Image Num[%d]\n", totalNum,img_num);
img_num++;
if (totalNum)
@ -393,7 +393,7 @@ int hg_scanner_300::start(void)
{
return ret;
}
if (is_devs_sleep_)//设备在睡眠的状态当中获取固件是失败的,所以在这个地方进行标志位设置。(总感觉不保险)
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>靽嗪埯嚗?
{
is_devs_sleep_ = false;
set_kernelsnap_ver();
@ -876,7 +876,7 @@ int hg_scanner_300::initdevice()
if (status_ != SCANNER_ERR_DEVICE_SLEEPING)
{
set_kernelsnap_ver();
is_devs_sleep_ = false; // 睡眠唤醒 客户提前点击设置这边固件版本号 还没有做判断的
is_devs_sleep_ = false; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><E691B0><EFBCB8>𣂼<EFBFBD><F0A382BC>孵稬霈曄蔭餈躰器<E8BAB0>箔辣<E7AE94><E8BEA3>𧋦<EFBFBD>?餈䀹瓷<E480B9><EFBFBD><E58CA7>斗鱏<E69697>?
}
return SCANNER_ERR_OK;
}
@ -908,7 +908,7 @@ void hg_scanner_300::writedown_image_configuration(void)
// ic.hardwarecaps.is_autopaper = dsp_config_.params_dsp.is_autopaper;
ic.hardwarecaps.capturepixtype = 0; //暂无参数 获取图像类型
ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //暂无参数 设置休眠时间 两个参数3399未使用
ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㺭 霈曄蔭隡𤑳<E99AA1><F0A491B3>園𡢿 銝支葵<E694AF><E891B5>㺭3399<39>芯蝙<E88AAF>?
image_configuration(ic);
}
void hg_scanner_300::printf_devconfig(setting_hardware::HGSCANCONF_3288 *d)
@ -965,7 +965,7 @@ int hg_scanner_300::get_correction_image(int inx , int dpi, int mode)
cv::Mat white_mat;
cv::Mat black_mat;;
for (size_t i = 0; i < 2; i++) //黑白一起保存下来
for (size_t i = 0; i < 2; i++) //暺𤑳蒾銝<EFBFBD>韏瑚<EFBFBD>摮䀝<EFBFBD><EFBFBD>?
{
vector<unsigned char> imagedata;
@ -1007,7 +1007,7 @@ int hg_scanner_300::get_correction_image(int inx , int dpi, int mode)
if (mat.empty())
{
VLOG_MINI_1(LOG_LEVEL_WARNING, "get_correction_image image is NULL:%d\n", image_info.info.params.status);
return SCANNER_ERR_NO_DATA; //只要有一张图没有 直接退了
return SCANNER_ERR_NO_DATA; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>撘惩㦛瘝⊥<EFBFBD> <20>湔𦻖<E6B994><F0A6BB96>鈭?
}
if (i)
@ -1039,7 +1039,7 @@ std::string hg_scanner_300::get_firmware_version()
{
char buf[20] = { 0 };
int ret = SCANNER_ERR_OK,
len = 10; //协议定义长度为10 100 200 =8
len = 10; //<EFBFBD>讛悅摰帋<EFBFBD><EFBFBD>踹漲銝?0 100 200 =8
USBCB cmd = { setting3288dsp::GET_FW_VERSION,len,0,};
{
@ -1264,7 +1264,7 @@ int hg_scanner_300::get_device_log(string &log)
str.resize(total);
str2.resize(total);
ret = io_->read_bulk(&str[index], &block);
//while (ret == SCANNER_ERR_TIMEOUT) ///设备代码是进行了第二次 write 条件是len > 0 如果出现问题这个地方需要打开
//while (ret == SCANNER_ERR_TIMEOUT) ///霈曉<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>銵䔶<EFBFBD>蝚砌<EFBFBD>甈?write <20>∩辣<E288A9>疹en > 0 憒<><E68692><EFBFBD>箇緵<E7AE87><EFBFBD>餈嗘葵<E59798>唳䲮<E594B3><E4B2AE><EFBFBD><E996AC><EFBFBD>
//{
// block = 1024 * 1024;
// if (total < block)

View File

@ -94,7 +94,7 @@ namespace settings302
{200.0f, 1},
{240.0f, 1},
{300.0f, 0},
{600.0f, 1} //涓存椂鐗堟湰鍙? 鍘熸潵鍙?
{600.0f, 1} //涓存æ¤é<EFBFBD>—å Ÿæ¹°é<EFBFBD>? é<>˜ç†¸æ½µé<C2B5>?
};
bool is_equal(float l, float r)
{
@ -453,7 +453,7 @@ int hg_scanner_302::writedown_device_configuration(bool type,setting_hardware::H
if (!type)
return ret;
setting_hardware::HGSCANCONF_3399 p = dev_conf_; //不得改变外部的值
setting_hardware::HGSCANCONF_3399 p = dev_conf_; //ä¸<EFBFBD>得改å<EFBFBD>˜å¤éƒ¨çš„å€?
if (!dev_conf)
dev_conf = &p;
@ -861,7 +861,7 @@ int hg_scanner_302::on_skew_check_level_changed(int& check)
return ret;
}
int hg_scanner_302::on_get_feedmode(int &feedmode)//鑾峰彇鍒嗙焊寮哄害
int hg_scanner_302::on_get_feedmode(int &feedmode)//é¾å³°å½‡é<EFBFBD>嗙焊寮哄å®?
{
int ret = SCANNER_ERR_OK,
val = 0;
@ -869,7 +869,7 @@ int hg_scanner_302::on_get_feedmode(int &feedmode)//鑾峰彇鍒嗙焊寮哄害
ret = read_register(setting3399::SR_GET_FEEDMODE,&feedmode);
return ret;
}
int hg_scanner_302::on_set_feedmode(int feedmode)//璁剧疆鍒嗙焊寮哄害
int hg_scanner_302::on_set_feedmode(int feedmode)//ç<EFBFBD>剧ç†é<EFBFBD>嗙焊寮哄å®?
{
int ret = SCANNER_ERR_OK,
val = 0;
@ -978,7 +978,7 @@ void hg_scanner_302::thread_handle_usb_read(void)
while ((count = get_image_count()) > 0)
{
int s = SANE_Image_Statu_OK;
int s = IMG_STATUS_OK;
if (count <= 2)
{
if (image_prc_param_.bits.page == PAGE_SINGLE)
@ -1280,7 +1280,7 @@ int hg_scanner_302::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é<31>žã‰å•é<E280B9>˜èˆµâ¬?
if (ret == SCANNER_ERR_OK)
{
type = val == 1 ? true : false;

View File

@ -217,7 +217,7 @@ namespace hg_imgproc
// construction
public:
imgproc(int pid, bool isx86_Advan) : pid_(pid),papersize_(pid_)
, img_statu_(SANE_Image_Statu_OK)
, img_statu_(IMG_STATUS_OK)
, my_path_(hg_log::pe_path())
,ocrinit_(NULL),ocrgetdirectimage_(NULL)
,ocrexit_(NULL),HGBase_CreatImg(NULL)
@ -334,7 +334,7 @@ namespace hg_imgproc
{
return SCANNER_ERR_OUT_OF_RANGE;
}
printf("HGBaselib_path?s HGImagePrclib_path:%s\r\n",HGBaselib_path.c_str(),HGImagePrclib_path.c_str());
printf("HGBaselib_path<EFBFBD>?s HGImagePrclib_path:%s\r\n",HGBaselib_path.c_str(),HGImagePrclib_path.c_str());
Dynamicopen_HGImageprc_pHandle_ = dlopen(HGImagePrclib_path.c_str(), RTLD_LAZY);
Dynamicopen_HGBase_pHandle_ = dlopen(HGBaselib_path.c_str(), RTLD_LAZY);
@ -369,7 +369,7 @@ namespace hg_imgproc
if (ret == -1)
return SCANNER_ERR_INSUFFICIENT_MEMORY;
load_dll(Baselibbuffer, &Dynamicopen_HGBase_pHandle_); //鍏堝姞杞藉悗閲婃斁
load_dll(Baselibbuffer, &Dynamicopen_HGBase_pHandle_); //<EFBFBD><EFBFBD>憪墧<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
load_dll(Prclibbuffer, &Dynamicopen_HGImageprc_pHandle_); //windows涓嬪彲鑳戒細鎵句笉鍒颁粬鎵€鍦ㄧ殑渚濊禆搴撳鑷寸洿鎺ユ墦寮€鍔ㄦ€佸簱鐨勬椂鍊欐壘涓嶅埌妯″潡
SAFE_DELETE(Prclibbuffer);
@ -500,7 +500,7 @@ namespace hg_imgproc
static int img_idx = 0;
cv::Mat ds(param_.height, param_.width, CV_8UC1, buf->data(), cv::Mat::AUTO_STEP);
//cv::imwrite("C:\\image\\imdecode"+std::to_string(img_idx++) + ".jpg", ds);
cv::Mat m_dst(ds(cv::Rect(0, 2, ds.cols, ds.rows - 2))); //删除前几行 一定按照实际测试来,因为最上面会有白边影响校正裁切等
cv::Mat m_dst(ds(cv::Rect(0, 2, ds.cols, ds.rows - 2))); //<EFBFBD>𣳇膄<EFBFBD><EFBFBD>銵?銝<>摰𡁏<E691B0><F0A1818F><EFBFBD><E689B9><EFBFBD><EFBFBD>霂閙䔉嚗<E49489><E59A97>銝箸<E98A9D>銝𢠃𢒰隡𡁏<E99AA1><F0A1818F>質器敶勗<E695B6><E58B97>⊥迤鋆<E8BFA4><E98B86>蝑?
cv::Mat d;
if (param_.channels == 3)
@ -549,7 +549,7 @@ namespace hg_imgproc
//}
//cv::imwrite("C:\\image\\imdecode" + std::to_string(img_idx++) + ".jpg", mat);
//if (param_.dpi < 299)/////7010不支持 200dpi 所以需要手动拉伸宽度
//if (param_.dpi < 299)/////7010銝齿𣈲<EFBFBD>?200dpi <20><>隞仿<E99A9E><EFBFBD><E996AC><EFBFBD><EFBFBD>隡詨捐摨?
//{
// float xy = param_.dpi / 300.0;
// cv::resize(mat, mat, cv::Size(), xy, 1);
@ -1437,13 +1437,13 @@ namespace hg_imgproc
/// <summary>
/// 8浣嶅浘杞?浣嶅浘
/// 8<EFBFBD><EFBFBD>瘚䀹<EFBFBD>?瘚<><E7989A>瘚?
/// </summary>
/// <param name="image">8bit?/param>
/// <param name="threshold">闃堝€硷紝寤鸿榛樿127</param>
/// <param name="reverse">true涓哄弽鑹诧紝鍗抽粦0鐧?锛涘弽涔嬩害鐒?/param>
/// <param name="align">true涓哄洓瀛楄妭瀵归綈</param>
/// <returns>1浣嶅浘</returns>
/// <param name="image">8bit<EFBFBD>?/param>
/// <param name="threshold"><EFBFBD><EFBFBD><EFBFBD><EFBFBD>祉◎蝝嘥砟曏遴<EFBFBD>璁𥟇阮<EFBFBD>?27</param>
/// <param name="reverse">true瘨枏<EFBFBD>撘賡鼂霂抒<EFBFBD><EFBFBD>埈𡂝蝎?<3F>?<3F>𥟇<EFBFBD>撘賣<E69298>戭拙拿<E68B99>?/param>
/// <param name="align">true瘨枏<EFBFBD>瘣梶<EFBFBD>𥟇<EFBFBD>憒剔<EFBFBD><EFBFBD>蝬?/param>
/// <returns>1<EFBFBD><EFBFBD>瘚?/returns>
///
static cv::Mat convert_8bit_2_1bit(const cv::Mat& image, uchar threshold, bool reverse, bool align)
{
@ -1661,7 +1661,7 @@ namespace hg_imgproc
if (imax < cv::abs(a[i][j]))
{
imax = cv::abs(a[i][j]);
max = a[i][j]; //得到各行中所在列最大元素
max = a[i][j]; //敺堒<EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝剜<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>憭批<EFBFBD>蝝?
m = i;
}
}
@ -1709,7 +1709,7 @@ namespace hg_imgproc
//设置一面的offset值
//霈曄蔭銝<EFBFBD><EFBFBD><EFBFBD>offset<EFBFBD>?
void setOffset(int* config, int step)
{
for (int i = 0; i < 6; i++)

View File

@ -415,10 +415,10 @@ extern "C"
const char* hg_scanner_image_statu_name(int img_statu)
{
RETURN_IF(img_statu, SANE_Image_Statu_OK);
RETURN_IF(img_statu, SANE_Image_Statu_Blank);
RETURN_IF(img_statu, SANE_Image_Statu_Double);
RETURN_IF(img_statu, SANE_Image_Statu_Jammed);
RETURN_IF(img_statu, IMG_STATUS_OK);
RETURN_IF(img_statu, IMG_STATUS_BLANK);
RETURN_IF(img_statu, IMG_STATUS_DOUBLE);
RETURN_IF(img_statu, IMG_STATUS_JAM);
// NOTE: multi-thread unsafe here
static char g_unk_statu[80] = { 0 };