mirror of http://192.168.1.51:8099/lmh188/twain3.0
1.移除跳过空白页无用协议 TwEx_DBAreaNum = 0x8027 TwEx_DBDevnMax
2.修改跳过空白页设置失败bug 3.修改跳过空白页发票Get方法映射结构体错误问题 4.修改自动裁切算法相关参数协议以及外协检测等级、低功耗值类型(Int32) 5.修改颜色增强协议SET方法中逻辑异常问题 6.修改歪斜检测协议实现;
This commit is contained in:
parent
9ae4e27f3e
commit
61f4917aee
|
@ -149,7 +149,7 @@ typedef struct tagDetachNoise
|
|||
}DetachNoise;
|
||||
|
||||
|
||||
enum LowPowerMode :byte {
|
||||
enum LowPowerMode :unsigned int {
|
||||
Min_None = 0,
|
||||
Min_5,
|
||||
Min_10,
|
||||
|
|
|
@ -43,8 +43,6 @@ enum class CapTypeEx : unsigned short {
|
|||
TwEx_ScrewDetectEnable = 0x8006,
|
||||
TwEx_ScrewLevel = 0x8021,
|
||||
TwEx_Sharpen = 0x8022,
|
||||
TwEx_DBAreaNum = 0x8027,
|
||||
TwEx_DBDevnMax = 0x8028,
|
||||
TwEx_EnFold = 0x8037,
|
||||
TwEx_StableDetectEnable = 0x8090,
|
||||
TwEx_UVModel = 0x8093,
|
||||
|
@ -1397,16 +1395,23 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
m_caps[CapType::IAutoDiscardBlankPages] = [this](Msg msg, Capability& data)->Result {
|
||||
if (Msg::Set == msg) {
|
||||
auto mech = data.currentItem<CapType::IAutoDiscardBlankPages>();
|
||||
if ((mech != DiscardBlankPages::Auto) || (mech != DiscardBlankPages::Disabled))
|
||||
return badValue();
|
||||
m_scanparam->is_autodiscradblank_normal = (Int32)mech == (Int32)DiscardBlankPages::Auto;
|
||||
if (mech == DiscardBlankPages::Auto) {
|
||||
if ((mech == DiscardBlankPages::Auto) || (mech == DiscardBlankPages::Disabled)||((int)mech == 65535))
|
||||
{
|
||||
if ((int)mech == 65535 || mech == DiscardBlankPages::Auto)
|
||||
{
|
||||
m_scanparam->is_autodiscradblank_normal = 1;
|
||||
m_scanparam->is_duplex = 1;
|
||||
m_scanparam->en_fold = 0;
|
||||
m_scanparam->is_autodiscradblank_vince = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_scanparam->is_autodiscradblank_normal = 0;
|
||||
}
|
||||
return success();
|
||||
}
|
||||
return badValue();
|
||||
}
|
||||
DiscardBlankPages autodiscradblank;
|
||||
if (Msg::GetDefault == msg || (Msg::Reset == msg)) {
|
||||
m_scanparam->is_autodiscradblank_normal = false;
|
||||
|
@ -1430,7 +1435,8 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
m_scanparam->is_autodiscradblank_normal = 0;
|
||||
return success();
|
||||
}
|
||||
return CapSupGetAllResetEx<BYTE, Bool, (CapType)CapTypeEx::TwEx_IAutoDiscardBlankVince>(msg, data, { FALSE,TRUE }, m_scanparam->is_autodiscradblank_normal, Bool(false), m_scanparam->is_autodiscradblank_normal ? 1 : 0, 0);
|
||||
//return CapSupGetAllResetEx<BYTE, Bool, (CapType)CapTypeEx::TwEx_IAutoDiscardBlankVince>(msg, data, { FALSE,TRUE }, m_scanparam->is_autodiscradblank_vince, Bool(false), m_scanparam->is_autodiscradblank_vince ? 1 : 0, 0);
|
||||
return oneValGet<Bool>(msg, data, Bool(m_scanparam->is_autodiscradblank_vince));
|
||||
};
|
||||
|
||||
m_query[(CapType)(CapTypeEx::TwEx_IBackRotate180)] = msgSupportGetAllSetReset;
|
||||
|
@ -1459,38 +1465,38 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
m_query[(CapType)(CapTypeEx::TwEx_CroporDesaskewIndent)] = msgSupportGetAllSetReset;
|
||||
m_caps[(CapType)(CapTypeEx::TwEx_CroporDesaskewIndent)] = [this](Msg msg, Capability& data)->Result {
|
||||
if (Msg::Set == msg) {
|
||||
auto mech = data.currentItem<UInt8>();
|
||||
auto mech = data.currentItem<UInt32>();
|
||||
if ((mech > 30 || mech < 5) && ((bool)m_scanparam->is_autocrop == true))
|
||||
return badValue();
|
||||
m_scanparam->indent = mech;
|
||||
return success();
|
||||
}
|
||||
return CapSupGetAllResetEx<int, UInt8, (CapType)CapTypeEx::TwEx_CroporDesaskewIndent>(msg, data, m_scanparam->indent, 5);
|
||||
return CapSupGetAllResetEx<int, UInt32, (CapType)CapTypeEx::TwEx_CroporDesaskewIndent>(msg, data, m_scanparam->indent, 5);
|
||||
};
|
||||
//自动裁剪降噪像素
|
||||
m_query[(CapType)(CapTypeEx::TwEx_CropNoise)] = msgSupportGetAllSetReset;
|
||||
m_caps[(CapType)(CapTypeEx::TwEx_CropNoise)] = [this](Msg msg, Capability& data)->Result {
|
||||
if (Msg::Set == msg) {
|
||||
auto mech = data.currentItem<UInt8>();
|
||||
if ((mech > 50 || mech < 30) && ((bool)m_scanparam->is_autocrop == true))
|
||||
auto mech = data.currentItem<UInt32>();
|
||||
if ((mech > 50 || mech < 0) && ((bool)m_scanparam->is_autocrop == true))
|
||||
return badValue();
|
||||
m_scanparam->noise = mech;
|
||||
return success();
|
||||
}
|
||||
return CapSupGetAllResetEx<int, UInt8, (CapType)CapTypeEx::TwEx_CropNoise>(msg, data, m_scanparam->noise, 8);
|
||||
return CapSupGetAllResetEx<int, UInt32, (CapType)CapTypeEx::TwEx_CropNoise>(msg, data, m_scanparam->noise, 8);
|
||||
};
|
||||
//自动裁切和纠偏的二值化阀值
|
||||
m_query[(CapType)(CapTypeEx::TwEx_CroporDesaskewThreshold)] = msgSupportGetAllSetReset;
|
||||
m_caps[(CapType)(CapTypeEx::TwEx_CroporDesaskewThreshold)] = [this](Msg msg, Capability& data)->Result {
|
||||
if (Msg::Set == msg) {
|
||||
auto mech = data.currentItem<UInt8>();
|
||||
auto mech = data.currentItem<UInt32>();
|
||||
|
||||
if ((mech > 50 || mech < 30) && ((bool)m_scanparam->is_autocrop == true))
|
||||
return badValue();
|
||||
m_scanparam->AutoCrop_threshold = mech;
|
||||
return success();
|
||||
}
|
||||
return CapSupGetAllResetEx<int, UInt8, (CapType)CapTypeEx::TwEx_CroporDesaskewThreshold>(msg, data, m_scanparam->AutoCrop_threshold, 40);
|
||||
return CapSupGetAllResetEx<int, UInt32, (CapType)CapTypeEx::TwEx_CroporDesaskewThreshold>(msg, data, m_scanparam->AutoCrop_threshold, 40);
|
||||
};
|
||||
//黑框填充方式
|
||||
m_query[(CapType)(CapTypeEx::TwEx_FillBackgroundMode)] = msgSupportGetAllSetReset;
|
||||
|
@ -1776,20 +1782,23 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
m_scanparam->hardwarecaps.en_skrewdetect = mech;
|
||||
return success();
|
||||
}
|
||||
return CapSupGetAllResetEx<BYTE, Bool, (CapType)CapTypeEx::TwEx_ScrewDetectEnable>(msg, data, { FALSE,TRUE }, m_scanparam->sharpen, TRUE, m_scanparam->hardwarecaps.en_skrewdetect ? 1 : 0, 1);
|
||||
Bool en = m_scanparam->hardwarecaps.en_skrewdetect == 0 ? Bool(false) : Bool(true);
|
||||
//return CapSupGetAllReset<Bool, Bool, (CapType)(CapTypeEx::TwEx_ScrewDetectEnable)>(msg, data,en , Bool(true));
|
||||
return CapSupGetAllResetEx<BYTE, Bool, (CapType)CapTypeEx::TwEx_ScrewDetectEnable>(msg, data, { FALSE ,TRUE }, m_scanparam->hardwarecaps.en_skrewdetect, TRUE, m_scanparam->hardwarecaps.en_skrewdetect ? 1 : 0, 1);
|
||||
};
|
||||
|
||||
m_query[(CapType)(CapTypeEx::TwEx_ScrewLevel)] = msgSupportGetAllSetReset;
|
||||
m_caps[(CapType)(CapTypeEx::TwEx_ScrewLevel)] = [this](Msg msg, Capability& data)->Result {
|
||||
if (Msg::Set == msg) {
|
||||
auto mech = data.currentItem<UInt8>();
|
||||
auto mech = data.currentItem<UInt32>();
|
||||
if (mech >= 1 && mech <= 5) {
|
||||
m_scanparam->hardwarecaps.skrewdetectlevel = mech;
|
||||
return success();
|
||||
}
|
||||
return badValue();
|
||||
}
|
||||
return CapSupGetAllResetEx<BYTE, UInt8, (CapType)CapTypeEx::TwEx_ScrewLevel>(msg, data, m_scanparam->hardwarecaps.skrewdetectlevel, 3);
|
||||
return CapSupGetAllResetEx<BYTE, UInt32, (CapType)CapTypeEx::TwEx_ScrewLevel>(msg, data, m_scanparam->hardwarecaps.skrewdetectlevel, (UInt32)3);
|
||||
//return oneValGetSet<UInt8>(msg,data,m_scanparam->hardwarecaps.skrewdetectlevel,3);
|
||||
};
|
||||
//装订检测
|
||||
m_query[(CapType)(CapTypeEx::TwEx_StableDetectEnable)] = msgSupportGetAllSetReset;
|
||||
|
@ -1797,9 +1806,10 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
if (Msg::Set == msg) {
|
||||
auto mech = data.currentItem<Bool>();
|
||||
m_scanparam->hardwarecaps.en_stapledetect = mech;
|
||||
|
||||
return success();
|
||||
}
|
||||
return CapSupGetAllResetEx<BYTE, UInt8, (CapType)CapTypeEx::TwEx_StableDetectEnable>(msg, data, { FALSE,TRUE }, m_scanparam->hardwarecaps.en_stapledetect, FALSE, m_scanparam->hardwarecaps.en_stapledetect ? 1 : 0, 0);
|
||||
return CapSupGetAllResetEx<BYTE, Bool, (CapType)CapTypeEx::TwEx_StableDetectEnable>(msg, data, { FALSE,TRUE }, m_scanparam->hardwarecaps.en_stapledetect, FALSE, m_scanparam->hardwarecaps.en_stapledetect==0 ? 0 : 1, 0);
|
||||
};
|
||||
|
||||
m_query[(CapType)(CapTypeEx::TwEx_DogEarDelection)] = msgSupportGetAllSetReset;
|
||||
|
@ -1848,11 +1858,11 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
m_query[(CapType)(CapTypeEx::TwEx_LowPowerMode)] = msgSupportGetAllSetReset;
|
||||
m_caps[(CapType)(CapTypeEx::TwEx_LowPowerMode)] = [this](Msg msg, Capability& data)->Result {
|
||||
if (Msg::Set == msg) {
|
||||
auto mech = data.currentItem<BYTE>();
|
||||
auto mech = data.currentItem<UInt32>();
|
||||
m_scanparam->hardwarecaps.lowpowermode = (LowPowerMode)mech;
|
||||
return success();
|
||||
}
|
||||
return CapSupGetAllResetEx<LowPowerMode, BYTE, (CapType)CapTypeEx::TwEx_LowPowerMode>(msg, data,
|
||||
return CapSupGetAllResetEx<LowPowerMode, UInt32, (CapType)CapTypeEx::TwEx_LowPowerMode>(msg, data,
|
||||
{ LowPowerMode::Min_None,LowPowerMode::Min_5,LowPowerMode::Min_10,LowPowerMode::Min_20, LowPowerMode::Min_30, LowPowerMode::Min_60, LowPowerMode::Min_120, LowPowerMode::Min_240 },
|
||||
m_scanparam->hardwarecaps.lowpowermode, LowPowerMode::Min_30, (BYTE)m_scanparam->hardwarecaps.lowpowermode, 4);
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue