增加自动校正流程
This commit is contained in:
parent
dd2ccf4499
commit
8b2045592f
|
@ -727,6 +727,7 @@ namespace setting3288dsp
|
||||||
V4L2_IMAGE_EMPTY = 80, //扫描仪内部图片丢失
|
V4L2_IMAGE_EMPTY = 80, //扫描仪内部图片丢失
|
||||||
SLEEPING = 81, //处于休眠中
|
SLEEPING = 81, //处于休眠中
|
||||||
HAVE_DOGEAR = 82, //检测到有折角
|
HAVE_DOGEAR = 82, //检测到有折角
|
||||||
|
AUTO_FLATTING = 198,//自动校正中
|
||||||
USB_DISCONNECTED = 200, //USB 未连接
|
USB_DISCONNECTED = 200, //USB 未连接
|
||||||
USER_STOP = 201, //用户点击停止
|
USER_STOP = 201, //用户点击停止
|
||||||
AUTO_FLAT_FINISHED = 202, //自动校正完成
|
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));
|
return set_devreboot(*((int*)data));
|
||||||
}
|
}
|
||||||
|
else if (code == IO_CTRL_CODE_SET_AUTO_FALT)
|
||||||
|
{
|
||||||
|
return set_auto_flat();
|
||||||
|
}
|
||||||
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)
|
||||||
|
@ -3477,6 +3481,10 @@ int hg_scanner::set_dpi_color_check_val(void)
|
||||||
{
|
{
|
||||||
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
||||||
}
|
}
|
||||||
|
int hg_scanner::set_auto_flat(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
int hg_scanner::set_leaflet_scan(void)
|
int hg_scanner::set_leaflet_scan(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -476,6 +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) ; //设置自动平场校正
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef UOS
|
#ifdef UOS
|
||||||
|
|
|
@ -53,9 +53,15 @@ namespace settingsdsp_300
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
return code;
|
return code;
|
||||||
|
@ -111,16 +117,38 @@ void hg_scanner_300::thread_handle_usb_read(void)
|
||||||
savestatus_.clear();
|
savestatus_.clear();
|
||||||
break;
|
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);
|
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)
|
||||||
|
//{
|
||||||
|
// 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;
|
SANE_Bool is_paperon = false;
|
||||||
get_scanner_paperon(is_paperon);
|
get_scanner_paperon(is_paperon);
|
||||||
|
@ -130,8 +158,6 @@ void hg_scanner_300::thread_handle_usb_read(void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (sw.elapsed_ms() > 20000)//防止状态信息一直取不上来导致卡死
|
if (sw.elapsed_ms() > 20000)//防止状态信息一直取不上来导致卡死
|
||||||
{
|
{
|
||||||
status_ = !savestatus_.empty() ? savestatus_[0] : SCANNER_ERR_TIMEOUT;//以第一个消息为准
|
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;
|
//int ratio = cmd.u32_Data;
|
||||||
return ret;
|
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()
|
int hg_scanner_300::set_notify_sleep()
|
||||||
{
|
{
|
||||||
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
|
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 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; //设置自动平场校正
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue