调整校正流程
This commit is contained in:
parent
8b2045592f
commit
14c3b8494a
|
@ -1041,6 +1041,9 @@ void hg_scanner::working_done(void*)
|
||||||
case SCANNER_ERR_DEVICE_ISLOCK:
|
case SCANNER_ERR_DEVICE_ISLOCK:
|
||||||
notify_ui_working_status(STATU_DESC_SCANNER_ERR_DEVICE_ISLOCK, SANE_EVENT_SCAN_FINISHED, status_);
|
notify_ui_working_status(STATU_DESC_SCANNER_ERR_DEVICE_ISLOCK, SANE_EVENT_SCAN_FINISHED, status_);
|
||||||
break;
|
break;
|
||||||
|
case SCANNER_ERR_DEVICE_AUTO_FAIL_OVER:
|
||||||
|
notify_ui_working_status(STATU_DESC_SCANNER_ERR_DEVICE_AUTO_FAIL_OVER, 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;
|
||||||
|
@ -3386,6 +3389,7 @@ int hg_scanner::device_io_control(unsigned long code, void* data, unsigned* len)
|
||||||
}
|
}
|
||||||
else if (code == IO_CTRL_CODE_SET_AUTO_FALT)
|
else if (code == IO_CTRL_CODE_SET_AUTO_FALT)
|
||||||
{
|
{
|
||||||
|
|
||||||
return set_auto_flat();
|
return set_auto_flat();
|
||||||
}
|
}
|
||||||
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
||||||
|
|
|
@ -476,7 +476,7 @@ public:
|
||||||
virtual int get_speed_mode(int &data) = 0; //获取速度模式 /*/ 设备不同值不同,详情见子类注释
|
virtual int get_speed_mode(int &data) = 0; //获取速度模式 /*/ 设备不同值不同,详情见子类注释
|
||||||
virtual int set_dpi_color_check(bool type); //获取畸变矫正
|
virtual int set_dpi_color_check(bool type); //获取畸变矫正
|
||||||
virtual int set_dpi_color_check_val(void) = 0; //设置畸变矫正值
|
virtual int set_dpi_color_check_val(void) = 0; //设置畸变矫正值
|
||||||
virtual int set_auto_flat(void) ; //设置自动平场校正
|
virtual int set_auto_flat(void) = 0; //设置自动平场校正
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef UOS
|
#ifdef UOS
|
||||||
|
|
|
@ -63,6 +63,12 @@ namespace settingsdsp_200
|
||||||
case setting3288dsp::SIZE_ERROR:
|
case setting3288dsp::SIZE_ERROR:
|
||||||
code = SCANNER_ERR_DEVICE_SIZE_CHECK;
|
code = SCANNER_ERR_DEVICE_SIZE_CHECK;
|
||||||
break;
|
break;
|
||||||
|
case setting3288dsp::AUTO_FLAT_FINISHED:
|
||||||
|
code = SCANNER_ERR_DEVICE_AUTO_FAIL_OVER;
|
||||||
|
break;
|
||||||
|
case setting3288dsp::AUTO_FLATTING:
|
||||||
|
code = SCANNER_ERR_DEVICE_AUTO_FAIL_INFO;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
if (fatal)
|
if (fatal)
|
||||||
*fatal = false;
|
*fatal = false;
|
||||||
|
@ -140,6 +146,42 @@ void hg_scanner_200::thread_handle_usb_read(void)
|
||||||
USBCB usb = {0};
|
USBCB usb = {0};
|
||||||
ret = get_scanner_status(usb);
|
ret = get_scanner_status(usb);
|
||||||
|
|
||||||
|
if (ret == SCANNER_ERR_DEVICE_AUTO_FAIL_OVER)
|
||||||
|
{
|
||||||
|
status_ = ret;
|
||||||
|
std::string msg;
|
||||||
|
int count = usb.u32_Count;
|
||||||
|
msg.resize(count);
|
||||||
|
|
||||||
|
ret = io_->read_bulk(&msg[0], &count);
|
||||||
|
if (ret == SCANNER_ERR_OK)
|
||||||
|
notify_ui_working_status(msg.c_str(), SANE_EVENT_STATUS, status_);
|
||||||
|
else
|
||||||
|
status_ = ret;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if (ret == SCANNER_ERR_DEVICE_AUTO_FAIL_INFO)
|
||||||
|
{
|
||||||
|
sw.reset();
|
||||||
|
status_ = ret;
|
||||||
|
|
||||||
|
std::string msg;
|
||||||
|
int count = usb.u32_Count;
|
||||||
|
msg.resize(count);
|
||||||
|
ret = io_->read_bulk(&msg[0], &count);
|
||||||
|
if (ret == SCANNER_ERR_OK)
|
||||||
|
{
|
||||||
|
char buf[1024];
|
||||||
|
strcpy(buf, msg.c_str());
|
||||||
|
notify_ui_working_status(buf, SANE_EVENT_STATUS, status_);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
status_ = ret;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (ret == SCANNER_ERR_DEVICE_NOT_FOUND)
|
if (ret == SCANNER_ERR_DEVICE_NOT_FOUND)
|
||||||
{
|
{
|
||||||
// device left, the work is no meanning ...
|
// device left, the work is no meanning ...
|
||||||
|
@ -165,7 +207,7 @@ void hg_scanner_200::thread_handle_usb_read(void)
|
||||||
status_ = prev_err;
|
status_ = prev_err;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if(ret != SCANNER_ERR_OK)
|
else if(ret != SCANNER_ERR_OK && ret != SCANNER_ERR_DEVICE_AUTO_FAIL_INFO && ret != SCANNER_ERR_DEVICE_AUTO_FAIL_OVER)
|
||||||
{
|
{
|
||||||
if (prev_err == SCANNER_ERR_OK)
|
if (prev_err == SCANNER_ERR_OK)
|
||||||
{
|
{
|
||||||
|
@ -850,6 +892,25 @@ int hg_scanner_200::set_dpi_color_check_val(void)
|
||||||
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int hg_scanner_200::set_auto_flat(void)
|
||||||
|
{
|
||||||
|
USBCB usbcb = { setting3288dsp::START_FLAT,0,0 };
|
||||||
|
int len = sizeof(usbcb);
|
||||||
|
int ret = writeusb(usbcb);
|
||||||
|
|
||||||
|
if (ret == SCANNER_ERR_OK)
|
||||||
|
{
|
||||||
|
//status_ = SCANNER_ERR_DEVICE_BUSY;
|
||||||
|
wait_usb_.notify();
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(300));
|
||||||
|
ret = try_third_app_after_start(ret);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
status_ = ret;
|
||||||
|
VLOG_MINI_1(LOG_LEVEL_WARNING, "set_auto_flat ret: %s\n", hg_scanner_err_name(ret));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
int hg_scanner_200::set_notify_sleep()
|
int hg_scanner_200::set_notify_sleep()
|
||||||
{
|
{
|
||||||
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
||||||
|
|
|
@ -98,4 +98,5 @@ public:
|
||||||
virtual int set_speed_mode(int data) override; //设置速度模式 /*/ 不支持
|
virtual int set_speed_mode(int data) override; //设置速度模式 /*/ 不支持
|
||||||
virtual int get_speed_mode(int &data) override; //设置速度模式 /*/ 不支持
|
virtual int get_speed_mode(int &data) override; //设置速度模式 /*/ 不支持
|
||||||
virtual int set_dpi_color_check_val(void) override; //设置畸变矫正
|
virtual int set_dpi_color_check_val(void) override; //设置畸变矫正
|
||||||
|
virtual int set_auto_flat(void); //设置自动平场校正
|
||||||
};
|
};
|
||||||
|
|
|
@ -77,6 +77,14 @@ namespace settings
|
||||||
}
|
}
|
||||||
else if (ds->From == setting3399::HGType::STOPSCAN)
|
else if (ds->From == setting3399::HGType::STOPSCAN)
|
||||||
code = SCANNER_ERR_DEVICE_STOPPED;
|
code = SCANNER_ERR_DEVICE_STOPPED;
|
||||||
|
else if (ds->From == setting3399::HGType::AutoCorrect)
|
||||||
|
{
|
||||||
|
if (ds->Code == 4)
|
||||||
|
code = SCANNER_ERR_DEVICE_AUTO_FAIL_OVER;
|
||||||
|
else
|
||||||
|
code = SCANNER_ERR_DEVICE_AUTO_FAIL_INFO;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
@ -282,6 +290,34 @@ int hg_scanner_239::get_dpi_color_check_val(int &data)
|
||||||
int ret = read_register(ratio, &data);
|
int ret = read_register(ratio, &data);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
int hg_scanner_239::set_auto_flat(void)
|
||||||
|
{
|
||||||
|
int color = 0,
|
||||||
|
ret = SCANNER_ERR_OK;
|
||||||
|
auto fw = get_firmware_version();
|
||||||
|
if ((fw[5] == 'A' && atoi(fw.substr(6, 4).c_str()) <= 9999))
|
||||||
|
{
|
||||||
|
color = 0 == 1 ? 1 : 0; //暂时没有用。
|
||||||
|
}
|
||||||
|
if (!wait_usb_.is_waiting())
|
||||||
|
{
|
||||||
|
return SCANNER_ERR_DEVICE_BUSY;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ret = write_register(setting3399::SC_AUTOCORRECT, color);
|
||||||
|
if (ret != SCANNER_ERR_OK)
|
||||||
|
{
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
//status_ = SCANNER_ERR_DEVICE_BUSY;
|
||||||
|
wait_usb_.notify();
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(300));
|
||||||
|
ret = try_third_app_after_start(ret);
|
||||||
|
}
|
||||||
|
VLOG_MINI_1(LOG_LEVEL_WARNING, "set_auto_flat ret: %s\n", hg_scanner_err_name(ret));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
int hg_scanner_239::get_status(void)
|
int hg_scanner_239::get_status(void)
|
||||||
{
|
{
|
||||||
int val = 0,
|
int val = 0,
|
||||||
|
@ -889,7 +925,7 @@ int hg_scanner_239::on_scanner_closing(bool force)
|
||||||
}
|
}
|
||||||
void hg_scanner_239::thread_handle_usb_read(void)
|
void hg_scanner_239::thread_handle_usb_read(void)
|
||||||
{
|
{
|
||||||
char buf[64];
|
char buf[1024];
|
||||||
setting3399::HGEIntInfo* info = (setting3399::HGEIntInfo*)buf;
|
setting3399::HGEIntInfo* info = (setting3399::HGEIntInfo*)buf;
|
||||||
int size = sizeof(buf),
|
int size = sizeof(buf),
|
||||||
ret = SCANNER_ERR_OK,
|
ret = SCANNER_ERR_OK,
|
||||||
|
@ -951,7 +987,12 @@ void hg_scanner_239::thread_handle_usb_read(void)
|
||||||
status_ = settings::device_status_to_hg_err(info);
|
status_ = settings::device_status_to_hg_err(info);
|
||||||
VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "status from interrupt point is '%s'\n", hg_scanner_err_name(status_));
|
VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "status from interrupt point is '%s'\n", hg_scanner_err_name(status_));
|
||||||
|
|
||||||
if (status_ != SCANNER_ERR_OK && status_ != SCANNER_ERR_TIMEOUT && status_ != SCANNER_ERR_DEVICE_STOPPED)
|
if (status_ != SCANNER_ERR_OK
|
||||||
|
&& status_ != SCANNER_ERR_TIMEOUT
|
||||||
|
&& status_ != SCANNER_ERR_DEVICE_STOPPED
|
||||||
|
&& status_ != SCANNER_ERR_DEVICE_AUTO_FAIL_OVER
|
||||||
|
&& status_ != SCANNER_ERR_DEVICE_AUTO_FAIL_INFO
|
||||||
|
)
|
||||||
{
|
{
|
||||||
if (!is_dev_image_process_done() || (double_paper_handle_ & DOUBLE_PAPER_SAVE_IMG))
|
if (!is_dev_image_process_done() || (double_paper_handle_ & DOUBLE_PAPER_SAVE_IMG))
|
||||||
{
|
{
|
||||||
|
@ -960,8 +1001,7 @@ void hg_scanner_239::thread_handle_usb_read(void)
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(30));
|
std::this_thread::sleep_for(std::chrono::milliseconds(30));
|
||||||
|
|
||||||
StopWatch delay;
|
StopWatch delay;
|
||||||
if((double_paper_handle_ & DOUBLE_PAPER_SAVE_IMG) &&
|
if((double_paper_handle_ & DOUBLE_PAPER_SAVE_IMG) && st == SCANNER_ERR_DEVICE_DOUBLE_FEEDING)
|
||||||
st == SCANNER_ERR_DEVICE_DOUBLE_FEEDING)
|
|
||||||
{
|
{
|
||||||
int wait = 3000 + (img_conf_.resolution_dst / 200 * 10000);
|
int wait = 3000 + (img_conf_.resolution_dst / 200 * 10000);
|
||||||
while (get_image_count() == 0)
|
while (get_image_count() == 0)
|
||||||
|
@ -1079,6 +1119,19 @@ void hg_scanner_239::thread_handle_usb_read(void)
|
||||||
// stop();
|
// stop();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
else if (info->From == setting3399::AutoCorrect)
|
||||||
|
{
|
||||||
|
std::string devs_info;
|
||||||
|
int len = info->Img_Index;
|
||||||
|
devs_info.resize(len);
|
||||||
|
ret = io_->read_bulk(&info[0], &len);
|
||||||
|
if (ret == SCANNER_ERR_OK)
|
||||||
|
{
|
||||||
|
notify_ui_working_status(devs_info.c_str(), SANE_EVENT_STATUS, status_);
|
||||||
|
}
|
||||||
|
if (status_ == SCANNER_ERR_DEVICE_AUTO_FAIL_OVER)
|
||||||
|
break;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// error handling ...
|
// error handling ...
|
||||||
|
|
|
@ -116,5 +116,6 @@ public:
|
||||||
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_dpi_color_check_val(void) override; //设置畸变矫正值
|
virtual int set_dpi_color_check_val(void) override; //设置畸变矫正值
|
||||||
virtual int get_dpi_color_check_val(int &data); //获取畸变矫正
|
virtual int get_dpi_color_check_val(int &data); //获取畸变矫正
|
||||||
|
virtual int set_auto_flat(void); //设置自动平场校正
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -122,44 +122,58 @@ void hg_scanner_300::thread_handle_usb_read(void)
|
||||||
statu = last_usb_image_statu(ret);
|
statu = last_usb_image_statu(ret);
|
||||||
savestatus_.push_back(ret);
|
savestatus_.push_back(ret);
|
||||||
}
|
}
|
||||||
//else if (ret != SCANNER_ERR_NO_DATA)
|
else if (ret != SCANNER_ERR_NO_DATA && ret != SCANNER_ERR_DEVICE_AUTO_FAIL_OVER && ret != SCANNER_ERR_DEVICE_AUTO_FAIL_INFO)
|
||||||
//{
|
{
|
||||||
// statu = SANE_Image_Statu_OK;
|
statu = SANE_Image_Statu_OK;
|
||||||
//}
|
}
|
||||||
else if (ret == SCANNER_ERR_DEVICE_AUTO_FAIL_OVER)
|
else if (ret == SCANNER_ERR_DEVICE_AUTO_FAIL_OVER)
|
||||||
{
|
{
|
||||||
|
status_ = ret;
|
||||||
std::string msg;
|
std::string msg;
|
||||||
msg.resize(usb.u32_Count);
|
|
||||||
int count = usb.u32_Count;
|
int count = usb.u32_Count;
|
||||||
io_->read_bulk(&msg[0], &count);
|
msg.resize(count);
|
||||||
status_ = SCANNER_ERR_DEVICE_AUTO_FAIL_OVER;
|
|
||||||
//notify_ui_working_status(msg.c_str(), SANE_EVENT_STATUS, status_);
|
ret = io_->read_bulk(&msg[0], &count);
|
||||||
|
if (ret == SCANNER_ERR_OK)
|
||||||
|
notify_ui_working_status(msg.c_str(), SANE_EVENT_STATUS, status_);
|
||||||
|
else
|
||||||
|
status_ = ret;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if (ret == SCANNER_ERR_DEVICE_AUTO_FAIL_INFO)
|
else if (ret == SCANNER_ERR_DEVICE_AUTO_FAIL_INFO)
|
||||||
{
|
{
|
||||||
|
sw.reset();
|
||||||
|
status_ = ret;
|
||||||
|
|
||||||
std::string msg;
|
std::string msg;
|
||||||
msg.resize(usb.u32_Count);
|
|
||||||
int count = usb.u32_Count;
|
int count = usb.u32_Count;
|
||||||
io_->read_bulk(&msg[0], &count);
|
msg.resize(count);
|
||||||
status_ = SCANNER_ERR_DEVICE_AUTO_FAIL_INFO;
|
ret = io_->read_bulk(&msg[0], &count);
|
||||||
|
if (ret == SCANNER_ERR_OK)
|
||||||
|
{
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
strcpy(buf, msg.c_str());
|
strcpy(buf, msg.c_str());
|
||||||
notify_ui_working_status(buf, SANE_EVENT_STATUS, status_);
|
notify_ui_working_status(buf, SANE_EVENT_STATUS, status_);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
if (ret == SCANNER_ERR_NO_DATA && savestatus_.empty() && sw.elapsed_ms() > 5000)
|
|
||||||
{
|
{
|
||||||
|
status_ = ret;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sw.elapsed_ms() > 20000)//防止状态信息一直取不上来导致卡死
|
||||||
|
{
|
||||||
|
//3288固件 获取有纸无纸问题的bug,如果是打开盖子在start之前【主动】获取的话,会先报无纸,而不是开盖。
|
||||||
|
//但是在【端点】又获取不到有纸还是无纸的状态,所以只能通过等待超时,再来【主动】获取有无纸张。
|
||||||
SANE_Bool is_paperon = false;
|
SANE_Bool is_paperon = false;
|
||||||
get_scanner_paperon(is_paperon);
|
ret = get_scanner_paperon(is_paperon);
|
||||||
if (!is_paperon && !user_cancel_)
|
if (!is_paperon && !user_cancel_ && ret == SCANNER_ERR_OK)
|
||||||
{
|
{
|
||||||
status_ = SCANNER_ERR_DEVICE_NO_PAPER;
|
status_ = SCANNER_ERR_DEVICE_NO_PAPER;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (sw.elapsed_ms() > 20000)//防止状态信息一直取不上来导致卡死
|
|
||||||
{
|
|
||||||
status_ = !savestatus_.empty() ? savestatus_[0] : SCANNER_ERR_TIMEOUT;//以第一个消息为准
|
status_ = !savestatus_.empty() ? savestatus_[0] : SCANNER_ERR_TIMEOUT;//以第一个消息为准
|
||||||
savestatus_.clear();
|
savestatus_.clear();
|
||||||
hg_log::log(LOG_LEVEL_WARNING, "get status timeout,get image out\n");
|
hg_log::log(LOG_LEVEL_WARNING, "get status timeout,get image out\n");
|
||||||
|
@ -842,7 +856,7 @@ int hg_scanner_300::set_auto_flat(void)
|
||||||
int len = sizeof(usbcb);
|
int len = sizeof(usbcb);
|
||||||
int ret = writeusb(usbcb);
|
int ret = writeusb(usbcb);
|
||||||
|
|
||||||
if (ret == SCANNER_ERR_OK)
|
if (ret == SCANNER_ERR_OK && wait_usb_.is_waiting())
|
||||||
{
|
{
|
||||||
//status_ = SCANNER_ERR_DEVICE_BUSY;
|
//status_ = SCANNER_ERR_DEVICE_BUSY;
|
||||||
wait_usb_.notify();
|
wait_usb_.notify();
|
||||||
|
|
|
@ -1276,6 +1276,10 @@ int hg_scanner_302::set_dpi_color_check_val(void)
|
||||||
|
|
||||||
return write_register(retio, *(int*)&save_dpi_color_check_val);
|
return write_register(retio, *(int*)&save_dpi_color_check_val);
|
||||||
}
|
}
|
||||||
|
int hg_scanner_302::set_auto_flat(void)
|
||||||
|
{
|
||||||
|
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
||||||
|
}
|
||||||
int hg_scanner_302::set_notify_sleep()
|
int hg_scanner_302::set_notify_sleep()
|
||||||
{
|
{
|
||||||
int val = 0,
|
int val = 0,
|
||||||
|
|
|
@ -121,4 +121,5 @@ public:
|
||||||
virtual int set_speed_mode(int data) override; //设置速度模式 /*/ data:40,50,60,70
|
virtual int set_speed_mode(int data) override; //设置速度模式 /*/ data:40,50,60,70
|
||||||
virtual int get_speed_mode(int& data)override; //获取速度模式 /*/ data:40,50,60,70
|
virtual int get_speed_mode(int& data)override; //获取速度模式 /*/ data:40,50,60,70
|
||||||
virtual int set_dpi_color_check_val(void) override; //设置畸变矫正
|
virtual int set_dpi_color_check_val(void) override; //设置畸变矫正
|
||||||
|
virtual int set_auto_flat(void) override; //设置自动平场校正
|
||||||
};
|
};
|
||||||
|
|
|
@ -58,6 +58,12 @@ namespace settingsdsp_400
|
||||||
case setting3288dsp::SIZE_ERROR:
|
case setting3288dsp::SIZE_ERROR:
|
||||||
code = SCANNER_ERR_DEVICE_SIZE_CHECK;
|
code = SCANNER_ERR_DEVICE_SIZE_CHECK;
|
||||||
break;
|
break;
|
||||||
|
case setting3288dsp::AUTO_FLAT_FINISHED:
|
||||||
|
code = SCANNER_ERR_DEVICE_AUTO_FAIL_OVER;
|
||||||
|
break;
|
||||||
|
case setting3288dsp::AUTO_FLATTING:
|
||||||
|
code = SCANNER_ERR_DEVICE_AUTO_FAIL_INFO;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
code = SCANNER_ERR_NO_DATA;
|
code = SCANNER_ERR_NO_DATA;
|
||||||
break;
|
break;
|
||||||
|
@ -118,18 +124,50 @@ void hg_scanner_400::thread_handle_usb_read(void)
|
||||||
statu = last_usb_image_statu(ret);
|
statu = last_usb_image_statu(ret);
|
||||||
savestatus_.push_back(ret);
|
savestatus_.push_back(ret);
|
||||||
}
|
}
|
||||||
else
|
else if (ret != SCANNER_ERR_NO_DATA && ret != SCANNER_ERR_DEVICE_AUTO_FAIL_OVER && ret != SCANNER_ERR_DEVICE_AUTO_FAIL_INFO)
|
||||||
|
{
|
||||||
statu = SANE_Image_Statu_OK;
|
statu = SANE_Image_Statu_OK;
|
||||||
|
}
|
||||||
|
else if (ret == SCANNER_ERR_DEVICE_AUTO_FAIL_OVER)
|
||||||
|
{
|
||||||
|
status_ = ret;
|
||||||
|
std::string msg;
|
||||||
|
int count = usb.u32_Count;
|
||||||
|
msg.resize(count);
|
||||||
|
|
||||||
|
ret = io_->read_bulk(&msg[0], &count);
|
||||||
|
if (ret == SCANNER_ERR_OK)
|
||||||
|
notify_ui_working_status(msg.c_str(), SANE_EVENT_STATUS, status_);
|
||||||
|
else
|
||||||
|
status_ = ret;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if (ret == SCANNER_ERR_DEVICE_AUTO_FAIL_INFO)
|
||||||
|
{
|
||||||
|
sw.reset();
|
||||||
|
status_ = ret;
|
||||||
|
|
||||||
|
std::string msg;
|
||||||
|
int count = usb.u32_Count;
|
||||||
|
msg.resize(count);
|
||||||
|
ret = io_->read_bulk(&msg[0], &count);
|
||||||
|
if (ret == SCANNER_ERR_OK)
|
||||||
|
{
|
||||||
|
char buf[1024];
|
||||||
|
strcpy(buf, msg.c_str());
|
||||||
|
notify_ui_working_status(buf, SANE_EVENT_STATUS, status_);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
status_ = ret;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (sw.elapsed_s() > 30)//防止状态信息一直取不上来导致卡死
|
if (sw.elapsed_s() > 30)//防止状态信息一直取不上来导致卡死
|
||||||
{
|
{
|
||||||
if (!savestatus_.empty())
|
status_ = !savestatus_.empty() ? savestatus_[0] : SCANNER_ERR_TIMEOUT;
|
||||||
{
|
|
||||||
status_ = savestatus_[0];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
status_ = SCANNER_ERR_TIMEOUT;
|
|
||||||
}
|
|
||||||
savestatus_.clear();
|
savestatus_.clear();
|
||||||
hg_log::log(LOG_LEVEL_WARNING, "get status timeout,get image out\n");
|
hg_log::log(LOG_LEVEL_WARNING, "get status timeout,get image out\n");
|
||||||
break;
|
break;
|
||||||
|
@ -817,6 +855,26 @@ int hg_scanner_400::set_dpi_color_check_val(void)
|
||||||
//int ratio = cmd.u32_Data;
|
//int ratio = cmd.u32_Data;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int hg_scanner_400::set_auto_flat(void)
|
||||||
|
{
|
||||||
|
USBCB usbcb = { setting3288dsp::START_FLAT,0,0 };
|
||||||
|
int len = sizeof(usbcb);
|
||||||
|
int ret = writeusb(usbcb);
|
||||||
|
|
||||||
|
if (ret == SCANNER_ERR_OK && wait_usb_.is_waiting())
|
||||||
|
{
|
||||||
|
//status_ = SCANNER_ERR_DEVICE_BUSY;
|
||||||
|
wait_usb_.notify();
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(300));
|
||||||
|
ret = try_third_app_after_start(ret);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
status_ = ret;
|
||||||
|
VLOG_MINI_1(LOG_LEVEL_WARNING, "set_auto_flat ret: %s\n", hg_scanner_err_name(ret));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
int hg_scanner_400::set_notify_sleep()
|
int hg_scanner_400::set_notify_sleep()
|
||||||
{
|
{
|
||||||
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
||||||
|
|
|
@ -103,4 +103,5 @@ public:
|
||||||
virtual int set_speed_mode(int data) override; //设置速度模式 /*/ data:40,50,60,70,80
|
virtual int set_speed_mode(int data) override; //设置速度模式 /*/ data:40,50,60,70,80
|
||||||
virtual int get_speed_mode(int &data) override; //设置速度模式 /*/ data:40,50,60,70,80
|
virtual int get_speed_mode(int &data) override; //设置速度模式 /*/ data:40,50,60,70,80
|
||||||
virtual int set_dpi_color_check_val(void) override; //设置畸变矫正
|
virtual int set_dpi_color_check_val(void) override; //设置畸变矫正
|
||||||
|
virtual int set_auto_flat(void); //设置自动平场校正
|
||||||
};
|
};
|
||||||
|
|
|
@ -1236,6 +1236,10 @@ int hg_scanner_402::set_dpi_color_check_val(void)
|
||||||
|
|
||||||
return write_register(retio, *(int*)&save_dpi_color_check_val);
|
return write_register(retio, *(int*)&save_dpi_color_check_val);
|
||||||
}
|
}
|
||||||
|
int hg_scanner_402::set_auto_flat(void)
|
||||||
|
{
|
||||||
|
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
||||||
|
}
|
||||||
int hg_scanner_402::set_notify_sleep()
|
int hg_scanner_402::set_notify_sleep()
|
||||||
{
|
{
|
||||||
int val = 0,
|
int val = 0,
|
||||||
|
|
|
@ -121,4 +121,5 @@ public:
|
||||||
virtual int set_speed_mode(int data) override; //设置速度模式 /*/ data:40,50,60,70,80
|
virtual int set_speed_mode(int data) override; //设置速度模式 /*/ data:40,50,60,70,80
|
||||||
virtual int get_speed_mode(int &data) override; //设置速度模式 /*/ data:40,50,60,70,80
|
virtual int get_speed_mode(int &data) override; //设置速度模式 /*/ data:40,50,60,70,80
|
||||||
virtual int set_dpi_color_check_val(void) override; //设置畸变矫正
|
virtual int set_dpi_color_check_val(void) override; //设置畸变矫正
|
||||||
|
virtual int set_auto_flat(void) override; //设置自动平场校正
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue