From 1cadb78e21d89c93d7dee79420f27623ae2e718e Mon Sep 17 00:00:00 2001 From: masayume_ht <1936714878@qq.com> Date: Fri, 5 May 2023 11:50:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=86=E7=BA=B8=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E8=AE=BE=E7=BD=AE=E5=8A=9F=E8=83=BD=20--23.05.05?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- changelog.txt | 3 +- huagao/CFeedMode.cpp | 83 +++++++++++++++++++++++++++++++ huagao/CFeedMode.h | 31 ++++++++++++ huagao/CFeedPaperPage.cpp | 13 ++++- huagao/CFeedPaperPage.h | 6 ++- huagao/CTwainUI.cpp | 4 +- huagao/Device/GScan.h | 6 +++ huagao/Device/GScan439Android.h | 1 - huagao/Device/GScanO1003399.h | 1 - huagao/Device/GScanO200.h | 1 - huagao/Device/GScanO400.h | 1 - huagao/Device/GScanO400Android.h | 1 - huagao/Device/GScanVirtual.h | 1 - huagao/huagaods.cpp | 26 +++++++++- huagao/huagaotwds.rc | Bin 53782 -> 55162 bytes huagao/resource.h | Bin 21632 -> 22456 bytes huagao/twglue.hpp | 6 +-- 17 files changed, 168 insertions(+), 16 deletions(-) create mode 100644 huagao/CFeedMode.cpp create mode 100644 huagao/CFeedMode.h diff --git a/changelog.txt b/changelog.txt index ed00f21d..ed352740 100644 --- a/changelog.txt +++ b/changelog.txt @@ -87,4 +87,5 @@ 8.添加安卓设备锁定协议支持 --23.03.13 9.适配卓育云ODM厂商 --23.04.24 10.对接爱云校做协议适配 --23.04.24 - 11.调整文件编码格式修复指示器乱码问题 --23.04.27 \ No newline at end of file + 11.调整文件编码格式修复指示器乱码问题 --23.04.27 + 12.添加分纸模式设置功能 --23.05.05 \ No newline at end of file diff --git a/huagao/CFeedMode.cpp b/huagao/CFeedMode.cpp new file mode 100644 index 00000000..78dad5a3 --- /dev/null +++ b/huagao/CFeedMode.cpp @@ -0,0 +1,83 @@ +// CFeedMode.cpp: 实现文件 +// +#include "stdafx.h" +#include "afxdialogex.h" +#include "CFeedMode.h" +#include "resource.h" + +// CFeedMode 对话框 + +IMPLEMENT_DYNAMIC(CFeedMode, CDialogEx) + +CFeedMode::CFeedMode(TwGlue glue, CWnd* pParent /*=nullptr*/) + : CDialogEx(IDD_FEEDPAPERMODE, pParent), m_glue(glue) + , feedmode(0) +{ + +} + +CFeedMode::~CFeedMode() +{ +} + +void CFeedMode::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Radio(pDX, IDC_RDFEEDMODEMID, feedmode); +} + + +BEGIN_MESSAGE_MAP(CFeedMode, CDialogEx) + ON_BN_CLICKED(IDC_BTNFEEDMODEGET, &CFeedMode::OnBnClickedBtnfeedmodeget) + ON_BN_CLICKED(IDC_BTNFEEDMODESET, &CFeedMode::OnBnClickedBtnfeedmodeset) +END_MESSAGE_MAP() + + +// CFeedMode 消息处理程序 + + +void CFeedMode::OnBnClickedBtnfeedmodeget() +{ + int fm = 0; + GetDlgItem(IDC_BTNFEEDMODEGET)->EnableWindow(false); + if (m_glue.m_feedmode) + fm = m_glue.m_feedmode(0, true); + switch (fm) + { + case 0 : + ((CButton*)GetDlgItem(IDC_RDFEEDMODELOW))->SetCheck(true); + ((CButton*)GetDlgItem(IDC_RDFEEDMODEMID))->SetCheck(false); + ((CButton*)GetDlgItem(IDC_RDFEEDMODEHIGH))->SetCheck(false); + break; + case 1: + ((CButton*)GetDlgItem(IDC_RDFEEDMODELOW))->SetCheck(false); + ((CButton*)GetDlgItem(IDC_RDFEEDMODEMID))->SetCheck(true); + ((CButton*)GetDlgItem(IDC_RDFEEDMODEHIGH))->SetCheck(false); + break; + case 2: + ((CButton*)GetDlgItem(IDC_RDFEEDMODELOW))->SetCheck(false); + ((CButton*)GetDlgItem(IDC_RDFEEDMODEMID))->SetCheck(false); + ((CButton*)GetDlgItem(IDC_RDFEEDMODEHIGH))->SetCheck(true); + break; + default: + ((CButton*)GetDlgItem(IDC_RDFEEDMODELOW))->SetCheck(false); + ((CButton*)GetDlgItem(IDC_RDFEEDMODEMID))->SetCheck(true); + ((CButton*)GetDlgItem(IDC_RDFEEDMODEHIGH))->SetCheck(false); + break; + } + Sleep(100); + GetDlgItem(IDC_BTNFEEDMODEGET)->EnableWindow(true); + // TODO: 在此添加控件通知处理程序代码 +} + + +void CFeedMode::OnBnClickedBtnfeedmodeset() +{ + UpdateData(TRUE); + GetDlgItem(IDC_BTNFEEDMODESET)->EnableWindow(false); + if (m_glue.m_feedmode) + m_glue.m_feedmode(feedmode+1, false); + Sleep(100); + GetDlgItem(IDC_BTNFEEDMODESET)->EnableWindow(true); + // TODO: 在此添加控件通知处理程序代码 +} diff --git a/huagao/CFeedMode.h b/huagao/CFeedMode.h new file mode 100644 index 00000000..0dde75a0 --- /dev/null +++ b/huagao/CFeedMode.h @@ -0,0 +1,31 @@ +#pragma once +#include "afxdialogex.h" +#include "twglue.hpp" + +// CFeedMode 对话框 + +class CFeedMode : public CDialogEx +{ + DECLARE_DYNAMIC(CFeedMode) + +public: + CFeedMode(TwGlue glue, CWnd* pParent = nullptr); // 标准构造函数 + virtual ~CFeedMode(); + +// 对话框数据 +#ifdef AFX_DESIGN_TIME + enum { IDD = IDD_FEEDPAPERMODE }; +#endif + +private: + TwGlue m_glue; + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 + + DECLARE_MESSAGE_MAP() +public: + int feedmode; + afx_msg void OnBnClickedBtnfeedmodeget(); + afx_msg void OnBnClickedBtnfeedmodeset(); +}; diff --git a/huagao/CFeedPaperPage.cpp b/huagao/CFeedPaperPage.cpp index 593bc637..d1772de2 100644 --- a/huagao/CFeedPaperPage.cpp +++ b/huagao/CFeedPaperPage.cpp @@ -2,6 +2,7 @@ // #include "stdafx.h" +#include "CFeedMode.h" #include "CFeedPaperPage.h" #include "afxdialogex.h" #include "resource.h" @@ -41,13 +42,14 @@ static std::vector autopapertimeout IMPLEMENT_DYNAMIC(CFeedPaperPage, CTabPageSSL) -CFeedPaperPage::CFeedPaperPage(/*std::function datachange,*/CWnd* pParent /*=nullptr*/) +CFeedPaperPage::CFeedPaperPage(TwGlue glue,CWnd* pParent /*=nullptr*/) : CTabPageSSL(IDD_PAGEFEEDPAPER, pParent) , m_radioGroupScanMode(0) , m_cbDoublePaper(FALSE) , m_cbStaple(FALSE) , m_cbRotation(FALSE) , m_cbSkew(FALSE) + , m_glue(glue) //, m_datachange(datachange) { @@ -114,6 +116,7 @@ BEGIN_MESSAGE_MAP(CFeedPaperPage, CTabPageSSL) ON_CBN_SELCHANGE(IDC_CMBORENTATION, &CFeedPaperPage::OnCbnSelchangeCmborentation) ON_BN_CLICKED(IDC_DogEarDetection, &CFeedPaperPage::OnBnClickedDogeardetection) ON_BN_CLICKED(IDC_CKAUTOPAPER, &CFeedPaperPage::OnBnClickedCkautopaper) + ON_BN_CLICKED(IDC_BTNFEEDMODE, &CFeedPaperPage::OnBnClickedBtnfeedmode) END_MESSAGE_MAP() BOOL CFeedPaperPage::PreTranslateMessage(MSG* pMsg) @@ -235,3 +238,11 @@ void CFeedPaperPage::OnBnClickedCkautopaper() GetDlgItem(IDC_STATICAUTOPAPER)->EnableWindow(FALSE); } } + + +void CFeedPaperPage::OnBnClickedBtnfeedmode() +{ + // TODO: 在此添加控件通知处理程序代码 + CFeedMode cf(m_glue,this); + cf.DoModal(); +} \ No newline at end of file diff --git a/huagao/CFeedPaperPage.h b/huagao/CFeedPaperPage.h index 99d5538d..f31af100 100644 --- a/huagao/CFeedPaperPage.h +++ b/huagao/CFeedPaperPage.h @@ -1,6 +1,7 @@ #pragma once #include "TabPageSSL.h" #include "Sliders.h" +#include "twglue.hpp" #include "SmartEdit.h" #include // CFeedPaperPage 对话框 @@ -10,7 +11,7 @@ class CFeedPaperPage : public CTabPageSSL DECLARE_DYNAMIC(CFeedPaperPage) public: - CFeedPaperPage(/*std::function datachange,*/CWnd* pParent = nullptr); // 标准构造函数 + CFeedPaperPage(TwGlue glue,CWnd* pParent = nullptr); // 标准构造函数 virtual ~CFeedPaperPage(); void FeedPaperPageUpdate(int val); @@ -26,7 +27,7 @@ public: CLinkSlider m_slider_dogear; int m_radioGroupScanMode; CSmartEdit m_editNum; - + TwGlue m_glue; afx_msg void OnBnClickedCkskewdetect(); afx_msg void OnBnClickedScanMode(); @@ -51,4 +52,5 @@ public: afx_msg void OnBnClickedDogeardetection(); afx_msg void OnBnClickedCkautopaper(); + afx_msg void OnBnClickedBtnfeedmode(); }; diff --git a/huagao/CTwainUI.cpp b/huagao/CTwainUI.cpp index c4a297bb..b9c5a1bb 100644 --- a/huagao/CTwainUI.cpp +++ b/huagao/CTwainUI.cpp @@ -21,7 +21,7 @@ CTwainUI::CTwainUI(TwGlue glue, GScanCap caps, std::string confirmtitle, std::st : CDialogEx(IDD_TWAINUI, pParent) , m_tabCtrl(new CTabCtrlSSL()) , m_pageBrightness(new CBrightnessPage) - , m_pageFeedPaper(new CFeedPaperPage) + , m_pageFeedPaper(new CFeedPaperPage(glue)) , m_pageImageProc(new CImageProcPage) , m_glue(glue) , settings(new GScanCap(caps)) @@ -97,6 +97,8 @@ BOOL CTwainUI::OnInitDialog() setvisable_fixedpaper(false); setvisable_dogear(true); setvisable_size(true); + if ((m_hardwareVersion[5] == 'B' && atoi(m_hardwareVersion.substr(6, 4).c_str()) >= 505) || (m_hardwareVersion[5] > 'B')) + m_pageFeedPaper->GetDlgItem(IDC_BTNFEEDMODE)->ShowWindow(SW_SHOW); if ((m_hardwareVersion[5] == 'B' && atoi(m_hardwareVersion.substr(6, 4).c_str()) >= 430) || (m_hardwareVersion[5] > 'B')) m_pageBasic->m_Edit_Dpi.SetParams(100, 600, 10); if ((m_hardwareVersion[5] == 'C' && atoi(m_hardwareVersion.substr(6, 4).c_str()) >= 103) || (m_hardwareVersion[5] > 'C')) diff --git a/huagao/Device/GScan.h b/huagao/Device/GScan.h index c6bee0d0..bd9de992 100644 --- a/huagao/Device/GScan.h +++ b/huagao/Device/GScan.h @@ -252,6 +252,11 @@ public: m_token = str; } + std::shared_ptr GetUsb() + { + return m_usb; + } + virtual void open(int vid, int pid) = 0; virtual void regist_deviceevent_callback(deviceevent_callback callback, void* usrdata = 0) = 0; virtual void DogEar_callback(std::function fun)=0; @@ -291,6 +296,7 @@ protected: atomic_uint32_t Error_Code; atomic_int devState; std::shared_ptr m_pImages; + std::shared_ptr m_usb; std::mutex m_Locker; std::mutex m_imgLocker; std::string fwVersion; diff --git a/huagao/Device/GScan439Android.h b/huagao/Device/GScan439Android.h index 099b6fd3..5a060048 100644 --- a/huagao/Device/GScan439Android.h +++ b/huagao/Device/GScan439Android.h @@ -61,7 +61,6 @@ private: int aquirenum = 0; int getimgnum = 0; GScanCap m_param; - std::shared_ptr m_usb; volatile bool b_imgprothread; volatile bool b_usbthread; volatile int m_status; diff --git a/huagao/Device/GScanO1003399.h b/huagao/Device/GScanO1003399.h index 673fddb6..fc17cd19 100644 --- a/huagao/Device/GScanO1003399.h +++ b/huagao/Device/GScanO1003399.h @@ -107,7 +107,6 @@ private: volatile bool m_autopaper_timeout; std::future m_autopaper_ft; GScanCap m_param; - std::shared_ptr m_usb; volatile bool b_imgprothread; volatile bool b_usbthread; BlockingQueue>> imgs; diff --git a/huagao/Device/GScanO200.h b/huagao/Device/GScanO200.h index 89c5112c..d23e8acc 100644 --- a/huagao/Device/GScanO200.h +++ b/huagao/Device/GScanO200.h @@ -49,7 +49,6 @@ private: private: bool m_bread_fixed_ratio_fromDSP; bool is_orginimgcount; - std::shared_ptr m_usb; std::unique_ptr m_threadUsb; GScanCap gcap; volatile int image_num; diff --git a/huagao/Device/GScanO400.h b/huagao/Device/GScanO400.h index 12554cb6..513e5381 100644 --- a/huagao/Device/GScanO400.h +++ b/huagao/Device/GScanO400.h @@ -48,7 +48,6 @@ private: void Pop_Image(); private: bool m_bread_fixed_ratio_fromDSP; - std::shared_ptr m_usb; std::unique_ptr m_threadUsb; std::atomic_bool autopaper_stop; GScanCap gcap; diff --git a/huagao/Device/GScanO400Android.h b/huagao/Device/GScanO400Android.h index 3db3b1bf..7707bab1 100644 --- a/huagao/Device/GScanO400Android.h +++ b/huagao/Device/GScanO400Android.h @@ -48,7 +48,6 @@ private: void Pop_Image(); private: bool m_bread_fixed_ratio_fromDSP; - std::shared_ptr m_usb; std::unique_ptr m_threadUsb; GScanCap gcap; volatile int image_num; diff --git a/huagao/Device/GScanVirtual.h b/huagao/Device/GScanVirtual.h index f2b605c6..281d8fb8 100644 --- a/huagao/Device/GScanVirtual.h +++ b/huagao/Device/GScanVirtual.h @@ -31,7 +31,6 @@ public: private: DWORD usbmain(); void Pop_Image(); - std::shared_ptr m_usb; std::unique_ptr m_threadUsb; }; diff --git a/huagao/huagaods.cpp b/huagao/huagaods.cpp index 5f1bb3b5..67eaf598 100644 --- a/huagao/huagaods.cpp +++ b/huagao/huagaods.cpp @@ -2938,11 +2938,33 @@ Twpp::Result HuagaoDs::showTwainUI(Twpp::UserInterface& ui, bool bUiOnly) //} notifyCloseCancel(); }; + auto feedmodeFunction = [this](int mode, bool isget)->int { +#ifdef G200 + auto usb = scanner->GetUsb(); + if (isget) + { + if (usb.get() && usb->is_connected()) { + int val = 0; + usb->control_msg(0xc0, USB_REQ_GET_DEV_REGS, SR_GET_FEEDMODE, 0, 4, &val); + return val; + } + } + else + { + return usb->control_msg(0x40, USB_REQ_SET_DEV_REGS, SR_SET_FEEDMODE, 0, 4, &mode); + } + return 0; +#else + return 0; +#endif // G200 + + }; + CWnd* parent = guiBridge.get(); - TwGlue glue = { scanFunction, cancelFunction }; - TwGlue glueUiOnly = { confirmFunction, cancelFunction }; + TwGlue glue = { scanFunction, cancelFunction,feedmodeFunction }; + TwGlue glueUiOnly = { confirmFunction, cancelFunction,feedmodeFunction }; std::string serialnum = scanner->GetSerialNum(); std::string hardwareversion = scanner->GetFWVersion(); std::string macadder = scanner->GetMacAdder(); diff --git a/huagao/huagaotwds.rc b/huagao/huagaotwds.rc index 139d23d2d789bd956026e684f5992dbcc94dd41b..465f6338b20331d681cae6af013443e9a187e4d3 100644 GIT binary patch delta 541 zcmbQXg!$Jx<_&$JoB6_PI4AFO)#6|a+EHf}zbtO@g9tHYHwITAbYbvi@CTBv3_1*k z43-S0K-!YQ0!W%Om`uJesX3XgLu~Vc1R=M{2WE3kHgOkVhiaHSkw=l&h{1%x7^qkQ zsM&CGp}XMyY9{DP&bTM0xI$Z+T+X+&kzKp(QWqux*~jXVvy_Pz6C@YR>^#O^R-}Plbjer82m7N% zTo^nV{1`$QA{hdJJctSlC~XX;O&Lspv^j&}WLt6j$r3tzlLa)TCi_X4Z0-xK;hcPI zme}N5XGJ!ji2vuhxnh-#_~u84F0f2?IKeXc*I};72FJKIA3MH_eR9RB4V#x-xW)zm DX+6P?^i*jpmBXh787&8F}OT<|3<4SkGZd@}Xeh|$@W~4~lqV}F)QDqK;mhDT`C@?L& scan, const std::function& cancel) : - m_scan(scan), m_cancel(cancel){} + TwGlue(const std::function& scan, const std::function& cancel, std::function feedmode) : + m_scan(scan), m_cancel(cancel),m_feedmode(feedmode){} std::function m_scan; std::function m_cancel; - + std::function m_feedmode; }; #endif // TWGLUE_HPP