Merge branch 'dev' of http://192.168.10.5:8099/sane/code_device into dev
This commit is contained in:
commit
f9b31130ac
|
@ -639,7 +639,7 @@ tiny_buffer::tiny_buffer(unsigned int size
|
||||||
, const char* name_leading
|
, const char* name_leading
|
||||||
, const char* ext
|
, const char* ext
|
||||||
, unsigned int uniq_id)
|
, unsigned int uniq_id)
|
||||||
: size_(size), buf_(nullptr), img_statu_(SANE_Image_Statu_OK)
|
: size_(size), buf_(nullptr), img_statu_(IMG_STATUS_OK)
|
||||||
{
|
{
|
||||||
init(tmp_path, name_leading, ext, uniq_id);
|
init(tmp_path, name_leading, ext, uniq_id);
|
||||||
}
|
}
|
||||||
|
@ -785,7 +785,7 @@ void final_img_queue::clear(void)
|
||||||
mem_usage_ = 0;
|
mem_usage_ = 0;
|
||||||
queue_.clear();
|
queue_.clear();
|
||||||
}
|
}
|
||||||
bool final_img_queue::put(int w, int h, int bpp, int channels, int line_bytes, void* data, unsigned bytes
|
bool final_img_queue::put(int w, int h, int bpp, int channels, int line_bytes, void* data, unsigned bytes, int statu
|
||||||
, const char* tmp_path, const char* name_leading, const char* ext, int ind, uint32_t id)
|
, const char* tmp_path, const char* name_leading, const char* ext, int ind, uint32_t id)
|
||||||
{
|
{
|
||||||
IMGDT imgd;
|
IMGDT imgd;
|
||||||
|
@ -799,6 +799,7 @@ bool final_img_queue::put(int w, int h, int bpp, int channels, int line_bytes, v
|
||||||
imgd.header.line_bytes = line_bytes;
|
imgd.header.line_bytes = line_bytes;
|
||||||
imgd.header.width = w;
|
imgd.header.width = w;
|
||||||
imgd.header.src_id = id;
|
imgd.header.src_id = id;
|
||||||
|
imgd.header.statu = statu;
|
||||||
imgd.offset = 0;
|
imgd.offset = 0;
|
||||||
imgd.data.reset(new tiny_buffer(bytes, tmp_path, name_leading, ext, ind));
|
imgd.data.reset(new tiny_buffer(bytes, tmp_path, name_leading, ext, ind));
|
||||||
|
|
||||||
|
|
|
@ -213,6 +213,7 @@ typedef struct _img_header
|
||||||
int bits;
|
int bits;
|
||||||
int channels;
|
int channels;
|
||||||
int line_bytes;
|
int line_bytes;
|
||||||
|
int statu; // SANE_Image_Statu
|
||||||
unsigned bytes;
|
unsigned bytes;
|
||||||
uint32_t src_id;
|
uint32_t src_id;
|
||||||
}IMH;
|
}IMH;
|
||||||
|
@ -236,7 +237,7 @@ public:
|
||||||
unsigned long long mem_usage(void);
|
unsigned long long mem_usage(void);
|
||||||
size_t size(void);
|
size_t size(void);
|
||||||
void clear(void);
|
void clear(void);
|
||||||
bool put(int w, int h, int bpp, int channels, int line_bytes, void* data, unsigned bytes
|
bool put(int w, int h, int bpp, int channels, int line_bytes, void* data, unsigned bytes, int statu
|
||||||
, const char* tmp_path, const char* name_leading, const char* ext, int ind, uint32_t id);
|
, const char* tmp_path, const char* name_leading, const char* ext, int ind, uint32_t id);
|
||||||
bool front(IMH* header);
|
bool front(IMH* header);
|
||||||
void fetch_front(void* buf, int* len, bool* over);
|
void fetch_front(void* buf, int* len, bool* over);
|
||||||
|
|
|
@ -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 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_) &&
|
if (!is_continue_when_double_paper(double_paper_handle_) &&
|
||||||
is_save_img_when_double_paper(double_paper_handle_))
|
is_save_img_when_double_paper(double_paper_handle_))
|
||||||
{
|
{
|
||||||
if (err == SCANNER_ERR_DEVICE_DOUBLE_FEEDING)
|
if (err == SCANNER_ERR_DEVICE_DOUBLE_FEEDING)
|
||||||
statu = SANE_Image_Statu_Double;
|
statu = IMG_STATUS_DOUBLE;
|
||||||
//else if (err == SCANNER_ERR_DEVICE_PAPER_JAMMED)
|
//else if (err == SCANNER_ERR_DEVICE_PAPER_JAMMED)
|
||||||
//statu = SANE_Image_Statu_Jammed;
|
//statu = SANE_Image_Statu_Jammed;
|
||||||
}
|
}
|
||||||
|
@ -3615,7 +3615,7 @@ int hg_scanner::save_final_image(hg_imgproc::LPIMGHEAD head, void* buf, uint32_t
|
||||||
return ui_ev_cb_((scanner_handle)this, SANE_EVENT_IMAGE_OK, &img, &final_img_index_, NULL);
|
return ui_ev_cb_((scanner_handle)this, SANE_EVENT_IMAGE_OK, &img, &final_img_index_, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (final_imgs_.put(head->width, head->height, head->bits, head->channels, head->line_bytes, buf, head->total_bytes
|
if (final_imgs_.put(head->width, head->height, head->bits, head->channels, head->line_bytes, buf, head->total_bytes, head->statu
|
||||||
, final_path_.c_str(), "final", "dat", final_img_index_, id))
|
, final_path_.c_str(), "final", "dat", final_img_index_, id))
|
||||||
return SCANNER_ERR_OK;
|
return SCANNER_ERR_OK;
|
||||||
else
|
else
|
||||||
|
@ -3972,14 +3972,18 @@ int hg_scanner::start(void)
|
||||||
|
|
||||||
return status_;
|
return status_;
|
||||||
}
|
}
|
||||||
int hg_scanner::get_image_info(SANE_Parameters* ii)
|
int hg_scanner::get_image_info(SANE_Parameters* ii, int len)
|
||||||
{
|
{
|
||||||
int ret = SCANNER_ERR_OK;
|
int ret = SCANNER_ERR_OK;
|
||||||
IMH imh;
|
IMH imh;
|
||||||
|
SANE_Image* iiex = len == sizeof(SANE_Image) ? (SANE_Image*)ii : nullptr;
|
||||||
|
|
||||||
fetching_id_ = -1;
|
fetching_id_ = -1;
|
||||||
bzero(&imh, sizeof(imh));
|
memset(&imh, 0, sizeof(imh));
|
||||||
bzero(ii, sizeof(*ii));
|
memset(ii, 0, len);
|
||||||
|
if (iiex)
|
||||||
|
ii = &iiex->header;
|
||||||
|
|
||||||
while ((!wait_img_.is_waiting() || !wait_usb_.is_waiting()) && final_imgs_.size() <= 0)
|
while ((!wait_img_.is_waiting() || !wait_usb_.is_waiting()) && final_imgs_.size() <= 0)
|
||||||
this_thread::sleep_for(chrono::milliseconds(10));
|
this_thread::sleep_for(chrono::milliseconds(10));
|
||||||
|
|
||||||
|
@ -3993,6 +3997,13 @@ int hg_scanner::get_image_info(SANE_Parameters* ii)
|
||||||
{
|
{
|
||||||
copy_to_sane_image_header(ii, imh.width, imh.height, imh.line_bytes, imh.channels, imh.bits);
|
copy_to_sane_image_header(ii, imh.width, imh.height, imh.line_bytes, imh.channels, imh.bits);
|
||||||
fetching_id_ = imh.src_id;
|
fetching_id_ = imh.src_id;
|
||||||
|
if (iiex)
|
||||||
|
{
|
||||||
|
iiex->src_id = imh.src_id;
|
||||||
|
iiex->flag.statu = imh.statu;
|
||||||
|
iiex->flag.dpi = resolution_;
|
||||||
|
iiex->bytes = imh.bytes;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4016,6 +4027,13 @@ int hg_scanner::get_image_info(SANE_Parameters* ii)
|
||||||
else
|
else
|
||||||
imh.bits = 8;
|
imh.bits = 8;
|
||||||
|
|
||||||
|
if (iiex)
|
||||||
|
{
|
||||||
|
iiex->src_id = -1;
|
||||||
|
iiex->flag.statu = IMG_STATUS_OK;
|
||||||
|
iiex->flag.dpi = resolution_;
|
||||||
|
}
|
||||||
|
|
||||||
ret = SCANNER_ERR_OK;
|
ret = SCANNER_ERR_OK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -475,7 +475,7 @@ public:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual int start(void);
|
virtual int start(void);
|
||||||
virtual int get_image_info(SANE_Parameters* ii);
|
virtual int get_image_info(SANE_Parameters* ii, int len);
|
||||||
virtual int read_image_data(unsigned char* buf, int* len);
|
virtual int read_image_data(unsigned char* buf, int* len);
|
||||||
virtual int stop(void);
|
virtual int stop(void);
|
||||||
virtual int reset(void);
|
virtual int reset(void);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
// hg_scanner is the base class of kinds of scanners
|
// hg_scanner is the base class of kinds of scanners
|
||||||
//
|
//
|
||||||
|
@ -58,7 +58,7 @@ private:
|
||||||
int readusb(USBCB &usb);
|
int readusb(USBCB &usb);
|
||||||
int pop_image();
|
int pop_image();
|
||||||
int get_scanner_status(USBCB &usb);
|
int get_scanner_status(USBCB &usb);
|
||||||
int get_img_data(unsigned int bytes, SANE_Image_Statu statu = SANE_Image_Statu_OK);
|
int get_img_data(unsigned int bytes, SANE_Image_Statu statu = IMG_STATUS_OK);
|
||||||
int writedown_device_configuration(bool type =false,setting_hardware::HGSCANCONF_DSP *d = NULL);
|
int writedown_device_configuration(bool type =false,setting_hardware::HGSCANCONF_DSP *d = NULL);
|
||||||
void writedown_image_configuration(void);
|
void writedown_image_configuration(void);
|
||||||
void printf_devconfig(setting_hardware::HGSCANCONF_DSP *d = NULL);
|
void printf_devconfig(setting_hardware::HGSCANCONF_DSP *d = NULL);
|
||||||
|
|
|
@ -103,7 +103,7 @@ namespace settings
|
||||||
{200.0f, 1},
|
{200.0f, 1},
|
||||||
{240.0f, 1},
|
{240.0f, 1},
|
||||||
{300.0f, 0},
|
{300.0f, 0},
|
||||||
{600.0f, 1} //临时版本发1 原来发2
|
{600.0f, 1} //临时版本å<EFBFBD>? 原æ<C5B8>¥å<C2A5>?
|
||||||
};
|
};
|
||||||
bool is_equal(float l, float r)
|
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))
|
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())
|
||||||
{
|
{
|
||||||
|
@ -535,10 +535,10 @@ 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; //不支持
|
firmware_sup_pick_strength_ = false; //ä¸<EFBFBD>支æŒ?
|
||||||
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 = false; //不支持
|
firmware_sup_double_img = false; //ä¸<EFBFBD>支æŒ?
|
||||||
firmware_sup_devs_lock_ = year.compare("3C") >= 0 ? true : false;
|
firmware_sup_devs_lock_ = year.compare("3C") >= 0 ? true : false;
|
||||||
firmware_sup_dpi_300 = false;
|
firmware_sup_dpi_300 = false;
|
||||||
firmware_sup_dpi_600 = true;
|
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;
|
int ret = SCANNER_ERR_OK;
|
||||||
if (!type)
|
if (!type)
|
||||||
return ret;
|
return ret;
|
||||||
setting_hardware::HGSCANCONF_3399 p = dev_conf_; //不得改变外部的值
|
setting_hardware::HGSCANCONF_3399 p = dev_conf_; //ä¸<EFBFBD>得改å<EFBFBD>˜å¤–部的å€?
|
||||||
if (!dev_conf)
|
if (!dev_conf)
|
||||||
dev_conf = &p;
|
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.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 ,在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;
|
dev_conf->params_3399.paper = 12;
|
||||||
}
|
}
|
||||||
|
@ -904,7 +904,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 华凌cis和敦南cis 默认发1无需改变
|
//dev_conf_.params_3399.dpi = 1; //dpi å<EFBFBD>Žå‡Œcis和敦å<EFBFBD>—cis 默认å<C2A4>?æ— éœ€æ”¹å<C2B9>˜
|
||||||
int ret = writedown_device_configuration();
|
int ret = writedown_device_configuration();
|
||||||
return ret;
|
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 hg_scanner_239::on_skew_check_level_changed(int& check)
|
||||||
{
|
{
|
||||||
int ret = SCANNER_ERR_OK,
|
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;
|
old = dev_conf_.params_3399.screw_detect_level;
|
||||||
setting_hardware::HGSCANCONF_3399 cf;
|
setting_hardware::HGSCANCONF_3399 cf;
|
||||||
|
|
||||||
|
@ -1346,10 +1346,10 @@ void hg_scanner_239::thread_get_dves_image(void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
////239 暂时先关闭双张存图弹窗提示,待到固件更新再确认是否需要弹窗
|
////239 暂时先关é—å<EFBFBD>Œå¼ å˜å›¾å¼¹çª—æ<EFBFBD><EFBFBD>示,待到固件更新å†<EFBFBD>确认是å<EFBFBD>¦éœ€è¦<EFBFBD>å¼¹çª?
|
||||||
//while ((count = get_image_count()) > 0)
|
//while ((count = get_image_count()) > 0)
|
||||||
//{
|
//{
|
||||||
// int s = SANE_Image_Statu_OK;
|
// int s = IMG_STATUS_OK;
|
||||||
// if (count <= 2)
|
// if (count <= 2)
|
||||||
// {
|
// {
|
||||||
// if (image_prc_param_.bits.page == PAGE_SINGLE)
|
// 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 ...
|
// fetch all buffered images and exit ...
|
||||||
//while(!is_dev_image_process_done())
|
//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));
|
std::this_thread::sleep_for(std::chrono::milliseconds(5000));
|
||||||
else
|
else
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
||||||
|
@ -1512,7 +1512,7 @@ int hg_scanner_239::start(void)
|
||||||
|
|
||||||
reset();
|
reset();
|
||||||
|
|
||||||
//211220固件版本不支持返回
|
//211220固件版本ä¸<EFBFBD>支æŒ<EFBFBD>è¿”å›?
|
||||||
ret = get_scan_is_sleep(val);
|
ret = get_scan_is_sleep(val);
|
||||||
if (!val && ret == SCANNER_ERR_OK)
|
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_);
|
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;
|
||||||
|
@ -1975,7 +1975,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(); //保持32位下发
|
int num = 32 - keys.size(); //ä¿<EFBFBD>æŒ<EFBFBD>32ä½<EFBFBD>下å<EFBFBD>?
|
||||||
if (num > 0)
|
if (num > 0)
|
||||||
{
|
{
|
||||||
std::string str(num, '0');
|
std::string str(num, '0');
|
||||||
|
@ -2015,10 +2015,10 @@ int hg_scanner_239::set_scan_lock_check_val(string check_str)
|
||||||
|
|
||||||
SAFE_DELETE(source_plain);
|
SAFE_DELETE(source_plain);
|
||||||
//SAFE_DELETE(ecb_filter);
|
//SAFE_DELETE(ecb_filter);
|
||||||
//SAFE_DELETE(strcip);
|
//SAFE_DELETE(str_cip);
|
||||||
//SAFE_DELETE(source_cipher)
|
SAFE_DELETE(source_cipher);
|
||||||
//SAFE_DELETE(hex_encode);
|
//SAFE_DELETE(hex_encode);
|
||||||
SAFE_DELETE(str_encode);
|
//SAFE_DELETE(str_encode);
|
||||||
return ret;
|
return ret;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -2035,7 +2035,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位置
|
||||||
|
|
||||||
|
@ -2074,7 +2074,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)
|
||||||
{
|
{
|
||||||
|
@ -2141,7 +2141,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; //这个地方设置的参数必须保证正确
|
return SCANNER_ERR_INVALID_PARAMETER; //这个地方设置的å<EFBFBD>‚æ•°å¿…é¡»ä¿<EFBFBD>è¯<EFBFBD>æ£ç¡?
|
||||||
}
|
}
|
||||||
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);
|
||||||
|
|
|
@ -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_device_configuration(bool type = false, setting_hardware::HGSCANCONF_3399* dev_conf = NULL);//false 在start再把type置为true,其他做设置时不发
|
||||||
int writedown_image_configuration(void);
|
int writedown_image_configuration(void);
|
||||||
int pop_first_image(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_process_done(void);
|
||||||
bool is_dev_image_keep_last_paper(void);
|
bool is_dev_image_keep_last_paper(void);
|
||||||
|
|
||||||
|
@ -60,15 +60,15 @@ protected:
|
||||||
protected:
|
protected:
|
||||||
virtual int on_color_mode_changed(int& color_mode) override; //颜色切换
|
virtual 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; //分辨率设�
|
||||||
virtual int on_ultrasonic_check_changed(bool& check) override; //设置超声波检测
|
virtual int on_ultrasonic_check_changed(bool& check) override; //设置超声波检�
|
||||||
virtual int on_staple_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_changed(bool& check) override; //设置æªæ–œæ£€æµ?
|
||||||
virtual int on_skew_check_level_changed(int& check) override; //设置歪斜检测强度
|
virtual int on_skew_check_level_changed(int& check) override; //设置æªæ–œæ£€æµ‹å¼ºåº?
|
||||||
virtual int on_get_feedmode(int& feedmode) override; //获取分纸强度
|
virtual int on_get_feedmode(int& feedmode) override; //获取分纸强度
|
||||||
virtual int on_set_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(bool autostrength)override; //自动分纸强度
|
||||||
virtual int on_pick_paper_threshold(double threshold)override;
|
virtual int on_pick_paper_threshold(double threshold)override;
|
||||||
virtual int on_is_auto_paper(bool isautopaper)override; //待纸扫描
|
virtual int on_is_auto_paper(bool isautopaper)override; //待纸扫描
|
||||||
|
@ -96,44 +96,44 @@ public:
|
||||||
virtual std::string get_device_model(void);
|
virtual std::string get_device_model(void);
|
||||||
|
|
||||||
virtual int set_device_model(string str);
|
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 set_vid_pid(int data) override; //设置vidpid
|
||||||
virtual int get_vid_pid(int& data)override; //获取vidpid
|
virtual int get_vid_pid(int& data)override; //获取vidpid
|
||||||
|
|
||||||
/////////////////成功返回:SCANNER_ERR_OK /////////////
|
/////////////////成功返回: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_leaflet_scan(void) override; //单张扫描
|
||||||
|
|
||||||
virtual int set_clear_roller_num(void) override; //清除滚轴计数
|
virtual int set_clear_roller_num(void) override; //清除滚轴计数
|
||||||
virtual int set_clear_history_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_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_scan_is_sleep(SANE_Bool& type) override; //获å<EFBFBD>–设备是å<EFBFBD>¦ä¼‘çœ å½“ä¸ /*/ type : 0ä¼‘çœ 1唤醒状æ€?/
|
||||||
virtual int get_sleep_time(int& data) override; //获取功耗模式(休眠) /*/ data > 0*/
|
virtual int get_sleep_time(int& data) override; //获å<EFBFBD>–功耗模å¼<EFBFBD>ï¼ˆä¼‘çœ ï¼? /*/ data > 0*/
|
||||||
virtual int set_sleep_time(int data) override; //设置功耗模式(休眠) /*/ 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_history_scan_count(int& data) override; //获取历史扫描张数 /*/ data > 0*/
|
||||||
virtual int get_roller_num(int& data) override; //获取滚轮张数 /*/ data > 0*/
|
virtual int get_roller_num(int& data) override; //获取滚轮张数 /*/ data > 0*/
|
||||||
virtual int set_notify_sleep(void) override; //唤醒设备
|
virtual int set_notify_sleep(void) override; //唤醒设备
|
||||||
virtual int get_device_log(string& log) override; //获取设备日志 /*/ log :储存路径*/
|
virtual int get_device_log(string& log) override; //获取设备日志 /*/ log :储存路径*/
|
||||||
virtual int set_devreboot(int data) override; //设置设备重启
|
virtual int set_devreboot(int data) override; //设置设备重启
|
||||||
virtual int set_devshtudown() override; //设置设备关机
|
virtual int set_devshtudown() override; //设置设备关机
|
||||||
virtual int set_scan_islock(SANE_Bool type) override; //设置设备是否锁定 /*/ type:0解锁,1锁定*/
|
virtual int set_scan_islock(SANE_Bool type) override; //设置设备是å<EFBFBD>¦é”<EFBFBD>定 /*/ type:0解é”<C3A9>ï¼?é”<C3A9>定*/
|
||||||
virtual int get_scan_islock(SANE_Bool& type) override; //获取设备是否锁定 /*/ type:0解锁,1锁定*/
|
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; //获取设备是否锁定 /*/ str:校验码*/
|
virtual int set_scan_lock_check_val(string str) override; //获å<EFBFBD>–设备是å<EFBFBD>¦é”<EFBFBD>定 /*/ str:æ ¡éªŒç ?/
|
||||||
virtual int set_firmware_upgrade(std::string str) override; //固件升级 /*/ str:文件名路径*/
|
virtual int set_firmware_upgrade(std::string str) override; //固件å<EFBFBD>‡çº§ /*/ str:文件å<C2B6><C3A5>è·¯å¾?/
|
||||||
virtual int set_clean_paper_road() override; //清理纸道
|
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 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 set_speed_mode(int data) override; //设置速度模式 /*/ data:100,110,120
|
||||||
virtual int get_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 set_devs_distortion_check_val(float data) override; //设置畸å<EFBFBD>˜çŸ«æ£å€?
|
||||||
virtual int get_devs_distortion_check_val(float &data) override; //获取畸变矫正值
|
virtual int get_devs_distortion_check_val(float &data) override; //获å<EFBFBD>–畸å<EFBFBD>˜çŸ«æ£å€?
|
||||||
|
|
||||||
virtual int set_auto_flat(int data); //设置自动平场校正
|
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)
|
// data:0(ALL) 1(200dpi、gray) 2(200dpi、color) 3(300dpi、gray) 4(300dpi、color) 5(600dpi、gray) 6(600dpi、color)
|
||||||
|
|
|
@ -86,7 +86,7 @@ hg_scanner_300::hg_scanner_300(const char* dev_name,int pid, usb_io* io) :
|
||||||
, last_frame_total(0)
|
, last_frame_total(0)
|
||||||
{
|
{
|
||||||
dsp_config.value = 0;
|
dsp_config.value = 0;
|
||||||
dsp_config.params_3288.enableLed = 1; //默认值
|
dsp_config.params_3288.enableLed = 1; //暺䁅恕<EFBFBD>?
|
||||||
dsp_config.params_3288.isCorrect = 1;
|
dsp_config.params_3288.isCorrect = 1;
|
||||||
|
|
||||||
int ret = get_device_type(firmware_sup_device_7010);
|
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
|
#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
|
#endif
|
||||||
if (init_settings(pid_))
|
if (init_settings(pid_))
|
||||||
{
|
{
|
||||||
|
@ -145,7 +145,7 @@ void hg_scanner_300::thread_handle_usb_read(void)
|
||||||
status = SCANNER_ERR_OK;
|
status = SCANNER_ERR_OK;
|
||||||
StopWatch sw;
|
StopWatch sw;
|
||||||
sw.reset();
|
sw.reset();
|
||||||
SANE_Image_Statu statu = SANE_Image_Statu_OK;
|
SANE_Image_Statu statu = IMG_STATUS_OK;
|
||||||
int img_num = 0;
|
int img_num = 0;
|
||||||
savestatus_.clear();
|
savestatus_.clear();
|
||||||
while (run_)
|
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);
|
//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)
|
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();
|
savestatus_.clear();
|
||||||
if (user_cancel_)
|
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_OVER &&
|
||||||
ret != SCANNER_ERR_DEVICE_AUTO_FAIL_INFO)
|
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)
|
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_));
|
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)//防止状态信息一直取不上来导致卡死
|
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)
|
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
|
else
|
||||||
{
|
{
|
||||||
if (!savestatus_.empty())//以第一个消息为准
|
if (!savestatus_.empty())//隞亦洵銝<EFBFBD>銝芣<EFBFBD><EFBFBD>臭蛹<EFBFBD>?
|
||||||
{
|
{
|
||||||
status_ = savestatus_[0];
|
status_ = savestatus_[0];
|
||||||
}
|
}
|
||||||
|
@ -259,7 +259,7 @@ void hg_scanner_300::thread_handle_usb_read(void)
|
||||||
}
|
}
|
||||||
if (sw.elapsed_s() > 130)
|
if (sw.elapsed_s() > 130)
|
||||||
{
|
{
|
||||||
if (!savestatus_.empty())//以第一个消息为准
|
if (!savestatus_.empty())//隞亦洵銝<EFBFBD>銝芣<EFBFBD><EFBFBD>臭蛹<EFBFBD>?
|
||||||
{
|
{
|
||||||
status_ = savestatus_[0];
|
status_ = savestatus_[0];
|
||||||
}
|
}
|
||||||
|
@ -282,7 +282,7 @@ void hg_scanner_300::thread_handle_usb_read(void)
|
||||||
}
|
}
|
||||||
continue;
|
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);
|
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)
|
||||||
|
@ -393,7 +393,7 @@ int hg_scanner_300::start(void)
|
||||||
{
|
{
|
||||||
return ret;
|
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;
|
is_devs_sleep_ = false;
|
||||||
set_kernelsnap_ver();
|
set_kernelsnap_ver();
|
||||||
|
@ -876,7 +876,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; // 睡眠唤醒 客户提前点击设置这边固件版本号 还没有做判断的
|
is_devs_sleep_ = false; // <EFBFBD>∠<EFBFBD><EFBFBD>日<EFBFBD> 摰X<E691B0><EFBCB8>𣂼<EFBFBD><F0A382BC>孵稬霈曄蔭餈躰器<E8BAB0>箔辣<E7AE94><E8BEA3>𧋦<EFBFBD>?餈䀹瓷<E480B9>匧<EFBFBD><E58CA7>斗鱏<E69697>?
|
||||||
}
|
}
|
||||||
return SCANNER_ERR_OK;
|
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.is_autopaper = dsp_config_.params_dsp.is_autopaper;
|
||||||
ic.hardwarecaps.capturepixtype = 0; //暂无参数 获取图像类型
|
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);
|
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)
|
||||||
|
@ -965,7 +965,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++) //黑白一起保存下来
|
for (size_t i = 0; i < 2; i++) //暺𤑳蒾銝<EFBFBD>韏瑚<EFBFBD>摮䀝<EFBFBD><EFBFBD>?
|
||||||
{
|
{
|
||||||
vector<unsigned char> imagedata;
|
vector<unsigned char> imagedata;
|
||||||
|
|
||||||
|
@ -1007,7 +1007,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; //只要有一张图没有 直接退了
|
return SCANNER_ERR_NO_DATA; //<EFBFBD>芾<EFBFBD><EFBFBD>劐<EFBFBD>撘惩㦛瘝⊥<EFBFBD> <20>湔𦻖<E6B994><F0A6BB96>鈭?
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i)
|
if (i)
|
||||||
|
@ -1039,7 +1039,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; //协议定义长度为10 100 200 =8
|
len = 10; //<EFBFBD>讛悅摰帋<EFBFBD><EFBFBD>踹漲銝?0 100 200 =8
|
||||||
USBCB cmd = { setting3288dsp::GET_FW_VERSION,len,0,};
|
USBCB cmd = { setting3288dsp::GET_FW_VERSION,len,0,};
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -1264,7 +1264,7 @@ int hg_scanner_300::get_device_log(string &log)
|
||||||
str.resize(total);
|
str.resize(total);
|
||||||
str2.resize(total);
|
str2.resize(total);
|
||||||
ret = io_->read_bulk(&str[index], &block);
|
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;
|
// block = 1024 * 1024;
|
||||||
// if (total < block)
|
// if (total < block)
|
||||||
|
|
|
@ -94,7 +94,7 @@ namespace settings302
|
||||||
{200.0f, 1},
|
{200.0f, 1},
|
||||||
{240.0f, 1},
|
{240.0f, 1},
|
||||||
{300.0f, 0},
|
{300.0f, 0},
|
||||||
{600.0f, 1} //涓存椂鐗堟湰鍙? 鍘熸潵鍙?
|
{600.0f, 1} //涓å˜æ¤‚é<EFBFBD>—å Ÿæ¹°é<EFBFBD>? é<>˜ç†¸æ½µé<C2B5>™?
|
||||||
};
|
};
|
||||||
bool is_equal(float l, float r)
|
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)
|
if (!type)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
setting_hardware::HGSCANCONF_3399 p = dev_conf_; //不得改变外部的值
|
setting_hardware::HGSCANCONF_3399 p = dev_conf_; //ä¸<EFBFBD>得改å<EFBFBD>˜å¤–部的å€?
|
||||||
if (!dev_conf)
|
if (!dev_conf)
|
||||||
dev_conf = &p;
|
dev_conf = &p;
|
||||||
|
|
||||||
|
@ -861,7 +861,7 @@ int hg_scanner_302::on_skew_check_level_changed(int& check)
|
||||||
|
|
||||||
return ret;
|
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,
|
int ret = SCANNER_ERR_OK,
|
||||||
val = 0;
|
val = 0;
|
||||||
|
@ -869,7 +869,7 @@ int hg_scanner_302::on_get_feedmode(int &feedmode)//鑾峰彇鍒嗙焊寮哄害
|
||||||
ret = read_register(setting3399::SR_GET_FEEDMODE,&feedmode);
|
ret = read_register(setting3399::SR_GET_FEEDMODE,&feedmode);
|
||||||
return ret;
|
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,
|
int ret = SCANNER_ERR_OK,
|
||||||
val = 0;
|
val = 0;
|
||||||
|
@ -978,7 +978,7 @@ void hg_scanner_302::thread_handle_usb_read(void)
|
||||||
|
|
||||||
while ((count = get_image_count()) > 0)
|
while ((count = get_image_count()) > 0)
|
||||||
{
|
{
|
||||||
int s = SANE_Image_Statu_OK;
|
int s = IMG_STATUS_OK;
|
||||||
if (count <= 2)
|
if (count <= 2)
|
||||||
{
|
{
|
||||||
if (image_prc_param_.bits.page == PAGE_SINGLE)
|
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_);
|
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é<31>žã‚‰å•‹é<E280B9>˜èˆµâ‚¬?
|
||||||
if (ret == SCANNER_ERR_OK)
|
if (ret == SCANNER_ERR_OK)
|
||||||
{
|
{
|
||||||
type = val == 1 ? true : false;
|
type = val == 1 ? true : false;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
// hg_scanner is the base class of kinds of scanners
|
// hg_scanner is the base class of kinds of scanners
|
||||||
//
|
//
|
||||||
|
@ -51,7 +51,7 @@ class hg_scanner_302 : public hg_scanner
|
||||||
int writedown_image_configuration(void);
|
int writedown_image_configuration(void);
|
||||||
int pop_first_image(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);
|
||||||
virtual int discard_all_images();
|
virtual int discard_all_images();
|
||||||
virtual int get_roller_life(void) override;
|
virtual int get_roller_life(void) override;
|
||||||
|
|
||||||
|
|
|
@ -217,7 +217,7 @@ namespace hg_imgproc
|
||||||
// construction
|
// construction
|
||||||
public:
|
public:
|
||||||
imgproc(int pid, bool isx86_Advan) : pid_(pid),papersize_(pid_)
|
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())
|
, my_path_(hg_log::pe_path())
|
||||||
,ocrinit_(NULL),ocrgetdirectimage_(NULL)
|
,ocrinit_(NULL),ocrgetdirectimage_(NULL)
|
||||||
,ocrexit_(NULL),HGBase_CreatImg(NULL)
|
,ocrexit_(NULL),HGBase_CreatImg(NULL)
|
||||||
|
@ -334,7 +334,7 @@ namespace hg_imgproc
|
||||||
{
|
{
|
||||||
return SCANNER_ERR_OUT_OF_RANGE;
|
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_HGImageprc_pHandle_ = dlopen(HGImagePrclib_path.c_str(), RTLD_LAZY);
|
||||||
Dynamicopen_HGBase_pHandle_ = dlopen(HGBaselib_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)
|
if (ret == -1)
|
||||||
return SCANNER_ERR_INSUFFICIENT_MEMORY;
|
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涓嬪彲鑳戒細鎵句笉鍒颁粬鎵€鍦ㄧ殑渚濊禆搴撳鑷寸洿鎺ユ墦寮€鍔ㄦ€佸簱鐨勬椂鍊欐壘涓嶅埌妯″潡
|
load_dll(Prclibbuffer, &Dynamicopen_HGImageprc_pHandle_); //windows涓嬪彲鑳戒細鎵句笉鍒颁粬鎵€鍦ㄧ殑渚濊禆搴撳鑷寸洿鎺ユ墦寮€鍔ㄦ€佸簱鐨勬椂鍊欐壘涓嶅埌妯″潡
|
||||||
|
|
||||||
SAFE_DELETE(Prclibbuffer);
|
SAFE_DELETE(Prclibbuffer);
|
||||||
|
@ -500,7 +500,7 @@ namespace hg_imgproc
|
||||||
static int img_idx = 0;
|
static int img_idx = 0;
|
||||||
cv::Mat ds(param_.height, param_.width, CV_8UC1, buf->data(), cv::Mat::AUTO_STEP);
|
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::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;
|
cv::Mat d;
|
||||||
if (param_.channels == 3)
|
if (param_.channels == 3)
|
||||||
|
@ -549,7 +549,7 @@ namespace hg_imgproc
|
||||||
//}
|
//}
|
||||||
//cv::imwrite("C:\\image\\imdecode" + std::to_string(img_idx++) + ".jpg", mat);
|
//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;
|
// float xy = param_.dpi / 300.0;
|
||||||
// cv::resize(mat, mat, cv::Size(), xy, 1);
|
// cv::resize(mat, mat, cv::Size(), xy, 1);
|
||||||
|
@ -1444,13 +1444,13 @@ namespace hg_imgproc
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 8浣嶅浘杞?浣嶅浘
|
/// 8瘚<EFBFBD><EFBFBD>瘚䀹<EFBFBD>?瘚<><E7989A>瘚?
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="image">8bit鍥?/param>
|
/// <param name="image">8bit<EFBFBD>?/param>
|
||||||
/// <param name="threshold">闃堝€硷紝寤鸿榛樿127</param>
|
/// <param name="threshold"><EFBFBD><EFBFBD><EFBFBD><EFBFBD>祉◎蝝嘥砟曏遴<EFBFBD>璁𥟇阮<EFBFBD>?27</param>
|
||||||
/// <param name="reverse">true涓哄弽鑹诧紝鍗抽粦0鐧?锛涘弽涔嬩害鐒?/param>
|
/// <param name="reverse">true瘨枏<EFBFBD>撘賡鼂霂抒<EFBFBD><EFBFBD>埈𡂝蝎?<3F>?<3F>𥟇<EFBFBD>撘賣<E69298>戭拙拿<E68B99>?/param>
|
||||||
/// <param name="align">true涓哄洓瀛楄妭瀵归綈</param>
|
/// <param name="align">true瘨枏<EFBFBD>瘣梶<EFBFBD>𥟇<EFBFBD>憒剔<EFBFBD>萄<EFBFBD>蝬?/param>
|
||||||
/// <returns>1浣嶅浘</returns>
|
/// <returns>1瘚<EFBFBD><EFBFBD>瘚?/returns>
|
||||||
///
|
///
|
||||||
static cv::Mat convert_8bit_2_1bit(const cv::Mat& image, uchar threshold, bool reverse, bool align)
|
static cv::Mat convert_8bit_2_1bit(const cv::Mat& image, uchar threshold, bool reverse, bool align)
|
||||||
{
|
{
|
||||||
|
@ -1668,7 +1668,7 @@ namespace hg_imgproc
|
||||||
if (imax < cv::abs(a[i][j]))
|
if (imax < cv::abs(a[i][j]))
|
||||||
{
|
{
|
||||||
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;
|
m = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1716,7 +1716,7 @@ namespace hg_imgproc
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//设置一面的offset值
|
//霈曄蔭銝<EFBFBD><EFBFBD>Y<EFBFBD>offset<EFBFBD>?
|
||||||
void setOffset(int* config, int step)
|
void setOffset(int* config, int step)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < 6; i++)
|
for (int i = 0; i < 6; i++)
|
||||||
|
|
|
@ -407,14 +407,14 @@ void hg_scanner_mgr::on_hgscanner_pnp(usb_event ev, libusb_device* device, int v
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
for (; i < online_devices_.size(); ++i)
|
for (; i < online_devices_.size(); ++i)
|
||||||
{
|
{
|
||||||
if (online_devices_[i].dev == device) // 濮濄倕顦╅崑鍥х暰閸氬奔绔撮崣鎷岊啎婢跺洭鍣搁弬鎷岀箾閹恒儱鎮楅敍宀冾啎婢跺洤顕挒鈾€鈧竸evice閳ユ繀绻氶幐浣风瑝閸欐﹫绱辨俊鍌涚亯閸嬪洩顔曟稉宥嗗灇缁斿绱濇导姘嚤閼风顔曟径鍥櫢鏉╃偞绉烽幁顖欑瑝閼宠姤顒滅敮鍛婂复閺€璁圭礉缂佹垵鐣鹃崚鎷岊嚉鐠佹儳顦惃鍓哻anner鐎电钖勫妞剧瑝閸掍即鍣撮弨?
|
if (online_devices_[i].dev == device) // 濮濄倕顦╅崑é<EFBFBD>¥Ñ…暰閸氬奔绔撮崣鎷岊啎婢跺æ´é<EFBFBD>£æ<EFBFBD><EFBFBD>弬鎷岀箾閹æ<EFBFBD>’儱鎮楅æ•<EFBFBD>宀冾啎婢跺洤顕挒鈾€鈧î„<EFBFBD>竸evice閳ユ繀绻氶å¹<EFBFBD>浣风ç‘<EFBFBD>é–¸æ¬<EFBFBD>﹫绱辨俊é<EFBFBD>Œæ¶šäº¯é–¸å¬ªæ´©é¡”曟稉宥嗗ç<EFBFBD>‡ç¼<EFBFBD>斿绱濇导姘嚤閼风î—<EFBFBD>顔曟径é<EFBFBD>¥î„€æ«¢é<EFBFBD>‰â•ƒå<EFBFBD>žç»‰çƒ½å¹<EFBFBD>顖欑ç‘<EFBFBD>é–¼å® å§¤é¡’æ»…æ•®é<EFBFBD>›å©‚å¤<EFBFBD>閺€ç’<EFBFBD>åœç¤‰ç¼‚佹垵é<EFBFBD>£é¹ƒå´šéŽ·å²Šåš‰é<EFBFBD> 佹儳顦惃é<EFBFBD>“å“»anneré<EFBFBD>Žç”µî”Šé’–勫妞剧ç‘<EFBFBD>é–¸æŽ<EFBFBD>å<EFBFBD>³é<EFBFBD>£æ’®å¼?
|
||||||
{
|
{
|
||||||
online_devices_[i].ind = index;
|
online_devices_[i].ind = index;
|
||||||
add = false;
|
add = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (add) // 婢跺嫮鎮婄€电钖勯垾娓別vice閳ユ繃鏁奸崣妯兼畱閹懏娅?
|
if (add) // 婢跺嫮鎮婄€电钖勯垾娓別vice閳ユ繃é<EFBFBD><EFBFBD>奸崣妯兼畱閹æ‡<EFBFBD>å¨?
|
||||||
{
|
{
|
||||||
i = 0;
|
i = 0;
|
||||||
for (auto& v : online_devices_)
|
for (auto& v : online_devices_)
|
||||||
|
@ -1060,7 +1060,7 @@ scanner_err hg_scanner_mgr::hg_scanner_stop(scanner_handle h)
|
||||||
}
|
}
|
||||||
scanner_err hg_scanner_mgr::hg_scanner_get_img_info(scanner_handle h, SANE_Parameters* bmi, long len)
|
scanner_err hg_scanner_mgr::hg_scanner_get_img_info(scanner_handle h, SANE_Parameters* bmi, long len)
|
||||||
{
|
{
|
||||||
return (scanner_err)SCAN_PTR(h)->get_image_info(bmi);
|
return (scanner_err)SCAN_PTR(h)->get_image_info(bmi, (int)len);
|
||||||
}
|
}
|
||||||
scanner_err hg_scanner_mgr::hg_scanner_read_img_data(scanner_handle h, unsigned char* data, long* len)
|
scanner_err hg_scanner_mgr::hg_scanner_read_img_data(scanner_handle h, unsigned char* data, long* len)
|
||||||
{
|
{
|
||||||
|
|
|
@ -415,10 +415,10 @@ extern "C"
|
||||||
|
|
||||||
const char* hg_scanner_image_statu_name(int img_statu)
|
const char* hg_scanner_image_statu_name(int img_statu)
|
||||||
{
|
{
|
||||||
RETURN_IF(img_statu, SANE_Image_Statu_OK);
|
RETURN_IF(img_statu, IMG_STATUS_OK);
|
||||||
RETURN_IF(img_statu, SANE_Image_Statu_Blank);
|
RETURN_IF(img_statu, IMG_STATUS_BLANK);
|
||||||
RETURN_IF(img_statu, SANE_Image_Statu_Double);
|
RETURN_IF(img_statu, IMG_STATUS_DOUBLE);
|
||||||
RETURN_IF(img_statu, SANE_Image_Statu_Jammed);
|
RETURN_IF(img_statu, IMG_STATUS_JAM);
|
||||||
|
|
||||||
// NOTE: multi-thread unsafe here
|
// NOTE: multi-thread unsafe here
|
||||||
static char g_unk_statu[80] = { 0 };
|
static char g_unk_statu[80] = { 0 };
|
||||||
|
|
|
@ -26,6 +26,7 @@ extern SANE_Status inner_sane_io_control(SANE_Handle h, unsigned long code, void
|
||||||
extern const char* inner_sane_err_desc(SANE_Status err);
|
extern const char* inner_sane_err_desc(SANE_Status err);
|
||||||
extern SANE_Status inner_sane_read_ext(SANE_Img_Ext_Info* ext_info, SANE_Int* len);
|
extern SANE_Status inner_sane_read_ext(SANE_Img_Ext_Info* ext_info, SANE_Int* len);
|
||||||
extern SANE_Status inner_sane_ex_get_driver_version(SANE_Int* hh, SANE_Int* hl, SANE_Int* lh, SANE_Int* ll);
|
extern SANE_Status inner_sane_ex_get_driver_version(SANE_Int* hh, SANE_Int* hl, SANE_Int* lh, SANE_Int* ll);
|
||||||
|
extern SANE_Status inner_sane_get_parameters_ex(SANE_Handle h, SANE_Image* info);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 导出接口
|
/// 导出接口
|
||||||
|
@ -115,6 +116,10 @@ SANE_Status sane_read_ext_info(SANE_Img_Ext_Info* ext_info, SANE_Int* len)
|
||||||
{
|
{
|
||||||
return inner_sane_read_ext(ext_info, len);
|
return inner_sane_read_ext(ext_info, len);
|
||||||
}
|
}
|
||||||
|
SANE_Status sane_get_parameters_ex(SANE_Handle h, SANE_Image* info)
|
||||||
|
{
|
||||||
|
return inner_sane_get_parameters_ex(h, info);
|
||||||
|
}
|
||||||
int sane_ex_get_driver_version(int* hh, int* hl, int* lh, int* ll)
|
int sane_ex_get_driver_version(int* hh, int* hl, int* lh, int* ll)
|
||||||
{
|
{
|
||||||
return inner_sane_ex_get_driver_version(hh, hl, lh, ll);
|
return inner_sane_ex_get_driver_version(hh, hl, lh, ll);
|
||||||
|
|
|
@ -1669,6 +1669,18 @@ SANE_Status hg_sane_middleware::get_image_parameters(SANE_Handle handle, SANE_Pa
|
||||||
|
|
||||||
return local_utility::scanner_err_2_sane_statu(err);
|
return local_utility::scanner_err_2_sane_statu(err);
|
||||||
}
|
}
|
||||||
|
SANE_Status hg_sane_middleware::get_image_parameters_ex(SANE_Handle handle, SANE_Image* params)
|
||||||
|
{
|
||||||
|
scanner_handle h = find_openning_device(handle);
|
||||||
|
scanner_err err = SCANNER_ERR_NOT_START;
|
||||||
|
|
||||||
|
if (!params)
|
||||||
|
return SANE_STATUS_INVAL;
|
||||||
|
|
||||||
|
err = hg_scanner_get_img_info(h, (SANE_Parameters*)params, sizeof(*params));
|
||||||
|
|
||||||
|
return local_utility::scanner_err_2_sane_statu(err);
|
||||||
|
}
|
||||||
SANE_Status hg_sane_middleware::start(SANE_Handle h, void* async_event)
|
SANE_Status hg_sane_middleware::start(SANE_Handle h, void* async_event)
|
||||||
{
|
{
|
||||||
LPDEVINST dev;
|
LPDEVINST dev;
|
||||||
|
@ -2643,6 +2655,10 @@ extern "C" { // avoid compiler exporting name in C++ style !!!
|
||||||
|
|
||||||
return SANE_STATUS_GOOD;
|
return SANE_STATUS_GOOD;
|
||||||
}
|
}
|
||||||
|
SANE_Status inner_sane_get_parameters_ex(SANE_Handle h, SANE_Image* info)
|
||||||
|
{
|
||||||
|
return hg_sane_middleware::instance()->get_image_parameters_ex(h, info);
|
||||||
|
}
|
||||||
|
|
||||||
void sanei_debug_msg(int level, int max_level, const char* be, const char* fmt, va_list ap)
|
void sanei_debug_msg(int level, int max_level, const char* be, const char* fmt, va_list ap)
|
||||||
{
|
{
|
||||||
|
|
|
@ -223,6 +223,7 @@ public:
|
||||||
SANE_Status open_device(SANE_String_Const devicename, SANE_Handle* handle);
|
SANE_Status open_device(SANE_String_Const devicename, SANE_Handle* handle);
|
||||||
SANE_Status close_device(SANE_Handle h);
|
SANE_Status close_device(SANE_Handle h);
|
||||||
SANE_Status get_image_parameters(SANE_Handle handle, SANE_Parameters* params);
|
SANE_Status get_image_parameters(SANE_Handle handle, SANE_Parameters* params);
|
||||||
|
SANE_Status get_image_parameters_ex(SANE_Handle handle, SANE_Image* params);
|
||||||
SANE_Status start(SANE_Handle h, void* async_event);
|
SANE_Status start(SANE_Handle h, void* async_event);
|
||||||
SANE_Status read(SANE_Handle h, void* buf, int* bytes);
|
SANE_Status read(SANE_Handle h, void* buf, int* bytes);
|
||||||
SANE_Status stop(SANE_Handle h);
|
SANE_Status stop(SANE_Handle h);
|
||||||
|
|
Loading…
Reference in New Issue