新增锁定功能
This commit is contained in:
parent
e6f800af7c
commit
b4292a6d93
|
@ -875,6 +875,13 @@ namespace setting3399
|
||||||
SR_SET_AUTOMATICCONTROLFEEDMODE_THRESHOLD,
|
SR_SET_AUTOMATICCONTROLFEEDMODE_THRESHOLD,
|
||||||
SR_GET_TRAYPOSITION,
|
SR_GET_TRAYPOSITION,
|
||||||
SR_SET_TRAYPOSITION,
|
SR_SET_TRAYPOSITION,
|
||||||
|
|
||||||
|
SR_GET_LOCK_STATES,
|
||||||
|
SR_SET_LOCK_STATES,
|
||||||
|
SR_GET_TOKEN,
|
||||||
|
SR_SET_TOKEN,
|
||||||
|
SR_GET_TOKEN_LENGHT,
|
||||||
|
SR_DECODE_TOKEN,
|
||||||
SR_GET_CUO_ERROR = 0x50,
|
SR_GET_CUO_ERROR = 0x50,
|
||||||
SR_GET_DOU_ERROR,
|
SR_GET_DOU_ERROR,
|
||||||
SR_GET_JAM_ERROR,
|
SR_GET_JAM_ERROR,
|
||||||
|
|
|
@ -856,11 +856,14 @@ void hg_scanner::working_done(void*)
|
||||||
notify_ui_working_status(STATU_DESC_SCANNER_ERR_DEVICE_PC_BUSY, SANE_EVENT_SCAN_FINISHED, status_);
|
notify_ui_working_status(STATU_DESC_SCANNER_ERR_DEVICE_PC_BUSY, SANE_EVENT_SCAN_FINISHED, status_);
|
||||||
break;
|
break;
|
||||||
case SCANNER_ERR_INSUFFICIENT_MEMORY:
|
case SCANNER_ERR_INSUFFICIENT_MEMORY:
|
||||||
notify_ui_working_status(STATU_DESC_SCANNER_ERR_INSUFFICIENT_MEMORY, SANE_EVENT_SCAN_FINISHED, status_);
|
notify_ui_working_status(STATU_DESC_SCANNER_ERR_INSUFFICIENT_MEMORY, SANE_EVENT_SCAN_FINISHED, status_);
|
||||||
break;
|
break;
|
||||||
case SCANNER_ERR_TIMEOUT:
|
case SCANNER_ERR_TIMEOUT:
|
||||||
notify_ui_working_status(STATU_DESC_SCANNER_ERR_TIMEOUT, SANE_EVENT_SCAN_FINISHED, status_);
|
notify_ui_working_status(STATU_DESC_SCANNER_ERR_TIMEOUT, SANE_EVENT_SCAN_FINISHED, status_);
|
||||||
break;
|
break;
|
||||||
|
case SCANNER_ERR_DEVICE_ISLOCK:
|
||||||
|
notify_ui_working_status(STATU_DESC_SCANNER_ERR_DEVICE_ISLOCK, SANE_EVENT_SCAN_FINISHED, status_);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
notify_ui_working_status(user_cancel_ ? STATU_DESC_SCAN_CANCELED : STATU_DESC_SCAN_STOPPED, SANE_EVENT_SCAN_FINISHED, status_);
|
notify_ui_working_status(user_cancel_ ? STATU_DESC_SCAN_CANCELED : STATU_DESC_SCAN_STOPPED, SANE_EVENT_SCAN_FINISHED, status_);
|
||||||
break;
|
break;
|
||||||
|
@ -3418,6 +3421,22 @@ int hg_scanner::device_io_control(unsigned long code, void* data, unsigned* len)
|
||||||
strcpy((char*)data, str.c_str());
|
strcpy((char*)data, str.c_str());
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
else if(code == IO_CTRL_CODE_SET_SCAN_LOCK_CHECK_VAL)
|
||||||
|
{
|
||||||
|
string str = (char*)data;
|
||||||
|
set_scan_lock_check_val(str);
|
||||||
|
}
|
||||||
|
else if (code == IO_CTRL_CODE_SET_SCAN_LOCK)
|
||||||
|
{
|
||||||
|
SANE_Bool set_islock = *((SANE_Bool *)data);
|
||||||
|
set_scan_islock(set_islock);
|
||||||
|
}
|
||||||
|
else if (code == IO_CTRL_CODE_GET_SCAN_ISLOCK)
|
||||||
|
{
|
||||||
|
SANE_Bool islock = *((SANE_Bool*)data);
|
||||||
|
get_scan_islock(&islock);
|
||||||
|
*((SANE_Bool*)data) = islock;
|
||||||
|
}
|
||||||
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
||||||
}
|
}
|
||||||
std::string hg_scanner::get_firmware_version(void)
|
std::string hg_scanner::get_firmware_version(void)
|
||||||
|
@ -3456,7 +3475,18 @@ int hg_scanner::get_history_count(void)
|
||||||
{
|
{
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
int hg_scanner::set_scan_islock(SANE_Bool set_islock)
|
||||||
|
{
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
int hg_scanner::get_scan_islock(SANE_Bool* islock)
|
||||||
|
{
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
int hg_scanner::set_scan_lock_check_val(string check_str)
|
||||||
|
{
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
int hg_scanner::set_leaflet_scan(void)
|
int hg_scanner::set_leaflet_scan(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include "PaperSize.h"
|
#include "PaperSize.h"
|
||||||
|
|
||||||
#if defined(WIN32) || defined(_WIN64)
|
#if defined(WIN32) || defined(_WIN64)
|
||||||
|
#include <openssl/md5.h> //暂时linux 屏蔽
|
||||||
#else
|
#else
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -99,10 +100,8 @@ protected:
|
||||||
int setting_restore(int sn, void* data);
|
int setting_restore(int sn, void* data);
|
||||||
int setting_help(int sn, void* data);
|
int setting_help(int sn, void* data);
|
||||||
int setting_color_mode(int sn, void* data);
|
int setting_color_mode(int sn, void* data);
|
||||||
|
|
||||||
int setting_multi_out(int sn, void*data);
|
int setting_multi_out(int sn, void*data);
|
||||||
int setting_multi_out_type(int sn, void*data);
|
int setting_multi_out_type(int sn, void*data);
|
||||||
|
|
||||||
int setting_rid_color(int sn, void* data);
|
int setting_rid_color(int sn, void* data);
|
||||||
int setting_rid_multi_red(int sn, void* data);
|
int setting_rid_multi_red(int sn, void* data);
|
||||||
int setting_rid_answer_red(int sn, void* data);
|
int setting_rid_answer_red(int sn, void* data);
|
||||||
|
@ -163,12 +162,10 @@ protected:
|
||||||
int setting_set_auto_pick_paper(int sn, void* data);
|
int setting_set_auto_pick_paper(int sn, void* data);
|
||||||
int setting_set_auto_pick_paper_threshold(int sn, void* data);
|
int setting_set_auto_pick_paper_threshold(int sn, void* data);
|
||||||
int setting_set_auto_paper_scan(int sn, void* data);
|
int setting_set_auto_paper_scan(int sn, void* data);
|
||||||
|
|
||||||
int setting_set_isremove_left_hole(int sn, void* data);
|
int setting_set_isremove_left_hole(int sn, void* data);
|
||||||
int setting_set_isremove_right_hole(int sn, void* data);
|
int setting_set_isremove_right_hole(int sn, void* data);
|
||||||
int setting_set_isremove_top_hole(int sn, void* data);
|
int setting_set_isremove_top_hole(int sn, void* data);
|
||||||
int setting_set_isremove_low_hole(int sn, void* data);
|
int setting_set_isremove_low_hole(int sn, void* data);
|
||||||
|
|
||||||
int setting_set_isremove_left_hole_threshold(int sn, void* data);
|
int setting_set_isremove_left_hole_threshold(int sn, void* data);
|
||||||
int setting_set_isremove_right_hole_threshold(int sn, void* data);
|
int setting_set_isremove_right_hole_threshold(int sn, void* data);
|
||||||
int setting_set_isremove_top_hole_threshold(int sn, void* data);
|
int setting_set_isremove_top_hole_threshold(int sn, void* data);
|
||||||
|
@ -350,27 +347,19 @@ public:
|
||||||
static int save_2_tempory_file(std::shared_ptr<std::vector<char>> data, std::string* path_file, unsigned int index = 0);
|
static int save_2_tempory_file(std::shared_ptr<std::vector<char>> data, std::string* path_file, unsigned int index = 0);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
///////////////////////////////新增 20220425//////////////////////////
|
|
||||||
virtual int set_leaflet_scan(void);//单张扫描
|
virtual int set_leaflet_scan(void);//单张扫描
|
||||||
virtual int get_abuot_info(void);//获取软件关于信息 (基类实现)
|
virtual int get_abuot_info(void);//获取软件关于信息 (基类实现)
|
||||||
virtual int restore_default_setting(void);//恢复默认设置 (基类实现)
|
virtual int restore_default_setting(void);//恢复默认设置 (基类实现)
|
||||||
virtual int set_final_image_format(SANE_FinalImgFormat* fmt); // 设置图像处理最终输出(final())的图像数据格式 (基类实现) ***
|
virtual int set_final_image_format(SANE_FinalImgFormat* fmt); // 设置图像处理最终输出(final())的图像数据格式 (基类实现) ***
|
||||||
virtual int get_compression_format(void);//获取支持的压缩格式 功能不支持
|
virtual int get_compression_format(void);//获取支持的压缩格式 功能不支持
|
||||||
|
|
||||||
|
|
||||||
virtual int clear_roller_num(void); // 清除滚轴计数
|
virtual int clear_roller_num(void); // 清除滚轴计数
|
||||||
|
|
||||||
|
|
||||||
virtual int set_compression_format(void);//设置图像数据最终输出的压缩格式
|
virtual int set_compression_format(void);//设置图像数据最终输出的压缩格式
|
||||||
virtual int set_auto_color_type(void);// 设置自动匹配颜色模式 (基类实现) ***
|
virtual int set_auto_color_type(void);// 设置自动匹配颜色模式 (基类实现) ***
|
||||||
|
|
||||||
virtual std::string get_firmware_version(void);
|
virtual std::string get_firmware_version(void);
|
||||||
virtual std::string get_serial_num(void);
|
virtual std::string get_serial_num(void);
|
||||||
virtual std::string get_ip(void);
|
virtual std::string get_ip(void);
|
||||||
|
|
||||||
virtual int get_device_code(void);//获取设备编码
|
virtual int get_device_code(void);//获取设备编码
|
||||||
|
|
||||||
|
|
||||||
virtual int get_dogear_distance(void);//获取折角检测最小距离阈值
|
virtual int get_dogear_distance(void);//获取折角检测最小距离阈值
|
||||||
virtual int set_dogear_distance(void);// 设置折角检测最小距离阈值
|
virtual int set_dogear_distance(void);// 设置折角检测最小距离阈值
|
||||||
virtual int get_scanner_paperon(SANE_Bool* paperon = NULL);//获取设备有无纸张
|
virtual int get_scanner_paperon(SANE_Bool* paperon = NULL);//获取设备有无纸张
|
||||||
|
@ -378,19 +367,18 @@ public:
|
||||||
virtual int get_scan_when_paper_on(void);//设置是否为检测到进纸盘上有纸即开始扫描
|
virtual int get_scan_when_paper_on(void);//设置是否为检测到进纸盘上有纸即开始扫描
|
||||||
virtual int get_scan_with_hole(void);// 获取是否为带孔扫描
|
virtual int get_scan_with_hole(void);// 获取是否为带孔扫描
|
||||||
virtual int set_scan_with_hole(void);// 设置是否为带孔扫描
|
virtual int set_scan_with_hole(void);// 设置是否为带孔扫描
|
||||||
|
|
||||||
virtual int get_scan_is_sleep(void);//获取设备是否休眠当中
|
virtual int get_scan_is_sleep(void);//获取设备是否休眠当中
|
||||||
|
|
||||||
virtual int get_sleep_time(int& getsleepime);//获取功耗模式(休眠)
|
virtual int get_sleep_time(int& getsleepime);//获取功耗模式(休眠)
|
||||||
virtual int set_sleep_time(int sleeptime);//设置功耗模式(休眠)
|
virtual int set_sleep_time(int sleeptime);//设置功耗模式(休眠)
|
||||||
virtual int get_history_count(void);//获取历史扫描张数 -2:设备不支持该功能;-1:与设备通信失败;其它大于等于0的为正常
|
virtual int get_history_count(void);//获取历史扫描张数 -2:设备不支持该功能;-1:与设备通信失败;其它大于等于0的为正常
|
||||||
virtual int get_roller_num(void); //获取滚轮张数 -2:设备不支持该功能;-1:与设备通信失败;其它大于等于0的为正常
|
virtual int get_roller_num(void); //获取滚轮张数 -2:设备不支持该功能;-1:与设备通信失败;其它大于等于0的为正常
|
||||||
|
|
||||||
virtual int notify_sleep(void);//唤醒设备
|
virtual int notify_sleep(void);//唤醒设备
|
||||||
virtual int get_device_log(string &log);//获取设备日志
|
virtual int get_device_log(string &log);//获取设备日志
|
||||||
virtual int set_devreboot();//设置设备重启
|
virtual int set_devreboot();//设置设备重启
|
||||||
virtual int set_devshtudown();//设置设备关机
|
virtual int set_devshtudown();//设置设备关机
|
||||||
|
virtual int set_scan_islock(SANE_Bool set_islock);
|
||||||
|
virtual int get_scan_islock(SANE_Bool* islock);//获取设备是否锁定 -2:设备不支持该功能;它大于等于0的为正常
|
||||||
|
virtual int set_scan_lock_check_val(string check_str);//获取设备是否锁定 -2:设备不支持该功能;它大于等于0的为正常
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef UOS
|
#ifdef UOS
|
||||||
|
|
|
@ -479,8 +479,6 @@ void hg_scanner_239::init_version(void)
|
||||||
sn(get_serial_num());
|
sn(get_serial_num());
|
||||||
|
|
||||||
VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "Firmware version: %s\n", fv.c_str());
|
VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "Firmware version: %s\n", fv.c_str());
|
||||||
//VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, " HG3399 serial number: %s\n", sn.c_str());
|
|
||||||
//VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, " HG3399 IP: %s\n", get_ip().c_str());
|
|
||||||
|
|
||||||
if (fv.length() >= 10 && (fv[5] > 'A' || atoi(fv.substr(6, 4).c_str()) >= 1209))
|
if (fv.length() >= 10 && (fv[5] > 'A' || atoi(fv.substr(6, 4).c_str()) >= 1209))
|
||||||
{
|
{
|
||||||
|
@ -588,16 +586,6 @@ int hg_scanner_239::get_device_paperon_stautus(void)
|
||||||
int ret =read_register(setting3399::SR_GET_PAPERON,0);
|
int ret =read_register(setting3399::SR_GET_PAPERON,0);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
// int hg_scanner_239::writedown_device_configuration()
|
|
||||||
// {
|
|
||||||
// int ret = SCANNER_ERR_OK;
|
|
||||||
|
|
||||||
|
|
||||||
// ret = write_register(SR_CONFIG_SCAN_PARAM, dev_conf_.value);
|
|
||||||
// VLOG_MINI_2(LOG_LEVEL_DEBUG_INFO, "Writedown scanner configuration(0x%x) = %s\n", dev_conf_.value, hg_scanner_err_name(ret));
|
|
||||||
|
|
||||||
// return ret;
|
|
||||||
// }
|
|
||||||
|
|
||||||
int hg_scanner_239::writedown_device_configuration(setting_hardware::HGSCANCONF_3399 *dev_conf)
|
int hg_scanner_239::writedown_device_configuration(setting_hardware::HGSCANCONF_3399 *dev_conf)
|
||||||
{
|
{
|
||||||
|
@ -614,17 +602,11 @@ int hg_scanner_239::writedown_device_configuration(setting_hardware::HGSCANCONF_
|
||||||
{
|
{
|
||||||
dev_conf->params_3399.color = 1;
|
dev_conf->params_3399.color = 1;
|
||||||
}
|
}
|
||||||
|
else if (image_prc_param_.bits.rid_color == RID_COLOR_NONE
|
||||||
if(image_prc_param_.bits.rid_color != RID_COLOR_NONE
|
&& (image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY || image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE))
|
||||||
&& (image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY || image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE))
|
{
|
||||||
{
|
dev_conf->params_3399.color = 0;
|
||||||
dev_conf->params_3399.color = 1;
|
}
|
||||||
}
|
|
||||||
else if (image_prc_param_.bits.rid_color == RID_COLOR_NONE
|
|
||||||
&& (image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY || image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE))
|
|
||||||
{
|
|
||||||
dev_conf->params_3399.color = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (image_prc_param_.bits.paper == PAPER_AUTO_MATCH
|
if (image_prc_param_.bits.paper == PAPER_AUTO_MATCH
|
||||||
|| image_prc_param_.bits.paper == PAPER_MAX_SIZE
|
|| image_prc_param_.bits.paper == PAPER_MAX_SIZE
|
||||||
|
@ -658,8 +640,6 @@ int hg_scanner_239::writedown_image_configuration(void)
|
||||||
|
|
||||||
if (is_lateral(image_prc_param_.bits.paper))
|
if (is_lateral(image_prc_param_.bits.paper))
|
||||||
ic.paperAlign = Rot270;
|
ic.paperAlign = Rot270;
|
||||||
// else if (image_prc_param_.bits.text_direction == TEXT_DIRECTION_AUTO)
|
|
||||||
// ic.paperAlign = AutoTextOrientation;
|
|
||||||
else
|
else
|
||||||
ic.paperAlign = Rot0;
|
ic.paperAlign = Rot0;
|
||||||
|
|
||||||
|
@ -671,7 +651,6 @@ int hg_scanner_239::writedown_image_configuration(void)
|
||||||
ic.imageRotateDegree = 0;
|
ic.imageRotateDegree = 0;
|
||||||
|
|
||||||
ic.imageRotateDegree *= 90.0f;
|
ic.imageRotateDegree *= 90.0f;
|
||||||
|
|
||||||
ic.is_duplex = (image_prc_param_.bits.page == PAGE_DOUBLE
|
ic.is_duplex = (image_prc_param_.bits.page == PAGE_DOUBLE
|
||||||
|| image_prc_param_.bits.page == PAGE_OMIT_EMPTY
|
|| image_prc_param_.bits.page == PAGE_OMIT_EMPTY
|
||||||
|| image_prc_param_.bits.page == PAGE_OMIT_EMPTY_RECEIPT
|
|| image_prc_param_.bits.page == PAGE_OMIT_EMPTY_RECEIPT
|
||||||
|
@ -680,7 +659,6 @@ int hg_scanner_239::writedown_image_configuration(void)
|
||||||
ic.en_fold = (image_prc_param_.bits.page == PAGE_FOLIO);
|
ic.en_fold = (image_prc_param_.bits.page == PAGE_FOLIO);
|
||||||
ic.pixtype = image_prc_param_.bits.color_mode == COLOR_MODE_AUTO_MATCH ? 2 : image_prc_param_.bits.color_mode;
|
ic.pixtype = image_prc_param_.bits.color_mode == COLOR_MODE_AUTO_MATCH ? 2 : image_prc_param_.bits.color_mode;
|
||||||
ic.automaticcolor = is_auto_matic_color;
|
ic.automaticcolor = is_auto_matic_color;
|
||||||
|
|
||||||
ic.automaticcolortype = 1;// ic.pixtype; //存疑
|
ic.automaticcolortype = 1;// ic.pixtype; //存疑
|
||||||
if (resolution_ >= 300)
|
if (resolution_ >= 300)
|
||||||
{
|
{
|
||||||
|
@ -909,17 +887,6 @@ int hg_scanner_239::pop_first_image(void)
|
||||||
|
|
||||||
int hg_scanner_239::read_one_image_from_usb(SANE_Image_Statu statu)
|
int hg_scanner_239::read_one_image_from_usb(SANE_Image_Statu statu)
|
||||||
{
|
{
|
||||||
//if (is_dev_tx())
|
|
||||||
// return SCANNER_ERR_OK;
|
|
||||||
|
|
||||||
//if (!is_kernelsnap_211209_)
|
|
||||||
//{
|
|
||||||
// if (image_prc_param_.bits.page == PAGE_DOUBLE && !image_prc_param_.bits.fractate_check)
|
|
||||||
// if (get_image_count() < 3)
|
|
||||||
// return SCANNER_ERR_DEVICE_NO_IMAGE;
|
|
||||||
// if (get_image_count() < 2)
|
|
||||||
// return SCANNER_ERR_DEVICE_NO_IMAGE;
|
|
||||||
//}
|
|
||||||
int r = 0,
|
int r = 0,
|
||||||
total = get_front_data_size(),
|
total = get_front_data_size(),
|
||||||
off = 0,
|
off = 0,
|
||||||
|
@ -931,9 +898,6 @@ int hg_scanner_239::read_one_image_from_usb(SANE_Image_Statu statu)
|
||||||
|
|
||||||
return status_;
|
return status_;
|
||||||
}
|
}
|
||||||
//if (user_cancel_)
|
|
||||||
//return SCANNER_ERR_USER_CANCELED;
|
|
||||||
|
|
||||||
if (total == -1)
|
if (total == -1)
|
||||||
ret = status_;
|
ret = status_;
|
||||||
else
|
else
|
||||||
|
@ -1320,14 +1284,10 @@ int hg_scanner_239::on_pick_paper_threshold(double threshold)
|
||||||
int hg_scanner_239::on_is_auto_paper(bool isautopaper)
|
int hg_scanner_239::on_is_auto_paper(bool isautopaper)
|
||||||
{
|
{
|
||||||
dev_conf_.params_3399.is_autopaper = isautopaper;
|
dev_conf_.params_3399.is_autopaper = isautopaper;
|
||||||
printf("isautopaper:%d\r\n",isautopaper);
|
|
||||||
int ret = writedown_device_configuration();
|
int ret = writedown_device_configuration();
|
||||||
|
|
||||||
if (isautopaper)
|
if (isautopaper)
|
||||||
{
|
|
||||||
//notify_ui_working_status("待纸扫描状态中...", SANE_EVENT_WORKING, status_);
|
|
||||||
notify_ui_working_status("\345\276\205\347\272\270\346\211\253\346\217\217\347\212\266\346\200\201\344\270\255...", SANE_EVENT_WORKING, status_);
|
notify_ui_working_status("\345\276\205\347\272\270\346\211\253\346\217\217\347\212\266\346\200\201\344\270\255...", SANE_EVENT_WORKING, status_);
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -1623,13 +1583,6 @@ int hg_scanner_239::start(void)
|
||||||
VLOG_MINI_1(LOG_LEVEL_WARNING, "start status01 is(%s), the result will be unpredictable.\n", hg_scanner_err_name(ret));
|
VLOG_MINI_1(LOG_LEVEL_WARNING, "start status01 is(%s), the result will be unpredictable.\n", hg_scanner_err_name(ret));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
ret = get_scanner_paperon();
|
|
||||||
if (ret == SCANNER_ERR_DEVICE_NO_PAPER)
|
|
||||||
{
|
|
||||||
status_ = ret;
|
|
||||||
VLOG_MINI_1(LOG_LEVEL_WARNING, "device start status is(%s)\n", STATU_DESC_SCANNER_ERR_DEVICE_NO_PAPER);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = write_command(setting3399::SC_START);
|
ret = write_command(setting3399::SC_START);
|
||||||
|
|
||||||
|
@ -1918,4 +1871,91 @@ int hg_scanner_239::set_devshtudown()
|
||||||
|
|
||||||
if (ret != SCANNER_ERR_OK)
|
if (ret != SCANNER_ERR_OK)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
int hg_scanner_239::set_scan_islock(SANE_Bool set_islock)
|
||||||
|
{
|
||||||
|
if (set_islock != 0 && set_islock != 1)
|
||||||
|
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
||||||
|
|
||||||
|
int val = 0,
|
||||||
|
ret = write_register(setting3399::SR_SET_LOCK_STATES, set_islock);
|
||||||
|
|
||||||
|
if (ret != SCANNER_ERR_OK)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
int hg_scanner_239::get_scan_islock(SANE_Bool* islock)
|
||||||
|
{
|
||||||
|
std::string fv(get_firmware_version()),
|
||||||
|
sn(get_serial_num());
|
||||||
|
|
||||||
|
VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "Set_scan_islock ---> Firmware version: %s\n", fv.c_str());
|
||||||
|
|
||||||
|
if ((fv[5] == 'B') && (atoi(fv.substr(6, 4).c_str()) >= 1017))
|
||||||
|
{
|
||||||
|
int val = 0,
|
||||||
|
ret = read_register(setting3399::SR_GET_LOCK_STATES, &val);
|
||||||
|
if (ret == SCANNER_ERR_OK)
|
||||||
|
*islock = val;
|
||||||
|
if ( val == 1)
|
||||||
|
{
|
||||||
|
ret = SCANNER_ERR_DEVICE_ISLOCK;
|
||||||
|
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#define WIN32
|
||||||
|
int hg_scanner_239::set_scan_lock_check_val(string check_str)
|
||||||
|
{
|
||||||
|
if (check_str.empty())
|
||||||
|
{
|
||||||
|
return SCANNER_ERR_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string sn = get_serial_num(),
|
||||||
|
token = check_str + sn,
|
||||||
|
md5_to_hex = "";
|
||||||
|
|
||||||
|
char map[] = "0123456789abcdef";
|
||||||
|
|
||||||
|
unsigned char MD5result[16];
|
||||||
|
SANE_Bool islock;
|
||||||
|
int ret = SCANNER_ERR_OK;
|
||||||
|
ret = get_scan_islock(&islock);
|
||||||
|
|
||||||
|
if (ret != SCANNER_ERR_OK)
|
||||||
|
{
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
MD5_CTX ctx;
|
||||||
|
MD5_Init(&ctx);
|
||||||
|
MD5_Update(&ctx, token.c_str(), token.size());
|
||||||
|
MD5_Final(MD5result, &ctx);//MD5result 返回一个标准的16字节数据
|
||||||
|
}
|
||||||
|
for (size_t i = 0; i < 16; i++)
|
||||||
|
{
|
||||||
|
md5_to_hex += map[MD5result[i] / 16];
|
||||||
|
md5_to_hex += map[MD5result[i] % 16];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (md5_to_hex.empty())
|
||||||
|
{
|
||||||
|
return SCANNER_ERR_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = write_register(setting3399::SR_DECODE_TOKEN, md5_to_hex.length());
|
||||||
|
if (ret != SCANNER_ERR_OK)
|
||||||
|
{
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
int len = md5_to_hex.length();
|
||||||
|
ret = io_->write_bulk(&md5_to_hex[0], &len);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
#endif
|
|
@ -56,7 +56,7 @@ class hg_scanner_239 : public hg_scanner
|
||||||
void discard_all_images(void);
|
void discard_all_images(void);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
int on_color_mode_changed(int& color_mode) override;
|
int on_color_mode_changed(int& color_mode) override;
|
||||||
virtual int on_paper_changed(int& paper) override;
|
virtual int on_paper_changed(int& paper) override;
|
||||||
virtual int on_paper_check_changed(bool& check) override;
|
virtual int on_paper_check_changed(bool& check) override;
|
||||||
virtual int on_resolution_changed(int& dpi) override;
|
virtual int on_resolution_changed(int& dpi) override;
|
||||||
|
@ -127,5 +127,8 @@ public:
|
||||||
virtual int get_device_log(string &get_device_log);//获取设备日志
|
virtual int get_device_log(string &get_device_log);//获取设备日志
|
||||||
virtual int set_devreboot();//设置设备重启
|
virtual int set_devreboot();//设置设备重启
|
||||||
virtual int set_devshtudown();//设置设备关机
|
virtual int set_devshtudown();//设置设备关机
|
||||||
|
virtual int set_scan_islock(SANE_Bool set_islock);
|
||||||
|
virtual int get_scan_islock(SANE_Bool* islock);
|
||||||
|
virtual int set_scan_lock_check_val(string check_str);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -723,11 +723,25 @@ int hg_scanner_402::writedown_device_configuration(setting_hardware::HGSCANCONF_
|
||||||
int ret = SCANNER_ERR_OK;
|
int ret = SCANNER_ERR_OK;
|
||||||
|
|
||||||
if (!dev_conf)
|
if (!dev_conf)
|
||||||
{
|
|
||||||
dev_conf_.params_3399.is_textcorrect = !keep_watermark_;
|
|
||||||
dev_conf = &dev_conf_;
|
dev_conf = &dev_conf_;
|
||||||
|
|
||||||
|
if (image_prc_param_.bits.rid_color != RID_COLOR_NONE
|
||||||
|
&& (image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY || image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE))
|
||||||
|
{
|
||||||
|
dev_conf->params_3399.color = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (image_prc_param_.bits.paper == PAPER_AUTO_MATCH
|
||||||
|
|| image_prc_param_.bits.paper == PAPER_MAX_SIZE
|
||||||
|
|| image_prc_param_.bits.paper == PAPER_MAX_SIZE_CLIP
|
||||||
|
|| image_prc_param_.bits.paper == PAPER_TRIGEMINY
|
||||||
|
|| image_prc_param_.bits.paper == PAPER_16K
|
||||||
|
|| image_prc_param_.bits.paper == PAPER_8K
|
||||||
|
|| image_prc_param_.bits.paper == PAPER_16K_LATERAL
|
||||||
|
)
|
||||||
|
{
|
||||||
|
dev_conf->params_3399.enable_sizecheck = false;
|
||||||
|
}
|
||||||
ret = write_register(setting3399::SR_CONFIG_SCAN_PARAM, dev_conf->value);
|
ret = write_register(setting3399::SR_CONFIG_SCAN_PARAM, dev_conf->value);
|
||||||
|
|
||||||
VLOG_MINI_2(LOG_LEVEL_DEBUG_INFO, "Writedown scanner configuration(0x%x) = %s\n", dev_conf->value, hg_scanner_err_name(ret));
|
VLOG_MINI_2(LOG_LEVEL_DEBUG_INFO, "Writedown scanner configuration(0x%x) = %s\n", dev_conf->value, hg_scanner_err_name(ret));
|
||||||
|
@ -1123,48 +1137,23 @@ void hg_scanner_402::discard_all_images(void)
|
||||||
VLOG_MINI_2(LOG_LEVEL_DEBUG_INFO, "prev-connection has left %d interrupt packet(s) && %d image(s).\n", pre_int, pre_img);
|
VLOG_MINI_2(LOG_LEVEL_DEBUG_INFO, "prev-connection has left %d interrupt packet(s) && %d image(s).\n", pre_int, pre_img);
|
||||||
}
|
}
|
||||||
|
|
||||||
//color_mode =-1 除色选项
|
|
||||||
int hg_scanner_402::on_color_mode_changed(int& color_mode)
|
int hg_scanner_402::on_color_mode_changed(int& color_mode)
|
||||||
{
|
{
|
||||||
int ret = SCANNER_ERR_OK;
|
int ret = SCANNER_ERR_OK;
|
||||||
|
|
||||||
if ((((color_mode == COLOR_MODE_24_BITS || color_mode == COLOR_MODE_AUTO_MATCH) && !dev_conf_.params_3399.color) ||
|
if ((((color_mode == COLOR_MODE_24_BITS || color_mode == COLOR_MODE_AUTO_MATCH) && !dev_conf_.params_3399.color) ||
|
||||||
((color_mode != COLOR_MODE_24_BITS && color_mode != COLOR_MODE_AUTO_MATCH) && dev_conf_.params_3399.color)) && color_mode != -1)
|
((color_mode != COLOR_MODE_24_BITS && color_mode != COLOR_MODE_AUTO_MATCH) && dev_conf_.params_3399.color)) && color_mode != -1)
|
||||||
{
|
{
|
||||||
dev_conf_.params_3399.color ^= 1;
|
dev_conf_.params_3399.color ^= 1;
|
||||||
ret = writedown_device_configuration();
|
ret = writedown_device_configuration();
|
||||||
if(ret)
|
if (ret)
|
||||||
dev_conf_.params_3399.color ^= 1;
|
dev_conf_.params_3399.color ^= 1;
|
||||||
}
|
}
|
||||||
if(color_mode == COLOR_MODE_AUTO_MATCH)
|
if (color_mode == COLOR_MODE_AUTO_MATCH)
|
||||||
{
|
{
|
||||||
dev_conf_.params_3399.color = 1;
|
dev_conf_.params_3399.color = 1;
|
||||||
}
|
|
||||||
|
|
||||||
setting_hardware::HGSCANCONF_3399 d = dev_conf_;
|
|
||||||
|
|
||||||
if (image_prc_param_.bits.rid_color != RID_COLOR_NONE
|
|
||||||
&&(image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY || image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE)
|
|
||||||
)
|
|
||||||
{
|
|
||||||
d.params_3399.color = 1;
|
|
||||||
ret = writedown_device_configuration(&d);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(image_prc_param_.bits.rid_color != RID_COLOR_NONE
|
|
||||||
&& (image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY || image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE)
|
|
||||||
&& color_mode == -1)
|
|
||||||
{
|
|
||||||
d.params_3399.color = 1;
|
|
||||||
}
|
|
||||||
else if (image_prc_param_.bits.rid_color == RID_COLOR_NONE
|
|
||||||
&& (image_prc_param_.bits.color_mode == COLOR_MODE_256_GRAY || image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE)
|
|
||||||
&& color_mode == -1)
|
|
||||||
{
|
|
||||||
d.params_3399.color = 0;
|
|
||||||
}
|
|
||||||
if(color_mode == -1)
|
|
||||||
ret = writedown_device_configuration(&d);
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -228,6 +228,7 @@ extern "C"
|
||||||
RETURN_IF(err, SCANNER_ERR_DEVICE_NO_IMAGE);
|
RETURN_IF(err, SCANNER_ERR_DEVICE_NO_IMAGE);
|
||||||
RETURN_IF(err, SCANNER_ERR_DEVICE_SCANN_ERROR);
|
RETURN_IF(err, SCANNER_ERR_DEVICE_SCANN_ERROR);
|
||||||
RETURN_IF(err, SCANNER_ERR_DEVICE_PC_BUSY);
|
RETURN_IF(err, SCANNER_ERR_DEVICE_PC_BUSY);
|
||||||
|
RETURN_IF(err, SCANNER_ERR_DEVICE_ISLOCK);
|
||||||
|
|
||||||
// NOTE: multi-thread unsafe here
|
// NOTE: multi-thread unsafe here
|
||||||
static char g_unk_err[80] = { 0 };
|
static char g_unk_err[80] = { 0 };
|
||||||
|
|
Loading…
Reference in New Issue