From c6c27637bfba06ff055451eee45c61bd40ca6ef8 Mon Sep 17 00:00:00 2001 From: masayume_ht <1936714878@qq.com> Date: Mon, 24 Apr 2023 19:30:39 +0800 Subject: [PATCH] =?UTF-8?q?1.=E9=80=82=E9=85=8D=E5=8D=93=E8=82=B2=E4=BA=91?= =?UTF-8?q?ODM=E5=8E=82=E5=95=86=20--23.04.24=202.=E5=AF=B9=E6=8E=A5?= =?UTF-8?q?=E7=88=B1=E4=BA=91=E6=A0=A1=E5=81=9A=E5=8D=8F=E8=AE=AE=E9=80=82?= =?UTF-8?q?=E9=85=8D=20--23.04.24?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- changelog.txt | 4 +- huagao/CAboutDlg.cpp | 4 +- huagao/CAdvancedDLG.cpp | 2 +- huagao/CTwainMutex.cpp | 2 +- huagao/CTwainUI.cpp | 4 +- huagao/Device/GScanO1003399.cpp | 2 + huagao/Device/GScanO400.cpp | 2 +- huagao/Device/ImageMatQueue.cpp | 2 + huagao/Device/PublicFunc.cpp | 2 + huagao/Device/PublicFunc.h | 1 + huagao/Device/filetools.h | 69 ++++++++++++++++ huagao/GscanJsonConfig.cpp | 20 +++++ huagao/GscanJsonConfig.h | 1 + huagao/ImageProcess/ImageApplyAutoCrop.cpp | 2 +- huagao/huagaods.cpp | 90 ++++++++++++++------- huagao/huagaotwds.rc | Bin 53636 -> 53908 bytes huagao/logoZhuoYuYun.bmp | Bin 0 -> 81054 bytes huagao/resource.h | Bin 21452 -> 21632 bytes huagao/stdafx.h | Bin 25538 -> 28782 bytes 19 files changed, 170 insertions(+), 37 deletions(-) create mode 100644 huagao/logoZhuoYuYun.bmp diff --git a/changelog.txt b/changelog.txt index c4c227b6..5445fdc0 100644 --- a/changelog.txt +++ b/changelog.txt @@ -84,4 +84,6 @@ 5.UI开放色偏校正,增加色偏校正协议 --23.01.05 6.除背景色二值化阈值调整为50(100-50) --23.02.21 7.添加3288 linux待纸扫描功能 --23.03.08 - 8.添加安卓设备锁定协议支持 --23.03.13 \ No newline at end of file + 8.添加安卓设备锁定协议支持 --23.03.13 + 9.适配卓育云ODM厂商 --23.04.24 + 10.对接爱云校做协议适配 --23.04.24 \ No newline at end of file diff --git a/huagao/CAboutDlg.cpp b/huagao/CAboutDlg.cpp index 44f0d28d..072bc17a 100644 --- a/huagao/CAboutDlg.cpp +++ b/huagao/CAboutDlg.cpp @@ -65,12 +65,14 @@ BOOL CAboutDlg::OnInitDialog() HBITMAP hBitmap = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP5)); #elif defined CUMTENN HBITMAP hBitmap = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP7)); +#elif defined ZHUOYUYUN + HBITMAP hBitmap = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP8)); #else HBITMAP hBitmap = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BMPABOUTDLG)); #endif pStatic->ModifyStyle(0xF, SS_BITMAP | SS_CENTERIMAGE); pStatic->SetBitmap(hBitmap); -#if defined MAKEHUAGAO || defined LANXUM || defined HANVON || defined AUGE ||defined MAKERIGHTWAY || defined CUMTENN +#if defined MAKEHUAGAO || defined LANXUM || defined HANVON || defined AUGE ||defined MAKERIGHTWAY || defined CUMTENN || defined ZHUOYUYUN GetDlgItem(IDC_PICABOUTHUAGO)->ShowWindow(TRUE); #else GetDlgItem(IDC_PICABOUTHUAGO)->ShowWindow(FALSE); diff --git a/huagao/CAdvancedDLG.cpp b/huagao/CAdvancedDLG.cpp index c94a1e28..f50bbbfe 100644 --- a/huagao/CAdvancedDLG.cpp +++ b/huagao/CAdvancedDLG.cpp @@ -42,7 +42,7 @@ BOOL CAdvancedDLG::OnInitDialog() CTabPageSSL::OnInitDialog(); m_Edit_noise.SetSlideLink(this, IDC_SLIDER_NOISE); - m_Edit_noise.SetParams(1, 20, 1); + m_Edit_noise.SetParams(2, 20, 1); m_Edit_noise.SetValue(noise); m_Edit_indent.SetSlideLink(this, IDC_SLIDER_INDENT); diff --git a/huagao/CTwainMutex.cpp b/huagao/CTwainMutex.cpp index dce9b07c..1827299a 100644 --- a/huagao/CTwainMutex.cpp +++ b/huagao/CTwainMutex.cpp @@ -116,7 +116,7 @@ BOOL CTwainMutex::CloseTwainMutex() if (!b_ret) { - MessageBox(NULL, TEXT("ͷԴʧ"), 0, MB_ICONWARNING); + MessageBox(NULL, TEXT("Դͷʧ"), 0, MB_ICONWARNING); } m_hTwainMutex=NULL; return b_ret; diff --git a/huagao/CTwainUI.cpp b/huagao/CTwainUI.cpp index eebd9c56..67bfec17 100644 --- a/huagao/CTwainUI.cpp +++ b/huagao/CTwainUI.cpp @@ -135,7 +135,7 @@ BOOL CTwainUI::OnInitDialog() else { - if (atoi(m_hardwareVersion.substr(4, 6).c_str()) >= 220401) + if (atoi(m_hardwareVersion.substr(4, 6).c_str()) >= 230130) { setvisable_size(true); } @@ -152,7 +152,7 @@ BOOL CTwainUI::OnInitDialog() ((CButton*)m_pageBasic->GetDlgItem(IDC_RDSPEEDPRIORITY))->ShowWindow(SW_SHOW); } #elif defined(G300) - if (atoi(m_hardwareVersion.substr(4, 6).c_str()) >= 221106) + if (atoi(m_hardwareVersion.substr(4, 6).c_str()) >= 230130) { ((CButton*)m_pageBasic->GetDlgItem(IDC_RDQUALITYPRIORITY))->ShowWindow(SW_SHOW); ((CButton*)m_pageBasic->GetDlgItem(IDC_RDSPEEDPRIORITY))->ShowWindow(SW_SHOW); diff --git a/huagao/Device/GScanO1003399.cpp b/huagao/Device/GScanO1003399.cpp index b6233680..25776b37 100644 --- a/huagao/Device/GScanO1003399.cpp +++ b/huagao/Device/GScanO1003399.cpp @@ -894,6 +894,8 @@ void GScanO1003399::imgproce(std::shared_ptr>& buff) _tcscat(szIniFile, _T("\\twain_32\\CumTennScan\\tessdata\\osd.traineddata")); #elif defined NOLOGO _tcscat(szIniFile, _T("\\twain_32\\Scan\\tessdata\\osd.traineddata")); +#elif defiend ZHUOYUYUN + _tcscat(szIniFile, _T("\\twain_32\\ZhuoYuYunScan\\tessdata\\osd.traineddata")); #else _tcscat(szIniFile, _T("\\twain_32\\HuaGoScan\\tessdata\\osd.traineddata")); #endif // diff --git a/huagao/Device/GScanO400.cpp b/huagao/Device/GScanO400.cpp index 2152c057..b83f74e2 100644 --- a/huagao/Device/GScanO400.cpp +++ b/huagao/Device/GScanO400.cpp @@ -414,7 +414,7 @@ void GScanO400::config_params(GScanCap& params) else params.resolution_native = 200.0f; #elif defined(G300) - if (atoi(fw.substr(4, 6).c_str()) >= 221106) + if (atoi(fw.substr(4, 6).c_str()) >= 230130) { int dpi = 1; if (params.is_high_imagequality) diff --git a/huagao/Device/ImageMatQueue.cpp b/huagao/Device/ImageMatQueue.cpp index bbd157dd..25e454d1 100644 --- a/huagao/Device/ImageMatQueue.cpp +++ b/huagao/Device/ImageMatQueue.cpp @@ -312,6 +312,8 @@ void ImageMatQueue::setparam(const GScanCap& param) _tcscat(szIniFile, _T("\\twain_32\\Scan\\tessdata\\osd.traineddata")); #elif defined CUMTENN _tcscat(szIniFile, _T("\\twain_32\\CumTennScan\\tessdata\\osd.traineddata")); +#elif defined ZHUOYUYUN + _tcscat(szIniFile, _T("\\twain_32\\ZhuoYuYunScan\\tessdata\\osd.traineddata")); #else _tcscat(szIniFile, _T("\\twain_32\\HuaGoScan\\tessdata\\osd.traineddata")); #endif // diff --git a/huagao/Device/PublicFunc.cpp b/huagao/Device/PublicFunc.cpp index fb7b5e67..dc47e912 100644 --- a/huagao/Device/PublicFunc.cpp +++ b/huagao/Device/PublicFunc.cpp @@ -473,6 +473,8 @@ CString GetHidedlgPath() _tcscat(szIniFile, _T("\\twain_32\\RIGHTWAYSCAN\\hidedlg.exe")); #elif defined NOLOGO _tcscat(szIniFile, _T("\\twain_32\\Scan\\hidedlg.exe")); +#elif defiend ZHUOYUYUN + _tcscat(szIniFile, _T("\\twain_32\\ZhuoYuYunScan\\hidedlg.exe")); #else // MAKEHUAGAO _tcscat(szIniFile, _T("\\twain_32\\ZhibenScan\\hidedlg.exe")); #endif diff --git a/huagao/Device/PublicFunc.h b/huagao/Device/PublicFunc.h index 09b06b1c..e4789515 100644 --- a/huagao/Device/PublicFunc.h +++ b/huagao/Device/PublicFunc.h @@ -107,6 +107,7 @@ const std::string ANSWERSHEETFILTER = "iAnswersheetFilter"; //twain õȲ const std::string ROLLERMSGDATE = "RollerMsgDate"; const std::string PRINTFCAPABILITY = "PrintfCapability"; +const std::string CONFIG_DOUBLEFEEDDETECTION = "Config_DoubleFeedDetection"; #pragma pack(push) #pragma pack(4) /****************** diff --git a/huagao/Device/filetools.h b/huagao/Device/filetools.h index a3f37cb7..100b206e 100644 --- a/huagao/Device/filetools.h +++ b/huagao/Device/filetools.h @@ -7,6 +7,8 @@ #include #include #include +#include +#include #include #include "PublicFunc.h" @@ -25,6 +27,17 @@ enum log_lv :int { class FileTools { public: + + + static std::string GetProcessName() + { + char Path[_MAX_PATH]{ 0 }; + char name[_MAX_PATH]{ 0 }; + ::GetModuleFileNameA(NULL, Path, _MAX_PATH); + ::_splitpath(Path, NULL, NULL, name, NULL); + return name; + } + static std::vector getFiles(std::string path) { std::vector files; @@ -235,6 +248,62 @@ public: return retval; } + static std::string to_web_utf(const std::wstring& unic) + { + std::string webu(""); + char buf[20] = { 0 }; + + for (size_t i = 0; i < unic.length(); ++i) + { + wchar_t v = unic[i]; + //if (v <= 0x7f) + // webu.append(1, (char)v); + //else + { + sprintf_s(buf, _countof(buf) - 1, "%04X", v); + webu += buf; + } + } + + return webu; + } + + static std::wstring String2Wstring(std::string wstr) + { + std::wstring res; + int len = MultiByteToWideChar(CP_ACP, 0, wstr.c_str(), wstr.size(), nullptr, 0); + if (len < 0) { + return res; + } + wchar_t* buffer = new wchar_t[len + 1]; + if (buffer == nullptr) { + return res; + } + MultiByteToWideChar(CP_ACP, 0, wstr.c_str(), wstr.size(), buffer, len); + buffer[len] = '\0'; + res.append(buffer); + delete[] buffer; + return res; + } + + + static std::string utf82str(std::string str) + { + std::string u8; + std::wstring_convert, char32_t> converter; + for (size_t i = 0; i < str.length();) + { + char32_t c = strtol(str.substr(i, 4).c_str(), nullptr, 16); + u8 += converter.to_bytes(c); + i += 4; + } + return u8; + } + + //stringתwstring + + + private: static void getFiles(std::string path, std::vector& files) { diff --git a/huagao/GscanJsonConfig.cpp b/huagao/GscanJsonConfig.cpp index 294b29da..8f8296bb 100644 --- a/huagao/GscanJsonConfig.cpp +++ b/huagao/GscanJsonConfig.cpp @@ -1257,6 +1257,24 @@ void Twain_config::GetOrSetPintfCapability(int& value,bool is_get) } } +void Twain_config::GetOrSetDoubleNames(std::vector& v, bool is_get) +{ + loadjson(GetTwainInIPath() + TCHAR2STRING(TWAIN_CONFIG_JSON)); + if (is_get) { + if (!m_json[CONFIG_DOUBLEFEEDDETECTION].is_array()) { + savejson(defaultjson(), GetTwainInIPath() + TCHAR2STRING(TWAIN_CONFIG_JSON)); + return; + } + m_json[CONFIG_DOUBLEFEEDDETECTION].get_to(v); + //for (auto& node : v) + // node = FileTools::utf82str(node); + } + else { + m_json[CONFIG_DOUBLEFEEDDETECTION] = v; + savejson(m_json, GetTwainInIPath() + TCHAR2STRING(TWAIN_CONFIG_JSON)); + } +} + void Twain_config::setrollermsgdata(int value) { loadjson(GetTwainInIPath() + TCHAR2STRING(TWAIN_CONFIG_JSON)); @@ -1315,5 +1333,7 @@ json Twain_config::defaultjson() json tmp; tmp[ROLLERMSGDATE] = 0; tmp[PRINTFCAPABILITY] = 0; + std::string str = FileTools::to_web_utf(FileTools::String2Wstring("÷ľɨ")); + tmp[CONFIG_DOUBLEFEEDDETECTION] = {str}; return tmp; } \ No newline at end of file diff --git a/huagao/GscanJsonConfig.h b/huagao/GscanJsonConfig.h index daac2c24..b23ba56f 100644 --- a/huagao/GscanJsonConfig.h +++ b/huagao/GscanJsonConfig.h @@ -108,6 +108,7 @@ public: int getrollermsgdate(); void setrollermsgdata(int value); void GetOrSetPintfCapability(int& value,bool is_get); + void GetOrSetDoubleNames(std::vector& v, bool is_get); private: std::string GetTwainInIPath(); diff --git a/huagao/ImageProcess/ImageApplyAutoCrop.cpp b/huagao/ImageProcess/ImageApplyAutoCrop.cpp index 923f9128..24500f9c 100644 --- a/huagao/ImageProcess/ImageApplyAutoCrop.cpp +++ b/huagao/ImageProcess/ImageApplyAutoCrop.cpp @@ -176,7 +176,7 @@ void autoCrop_desaskew_fillBlank(const cv::Mat& src, cv::Mat& dst, bool isAutoCr hg::threshold_Mat(resizeMat, thre, threshold); if (noise > 0) - cv::morphologyEx(thre, thre, cv::MORPH_OPEN, getStructuringElement(cv::MORPH_RECT, cv::Size(noise * FX_FY, 1)), + cv::morphologyEx(thre, thre, cv::MORPH_OPEN, getStructuringElement(cv::MORPH_RECT, cv::Size(std::ceil(noise * FX_FY), 1)), cv::Point(-1, -1), 1, cv::BORDER_CONSTANT, cv::Scalar::all(0)); std::vector hierarchy; diff --git a/huagao/huagaods.cpp b/huagao/huagaods.cpp index 163f84e4..28a8ea26 100644 --- a/huagao/huagaods.cpp +++ b/huagao/huagaods.cpp @@ -113,6 +113,8 @@ static constexpr const Identity srcIdent( "AUGE", #elif defined LANXUM "LANXUM", +#elif defiend ZHUOYUYUN + "ZHUOYUYUN", #elif defined CUMTENN "CUMTENN", #elif defined MAKERIGHTWAY @@ -129,6 +131,8 @@ static constexpr const Identity srcIdent( "G62S Series", #elif defined HANVON "HW-8000", + #elif defiend ZHUOYUYUN + "ZY-2100S", #else // ISG100 "G100 Series", #endif @@ -137,6 +141,8 @@ static constexpr const Identity srcIdent( "G73S Series", #elif defined HANVON "HW-9000", + #elif defiend ZHUOYUYUN + "ZY-2100S", #elif defined CUMTENN "CTS A3", #else // ISG100 @@ -148,6 +154,8 @@ static constexpr const Identity srcIdent( "G42S Series", #elif defined CUMTENN "CTS A4", + #elif defiend ZHUOYUYUN + "ZY-2100S", #elif defined HANVON #ifdef ANDROIDSERIAL "HW-1000", @@ -161,6 +169,8 @@ static constexpr const Identity srcIdent( #elif defined(G400) // G200 #ifdef LANXUM "G52S Series", + #elif defiend ZHUOYUYUN + "ZY-2100S", #elif defined HANVON #ifdef ANDROIDSERIAL "HW-7000", @@ -181,6 +191,8 @@ static constexpr const Identity srcIdent( "Scan G100 TWAIN" #elif defined AUGE "AUGESCAN G100 TWAIN" + #elif defiend ZHUOYUYUN + "ZHUOYUYUNSCAN G100 TWAIN" #elif defined HANVON "Hanvon HW-8000 TAWIN" #elif defined LANXUM //!LANXUM @@ -191,6 +203,8 @@ static constexpr const Identity srcIdent( #else // ISG100 #ifdef MAKEHUAGAO "HUAGOSCAN G200 TWAIN" + #elif defiend ZHUOYUYUN + "ZHUOYUYUNSCAN G200 TWAIN" #elif defined NOLOGO "Scan G200 TWAIN" #elif defined CUMTENN @@ -222,6 +236,8 @@ static constexpr const Identity srcIdent( #endif // ANDROIDSERIES #elif defined NOLOGO "Scan G300 TWAIN" +#elif defiend ZHUOYUYUN + "ZHUOYUYUNSCAN G300 TWAIN" #elif defined CUMTENN "CUMTENN CTS A4 TWAIN" #elif defined LANXUM //!LANXUM @@ -244,6 +260,8 @@ static constexpr const Identity srcIdent( #endif // ANDROIDSERIES #elif defined LANXUM //!LANXUM "LANXUMSCAN G52S TWAIN" + #elif defiend ZHUOYUYUN + "ZHUOYUYUNSCAN G400 TWAIN" #elif defined NOLOGO "Scan G400 TWAIN" #else // !MAKEHUAGAO @@ -351,6 +369,11 @@ static std::vector DeviceID{ #endif // ISG100 }; +#elif defiend ZHUOYUYUN +static std::vector DeviceID{ + {0x3072,0x2100}, +}; + #elif defined AUGE static std::vector DeviceID{ {0x3072,0x0130}, @@ -966,7 +989,7 @@ void HuagaoDs::dogear_callback(int indexpaper) onDeviceEvent(DOG_EAR); } -Result HuagaoDs::identityOpenDs(const Identity&) { +Result HuagaoDs::identityOpenDs(const Identity& origin) { #ifdef G400 hMutex = CreateMutex(NULL, FALSE, _T("LookitApp_4")); #elif defined G300 @@ -984,6 +1007,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) { return { ReturnCode::Failure, ConditionCode::CapBadOperation }; } Twain_config().GetOrSetPintfCapability(is_printfcapability, true); + auto usblist = UsbScan_List::find_all_usb(); if (!usblist.empty()) { @@ -998,7 +1022,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) { if (!scanner.get()) { #ifdef G200 if (pid == 0x139 || pid == 0x239 || pid == 0x8739 || pid == 0x8629 || pid == 0x130 ||pid == 0x8000 || pid == 0x9000 || - pid == 0x138 || pid == 0x238) + pid == 0x138 || pid == 0x238 || pid == 0x2100) scanner.reset(new GScanO1003399()); else scanner.reset(new GScanO200()); @@ -1828,7 +1852,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) { CapabilityPrintf(msg, enum2str(CapTypeEx::TwEx_CropNoise), msg == Msg::Set ? to_string((int)data.currentItem()) : ""); if (Msg::Set == msg) { auto mech = data.currentItem(); - if ((mech > 20 || mech < 0) && ((bool)m_scanparam->is_autocrop == true)) + if ((mech > 20 || mech < 1) && ((bool)m_scanparam->is_autocrop == true)) return badValue(); m_scanparam->noise = mech; return success(); @@ -2219,38 +2243,46 @@ Result HuagaoDs::identityOpenDs(const Identity&) { } return CapSupGetAllResetEx(msg, data, m_scanparam->dogeardistance, 70); }; - //˫ż ٷ׼ Э޸Ϊbool Уʹboolͣʹñ׼twainЭ m_query[CapType::DoubleFeedDetection] = msgSupportGetAllSetReset; m_caps[CapType::DoubleFeedDetection] = [this](Msg msg, Capability& data)->Result { CapabilityPrintf(msg, enum2str(CapType::DoubleFeedDetection), msg == Msg::Set ? to_string((float)data.currentItem()) : ""); - switch (msg) { - case Msg::Get: - data = Capability::createEnumeration(CapType::DoubleFeedDetection, { 0 ,1}, m_scanparam->hardwarecaps.en_doublefeed ? 0 : 1, 0); - return { ReturnCode::Success, ConditionCode::Success }; - case Msg::GetCurrent: - data = Capability::createOneValue(CapType::DoubleFeedDetection, (UInt16)m_scanparam->hardwarecaps.en_doublefeed ? 0 : 1); - return { ReturnCode::Success, ConditionCode::Success }; - case Msg::Reset: - case Msg::GetDefault: - m_scanparam->hardwarecaps.en_doublefeed = 1; - data = Capability::createOneValue(CapType::DoubleFeedDetection, 0); - return { ReturnCode::Success, ConditionCode::Success }; - case Msg::Set: { - auto mech = data.currentItem(); - m_scanparam->hardwarecaps.en_doublefeed = mech ? 0 : 1; - return success(); - } + std::vector names; + Twain_config().GetOrSetDoubleNames(names,true); + FileTools::writelog(log_INFO, " DoubleFeedDetection "+ FileTools::GetProcessName()); + if (std::find(names.begin(), names.end(), FileTools::to_web_utf(FileTools::String2Wstring(FileTools::GetProcessName()))) == names.end()) { + FileTools::writelog(log_INFO, " DoubleFeedDetection 11111 "); + switch (msg) { + case Msg::Get: + data = Capability::createEnumeration(CapType::DoubleFeedDetection, { 0 ,1 }, m_scanparam->hardwarecaps.en_doublefeed ? 0 : 1, 0); + return { ReturnCode::Success, ConditionCode::Success }; + case Msg::GetCurrent: + data = Capability::createOneValue(CapType::DoubleFeedDetection, (UInt16)m_scanparam->hardwarecaps.en_doublefeed ? 0 : 1); + return { ReturnCode::Success, ConditionCode::Success }; + case Msg::Reset: + case Msg::GetDefault: + m_scanparam->hardwarecaps.en_doublefeed = 1; + data = Capability::createOneValue(CapType::DoubleFeedDetection, 0); + return { ReturnCode::Success, ConditionCode::Success }; + case Msg::Set: { + auto mech = data.currentItem(); + m_scanparam->hardwarecaps.en_doublefeed = mech ? 0 : 1; + return success(); + } - default: - return { ReturnCode::Failure, ConditionCode::CapBadOperation }; + default: + return { ReturnCode::Failure, ConditionCode::CapBadOperation }; + } + } + else{ + FileTools::writelog(log_INFO, " DoubleFeedDetection 22222 "); + if (Msg::Set == msg) { + auto mech = data.currentItem(); + m_scanparam->hardwarecaps.en_doublefeed = mech ? 1 : 0; + return success(); + } + return CapSupGetAllResetEx(msg, data, m_scanparam->hardwarecaps.en_doublefeed, TRUE); } - //if (Msg::Set == msg) { - // auto mech = data.currentItem(); - // m_scanparam->hardwarecaps.en_doublefeed = mech ? 1 : 0; - // return success(); - //} - //return CapSupGetAllResetEx(msg, data, m_scanparam->hardwarecaps.en_doublefeed, TRUE); }; #ifdef G200 diff --git a/huagao/huagaotwds.rc b/huagao/huagaotwds.rc index c032819a6b7cbb77aff7de9f1986774635a17fe3..0b8300eb673cb4fd9d30e0596696607d8d7298e6 100644 GIT binary patch delta 73 zcmZo!%sgc&^9HWG$rkNOn|1Ogg-o8aUxd+Y^2YtXyh#k13?&S?42cW{3}%z%52`a- a0L4T3qZl$6N*VGQB7r0jZ(e!mHXi`Pc^Lu# delta 23 fcmbQTl(}Uw^9HWG$p)fIn|1Ogg={`|_!u7mZl?*< diff --git a/huagao/logoZhuoYuYun.bmp b/huagao/logoZhuoYuYun.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6a7ca5e6cefe9ebcbf2f2e3c0a12bffea0101db6 GIT binary patch literal 81054 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 XWr6!MzQ4~WR57b!P|blBodf>|M8aZB literal 0 HcmV?d00001 diff --git a/huagao/resource.h b/huagao/resource.h index 100d7e263c401a4688ebe69a2359c5101f8e3e08..b3c41c1364430dcadc2edd53e76524e2c6b3e8c5 100644 GIT binary patch delta 61 zcmX@JoUvgg;|3qr$p*{m2$Gomz?W|b delta 22 ecmZoz$#`Zt;|3qrO>8c{le<_YHpc|3FaiK$QwOR5 diff --git a/huagao/stdafx.h b/huagao/stdafx.h index 096452526ef1540758be8976fba7072d06c048f5..26d8a9c5037f5922d1909cbd806b003dec2941f0 100644 GIT binary patch delta 912 zcma)4OK1~O6n#_D8k=*72FEG6gQc4F^l)^CJ%MfODTXQJ zIO!#knjMj~P0L5lu(;G#;`VcGt8>K*z8e*LUaQ#t7%l{xmSOFiWAZ?Qe@ZC%bS;u3 zk;yqS$YPxJQX5PzBsXN{TyGh6oy?IL*7aQN!0zsVdgl949ZqgB$EzgAVuz%G*545?=H&ntHO3_MlDQ+rcw2L@YFzVKBzpGn-gP(h~i}m8t+HdeU@qL-rJG^0GoW7!kHmocU}(t{Bb zkF_5EUcIy4?0T6ujSmudtkyeu_Hsrd6MPz)@fXc4U8&LhuE*MZn#t)&Y KBsFQG*!&N<8TEMp delta 161 zcmaF&fbr0A#tkhTti}um3m{-qi) zIm@^Y$k&;yVC^w^okG~;B6Ww!TsCEs_bHl9o}kY%*-JxVGLQ73$s(FslYc42ES{uk N3$%b^^PQ|otN?f&J=p*N