diff --git a/huagao/Device/PublicFunc.h b/huagao/Device/PublicFunc.h index 901c1470..c9ca89ff 100644 --- a/huagao/Device/PublicFunc.h +++ b/huagao/Device/PublicFunc.h @@ -149,7 +149,7 @@ typedef struct tagDetachNoise }DetachNoise; -enum LowPowerMode :byte { +enum LowPowerMode :unsigned int { Min_None = 0, Min_5, Min_10, diff --git a/huagao/huagaods.cpp b/huagao/huagaods.cpp index 34e9e272..7bea23e5 100644 --- a/huagao/huagaods.cpp +++ b/huagao/huagaods.cpp @@ -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,15 +1395,22 @@ Result HuagaoDs::identityOpenDs(const Identity&) { m_caps[CapType::IAutoDiscardBlankPages] = [this](Msg msg, Capability& data)->Result { if (Msg::Set == msg) { auto mech = data.currentItem(); - if ((mech != DiscardBlankPages::Auto) || (mech != DiscardBlankPages::Disabled)) - return badValue(); - m_scanparam->is_autodiscradblank_normal = (Int32)mech == (Int32)DiscardBlankPages::Auto; - if (mech == DiscardBlankPages::Auto) { - m_scanparam->is_duplex = 1; - m_scanparam->en_fold = 0; - m_scanparam->is_autodiscradblank_vince = 0; + 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 success(); + return badValue(); } DiscardBlankPages autodiscradblank; if (Msg::GetDefault == msg || (Msg::Reset == msg)) { @@ -1430,7 +1435,8 @@ Result HuagaoDs::identityOpenDs(const Identity&) { m_scanparam->is_autodiscradblank_normal = 0; return success(); } - return CapSupGetAllResetEx(msg, data, { FALSE,TRUE }, m_scanparam->is_autodiscradblank_normal, Bool(false), m_scanparam->is_autodiscradblank_normal ? 1 : 0, 0); + //return CapSupGetAllResetEx(msg, data, { FALSE,TRUE }, m_scanparam->is_autodiscradblank_vince, Bool(false), m_scanparam->is_autodiscradblank_vince ? 1 : 0, 0); + return oneValGet(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(); + auto mech = data.currentItem(); if ((mech > 30 || mech < 5) && ((bool)m_scanparam->is_autocrop == true)) return badValue(); m_scanparam->indent = mech; return success(); } - return CapSupGetAllResetEx(msg, data, m_scanparam->indent, 5); + return CapSupGetAllResetEx(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(); - if ((mech > 50 || mech < 30) && ((bool)m_scanparam->is_autocrop == true)) + auto mech = data.currentItem(); + if ((mech > 50 || mech < 0) && ((bool)m_scanparam->is_autocrop == true)) return badValue(); m_scanparam->noise = mech; return success(); } - return CapSupGetAllResetEx(msg, data, m_scanparam->noise, 8); + return CapSupGetAllResetEx(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(); + auto mech = data.currentItem(); if ((mech > 50 || mech < 30) && ((bool)m_scanparam->is_autocrop == true)) return badValue(); m_scanparam->AutoCrop_threshold = mech; return success(); } - return CapSupGetAllResetEx(msg, data, m_scanparam->AutoCrop_threshold, 40); + return CapSupGetAllResetEx(msg, data, m_scanparam->AutoCrop_threshold, 40); }; //黑框填充方式 m_query[(CapType)(CapTypeEx::TwEx_FillBackgroundMode)] = msgSupportGetAllSetReset; @@ -1599,7 +1605,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) { { m_scanparam->enhance_color = (BYTE)Enchace_Color::Enhance_None; m_scanparam->filter = (BYTE)Filter::None; - return badValue(); + return badValue(); } else { @@ -1776,20 +1782,23 @@ Result HuagaoDs::identityOpenDs(const Identity&) { m_scanparam->hardwarecaps.en_skrewdetect = mech; return success(); } - return CapSupGetAllResetEx(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(msg, data,en , Bool(true)); + return CapSupGetAllResetEx(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(); + auto mech = data.currentItem(); if (mech >= 1 && mech <= 5) { m_scanparam->hardwarecaps.skrewdetectlevel = mech; return success(); } return badValue(); } - return CapSupGetAllResetEx(msg, data, m_scanparam->hardwarecaps.skrewdetectlevel, 3); + return CapSupGetAllResetEx(msg, data, m_scanparam->hardwarecaps.skrewdetectlevel, (UInt32)3); + //return oneValGetSet(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(); m_scanparam->hardwarecaps.en_stapledetect = mech; + return success(); } - return CapSupGetAllResetEx(msg, data, { FALSE,TRUE }, m_scanparam->hardwarecaps.en_stapledetect, FALSE, m_scanparam->hardwarecaps.en_stapledetect ? 1 : 0, 0); + return CapSupGetAllResetEx(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(); + auto mech = data.currentItem(); m_scanparam->hardwarecaps.lowpowermode = (LowPowerMode)mech; return success(); } - return CapSupGetAllResetEx(msg, data, + return CapSupGetAllResetEx(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); };