增加自动校正流程
This commit is contained in:
parent
dd2ccf4499
commit
8b2045592f
|
@ -727,6 +727,7 @@ namespace setting3288dsp
|
|||
V4L2_IMAGE_EMPTY = 80, //扫描仪内部图片丢失
|
||||
SLEEPING = 81, //处于休眠中
|
||||
HAVE_DOGEAR = 82, //检测到有折角
|
||||
AUTO_FLATTING = 198,//自动校正中
|
||||
USB_DISCONNECTED = 200, //USB 未连接
|
||||
USER_STOP = 201, //用户点击停止
|
||||
AUTO_FLAT_FINISHED = 202, //自动校正完成
|
||||
|
|
|
@ -3384,6 +3384,10 @@ int hg_scanner::device_io_control(unsigned long code, void* data, unsigned* len)
|
|||
{
|
||||
return set_devreboot(*((int*)data));
|
||||
}
|
||||
else if (code == IO_CTRL_CODE_SET_AUTO_FALT)
|
||||
{
|
||||
return set_auto_flat();
|
||||
}
|
||||
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
||||
}
|
||||
std::string hg_scanner::get_firmware_version(void)
|
||||
|
@ -3477,6 +3481,10 @@ int hg_scanner::set_dpi_color_check_val(void)
|
|||
{
|
||||
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
||||
}
|
||||
int hg_scanner::set_auto_flat(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
int hg_scanner::set_leaflet_scan(void)
|
||||
{
|
||||
|
|
|
@ -476,6 +476,7 @@ public:
|
|||
virtual int get_speed_mode(int &data) = 0; //获取速度模式 /*/ 设备不同值不同,详情见子类注释
|
||||
virtual int set_dpi_color_check(bool type); //获取畸变矫正
|
||||
virtual int set_dpi_color_check_val(void) = 0; //设置畸变矫正值
|
||||
virtual int set_auto_flat(void) ; //设置自动平场校正
|
||||
};
|
||||
|
||||
#ifdef UOS
|
||||
|
|
|
@ -53,9 +53,15 @@ namespace settingsdsp_300
|
|||
case setting3288dsp::SIZE_ERROR:
|
||||
code = SCANNER_ERR_DEVICE_SIZE_CHECK;
|
||||
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:
|
||||
code = SCANNER_ERR_NO_DATA;
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
return code;
|
||||
|
@ -111,16 +117,38 @@ void hg_scanner_300::thread_handle_usb_read(void)
|
|||
savestatus_.clear();
|
||||
break;
|
||||
}
|
||||
if (ret != SCANNER_ERR_OK && ret != SCANNER_ERR_DEVICE_STOPPED && ret != SCANNER_ERR_NO_DATA)
|
||||
if (ret != SCANNER_ERR_OK && ret != SCANNER_ERR_DEVICE_STOPPED && ret != SCANNER_ERR_NO_DATA && ret != SCANNER_ERR_DEVICE_AUTO_FAIL_INFO && ret != SCANNER_ERR_DEVICE_AUTO_FAIL_OVER)
|
||||
{
|
||||
statu = last_usb_image_statu(ret);
|
||||
savestatus_.push_back(ret);
|
||||
}
|
||||
else if (ret != SCANNER_ERR_NO_DATA)
|
||||
//else if (ret != SCANNER_ERR_NO_DATA)
|
||||
//{
|
||||
// statu = SANE_Image_Statu_OK;
|
||||
//}
|
||||
else if (ret == SCANNER_ERR_DEVICE_AUTO_FAIL_OVER)
|
||||
{
|
||||
statu = SANE_Image_Statu_OK;
|
||||
std::string msg;
|
||||
msg.resize(usb.u32_Count);
|
||||
int count = usb.u32_Count;
|
||||
io_->read_bulk(&msg[0], &count);
|
||||
status_ = SCANNER_ERR_DEVICE_AUTO_FAIL_OVER;
|
||||
//notify_ui_working_status(msg.c_str(), SANE_EVENT_STATUS, status_);
|
||||
break;
|
||||
}
|
||||
else if (ret == SCANNER_ERR_NO_DATA && savestatus_.empty() &&sw.elapsed_ms() > 5000)
|
||||
else if (ret == SCANNER_ERR_DEVICE_AUTO_FAIL_INFO)
|
||||
{
|
||||
std::string msg;
|
||||
msg.resize(usb.u32_Count);
|
||||
int count = usb.u32_Count;
|
||||
io_->read_bulk(&msg[0], &count);
|
||||
status_ = SCANNER_ERR_DEVICE_AUTO_FAIL_INFO;
|
||||
char buf[1024];
|
||||
strcpy(buf, msg.c_str());
|
||||
notify_ui_working_status(buf, SANE_EVENT_STATUS, status_);
|
||||
}
|
||||
|
||||
if (ret == SCANNER_ERR_NO_DATA && savestatus_.empty() && sw.elapsed_ms() > 5000)
|
||||
{
|
||||
SANE_Bool is_paperon = false;
|
||||
get_scanner_paperon(is_paperon);
|
||||
|
@ -130,8 +158,6 @@ void hg_scanner_300::thread_handle_usb_read(void)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (sw.elapsed_ms() > 20000)//防止状态信息一直取不上来导致卡死
|
||||
{
|
||||
status_ = !savestatus_.empty() ? savestatus_[0] : SCANNER_ERR_TIMEOUT;//以第一个消息为准
|
||||
|
@ -810,6 +836,24 @@ int hg_scanner_300::set_dpi_color_check_val(void)
|
|||
//int ratio = cmd.u32_Data;
|
||||
return ret;
|
||||
}
|
||||
int hg_scanner_300::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_300::set_notify_sleep()
|
||||
{
|
||||
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
||||
|
|
|
@ -100,4 +100,5 @@ public:
|
|||
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 set_dpi_color_check_val(void) override; //设置畸变矫正
|
||||
virtual int set_auto_flat(void)override; //设置自动平场校正
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue