From 3b35c7808c7071a1495137f37b5f7a03fa864508 Mon Sep 17 00:00:00 2001 From: pm <1002639516@qq.com> Date: Sat, 7 Dec 2019 17:57:00 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=96=B0=E5=A2=9E=E5=8A=A0IConfig=E8=99=9A?= =?UTF-8?q?=E6=8B=9F=E7=B1=BB=EF=BC=8C=E4=BB=A5=E9=80=82=E9=85=8D=E6=96=B0?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=8F=82=E6=95=B0=E9=85=8D=E7=BD=AE=E7=B1=BB?= =?UTF-8?q?config=5Fnew=202.=E5=A2=9E=E5=8A=A0imagematqueue=E7=B1=BB?= =?UTF-8?q?=E4=B8=AD=E9=94=81=E5=85=B6=E4=BB=96=E7=BA=BF=E7=A8=8B=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E7=B1=BB=E6=88=90=E5=91=98=E5=8F=98=E9=87=8F=E9=94=81?= =?UTF-8?q?=E4=B8=8D=E7=94=9F=E6=95=88=E9=97=AE=E9=A2=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IConfig.h | 10 ++++ IGDevice.h | 4 +- ImageMatQueue.cpp | 91 ++++++++++++++++++++--------------- ImageMatQueue.h | 1 + config_new.cpp | 77 +++++++++++++++++++++++++++++ config_new.h | 25 ++++++++++ hugaotwainds.aps | Bin 0 -> 153092 bytes hugaotwainds.vcxproj | 3 ++ hugaotwainds.vcxproj.filters | 9 ++++ hugaotwainds.vcxproj.user | 2 +- scn_config.cpp | 2 +- scn_config.h | 7 +-- 12 files changed, 184 insertions(+), 47 deletions(-) create mode 100644 IConfig.h create mode 100644 config_new.cpp create mode 100644 config_new.h create mode 100644 hugaotwainds.aps diff --git a/IConfig.h b/IConfig.h new file mode 100644 index 0000000..c369b59 --- /dev/null +++ b/IConfig.h @@ -0,0 +1,10 @@ +#pragma once + +class IConfig +{ +public: + IConfig(void) {}; + virtual ~IConfig(void) {}; + virtual unsigned int GetData() = 0; +}; + diff --git a/IGDevice.h b/IGDevice.h index 7bac6ae..f23ede9 100644 --- a/IGDevice.h +++ b/IGDevice.h @@ -31,8 +31,8 @@ enum Cam_Options { scanner_error_clean ,//异常清除 scanner_Init_Status, //状态初始化使能 scanner_IIC_Config, //IIC配置使能 - scanner_Speed_Config //速度配置使能 - + scanner_Speed_Config, //速度配置使能 + scanner_scan_status }; class IGDevice diff --git a/ImageMatQueue.cpp b/ImageMatQueue.cpp index 536e202..d04121e 100644 --- a/ImageMatQueue.cpp +++ b/ImageMatQueue.cpp @@ -32,8 +32,10 @@ ImageMatQueue::~ImageMatQueue(void) bRun = false; at_prced_image_remains = 0; atm_orgin_image_remains = 0; + XdPrint("closeing m_threadProc\n"); m_threadProc->join(); m_threadProc = NULL; + XdPrint("closed m_threadProc\n"); } } @@ -43,11 +45,12 @@ void ImageMatQueue::pushMat(JpegBuffer& data) m_pImages.Put(data); atm_orgin_image_remains++; } - +static int outnum =0; cv::Mat ImageMatQueue::popMat() { std::lock_guard lock(m_mtxJB); cv::Mat mat = _popMat(); + XdPrint("dequeue image %d \n", outnum++); at_prced_image_remains--; return mat; } @@ -111,7 +114,7 @@ void ImageMatQueue::PaniusCount() void ImageMatQueue::SetScanningStatus(bool isscannning) { - std::lock_guard lock(m_Locker); + std::lock_guard lock(m_mtxscan); iscanning = isscannning; } @@ -129,60 +132,68 @@ void ImageMatQueue::release_img_prc_thread() bool ImageMatQueue::empty() { - return ((atm_orgin_image_remains == 0 && + bool ret= ((atm_orgin_image_remains == 0 && at_prced_image_remains == 0) && (!iscanning)); + return ret; } +static int index=0; void ImageMatQueue::proc() { JpegBuffer jb; while (bRun) { + if (m_pImages.Size() <= 0) + { + continue; + } jb = m_pImages.Take(); if (!m_pImages.IsShutDown() && !jb.empty()) { vector mats = jb.getMats(); - if (scanParam.m_OutHole.EnOutHole && mats.size() == 2){ //确保能够获取正反两面图 - if (!mats[0].empty() && !mats[1].empty()) - ImageOutHole().puncture(mats[0], mats[1], 50.0, scanParam.m_OutHole.OutHoleRatio / 100.0, 50); - } + //if (scanParam.m_OutHole.EnOutHole && mats.size() == 2){ //确保能够获取正反两面图 + // if (!mats[0].empty() && !mats[1].empty()) + // ImageOutHole().puncture(mats[0], mats[1], 50.0, scanParam.m_OutHole.OutHoleRatio / 100.0, 50); + //} + + //for (int i = 0; i < mats.size(); i++) { + // if (!mats[i].empty()) { + // for (int j = 0; j < m_iaList.size(); j++) { + // if (mats[i].empty())//剔除空白页 + // break; + + // m_iaList[j]->apply(mats[i], i); + // } + // } + //} for (int i = 0; i < mats.size(); i++) { - if (!mats[i].empty()) { - for (int j = 0; j < m_iaList.size(); j++) { - if (mats[i].empty())//剔除空白页 - break; + //if (!scanParam.m_bDuplex && i == 1) { + // mats[i].release(); + // break; + //} - m_iaList[j]->apply(mats[i], i); - } - } - } - - for (int i = 0; i < mats.size(); i++) { - if (!scanParam.m_bDuplex && i == 1) { - mats[i].release(); - break; - } - - if (!mats[i].empty()) + if (!mats[i].empty()){ EnqueueMat(mats[i]); - } - - if (scanParam.m_bMultiOutput) - { - for (int i = 0; i < mats.size(); i++) - { - ImageMultiOutput m_mlt; - Mat m_filterMat = m_mlt.GetMultiFilterMat(mats[i], 2); - if (!m_filterMat.empty()) { - if (!scanParam.m_bDuplex && i == 1) { - mats[i].release(); - break; - } - - if (!m_filterMat.empty()) - EnqueueMat(m_filterMat); - } + XdPrint("enqueue image %d \n", index++); } } + + //if (scanParam.m_bMultiOutput) + //{ + // for (int i = 0; i < mats.size(); i++) + // { + // ImageMultiOutput m_mlt; + // Mat m_filterMat = m_mlt.GetMultiFilterMat(mats[i], 2); + // if (!m_filterMat.empty()) { + // if (!scanParam.m_bDuplex && i == 1) { + // mats[i].release(); + // break; + // } + + // if (!m_filterMat.empty()) + // EnqueueMat(m_filterMat); + // } + // } + //} PaniusCount(); } jb = JpegBuffer(); diff --git a/ImageMatQueue.h b/ImageMatQueue.h index 3cfa15b..9da78dc 100644 --- a/ImageMatQueue.h +++ b/ImageMatQueue.h @@ -44,6 +44,7 @@ private: BlockingQueue m_pImages; std::mutex m_Locker; std::mutex m_mtxJB; + std::mutex m_mtxscan; std::unique_ptr m_threadProc; volatile bool bRun; bool isduplex; diff --git a/config_new.cpp b/config_new.cpp new file mode 100644 index 0000000..34a6614 --- /dev/null +++ b/config_new.cpp @@ -0,0 +1,77 @@ +#include "stdafx.h" +#include "config_new.h" + +config_new::config_new(SFreeImage param) +{ + ms.value = 0; + init_paperdic(); + init_colormodedic(); + init_dpidic(); + set_unused_default_value(); + ms.double_paper = param.m_HardWareParams.DoubleFeederOn; + ms.color_model = pixType[param.m_HardWareParams.PixType]; + ms.dpi = resolutions[param.m_HardWareParams.Resolution]; + ms.papar_type = paperTypes[param.m_HardWareParams.PaperType]; + ms.paper = ms.papar_type == 3; + ms.skew_enable = param.m_HardWareParams.SkrewDetectOn; + ms.skew_parameter = param.m_HardWareParams.SkrewDetectLevel; + ms.staple_enable = param.m_HardWareParams.StapleDetectOn; +} + +config_new::~config_new(void) +{ +} + +unsigned int config_new::GetData() +{ + return ms.value; +} + +void config_new::init_paperdic(void) +{ + paperTypes.insert(std::pair(11, 0));//A3 + paperTypes.insert(std::pair(1, 1));//A4 + paperTypes.insert(std::pair(60, 2));//A4R + paperTypes.insert(std::pair(5, 2));//A5 + paperTypes.insert(std::pair(61, 2));//A5R + paperTypes.insert(std::pair(13, 2));//A6 + paperTypes.insert(std::pair(62, 2));//A6R + paperTypes.insert(std::pair(6, 0));//B4 + paperTypes.insert(std::pair(2, 0));//B5 + paperTypes.insert(std::pair(70, 1));//B5R + paperTypes.insert(std::pair(7, 2));//B6 + paperTypes.insert(std::pair(71, 2));//B6R + paperTypes.insert(std::pair(3, 1));//LETTER + paperTypes.insert(std::pair(80, 2));//LETTERR + paperTypes.insert(std::pair(81, 0));//DOUBLE LETTER + paperTypes.insert(std::pair(4, 0));//LEGAL + paperTypes.insert(std::pair(90, 0));//Auto 按照A3进行扫描 + paperTypes.insert(std::pair(91, 3));//长文稿 +} + +void config_new::init_colormodedic(void) +{ + pixType.insert(std::pair(0, 0));//BW + pixType.insert(std::pair(1, 0));//Gray + pixType.insert(std::pair(2, 1));//RGB +} + +void config_new::init_dpidic(void) +{ + resolutions.insert(std::pair(300, 1));//300 + resolutions.insert(std::pair(200, 0));//200 + resolutions.insert(std::pair(600, 2));//600 +} + +void config_new::set_unused_default_value(void) +{ + ms.error_clean = 0; + ms.iic_config = 0; + ms.iic_config_addr = 0; + ms.pick_paper = 0; + ms.scan_enable = 0; + ms.status_init = 0; + ms.v_setting = 0; + ms.speed_set_enable = 0; + ms.key_staple_enable = 0; +} diff --git a/config_new.h b/config_new.h new file mode 100644 index 0000000..ae26800 --- /dev/null +++ b/config_new.h @@ -0,0 +1,25 @@ +#pragma once +#include "IConfig.h" +#include "PublicFunc.h" +#include "device_common.h" +#include + +class config_new : + public IConfig +{ +public : + config_new(SFreeImage param); + virtual ~config_new(void); + virtual unsigned int GetData() override; +private: + void init_paperdic(void); + void init_colormodedic(void); + void init_dpidic(void); + void set_unused_default_value(void); +private: + std::map paperTypes; + std::map pixType; + std::map resolutions; + MotorSetting ms; +}; + diff --git a/hugaotwainds.aps b/hugaotwainds.aps new file mode 100644 index 0000000000000000000000000000000000000000..c46b6a82ae2d60f84739bd60523e4f254b42add7 GIT binary patch literal 153092 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 literal 0 HcmV?d00001 diff --git a/hugaotwainds.vcxproj b/hugaotwainds.vcxproj index 7d2c1aa..a511f73 100644 --- a/hugaotwainds.vcxproj +++ b/hugaotwainds.vcxproj @@ -220,6 +220,7 @@ + @@ -291,6 +292,7 @@ + @@ -305,6 +307,7 @@ + diff --git a/hugaotwainds.vcxproj.filters b/hugaotwainds.vcxproj.filters index 09d0954..dad94b6 100644 --- a/hugaotwainds.vcxproj.filters +++ b/hugaotwainds.vcxproj.filters @@ -201,6 +201,9 @@ 鍥惧儚澶勭悊 + + 浠g爜鏂囦欢 + @@ -421,6 +424,12 @@ 澶存枃浠 + + 澶存枃浠 + + + 澶存枃浠 + diff --git a/hugaotwainds.vcxproj.user b/hugaotwainds.vcxproj.user index af65007..ad2d9c4 100644 --- a/hugaotwainds.vcxproj.user +++ b/hugaotwainds.vcxproj.user @@ -12,7 +12,7 @@ WindowsLocalDebugger - C:\Users\holdtecs\Desktop\鏋佽Twain娴嬭瘯灏忚蒋浠秗elease锛32bit锛塡Sample.WPF.exe + E:\杞欢瀹夎鍖匼xnviewer\xnviewer\xnview.exe ..\..\..\..\Windows\twain_32\huagoscan WindowsLocalDebugger diff --git a/scn_config.cpp b/scn_config.cpp index 42fc86c..1ebf17a 100644 --- a/scn_config.cpp +++ b/scn_config.cpp @@ -117,7 +117,7 @@ void hgConfigClass::setSkewDelection(bool value) setBit(11, value); } -UINT32 hgConfigClass::GetData() +unsigned int hgConfigClass::GetData() { return m_data.to_ulong(); } diff --git a/scn_config.h b/scn_config.h index af7a4da..e7156b0 100644 --- a/scn_config.h +++ b/scn_config.h @@ -5,17 +5,18 @@ #include #include #include "PublicFunc.h" +#include "IConfig.h" typedef unsigned short uint16_t; -class hgConfigClass +class hgConfigClass:public IConfig { public: hgConfigClass(); hgConfigClass(SFreeImage param); - ~hgConfigClass(); + virtual ~hgConfigClass(); - UINT32 GetData(); + virtual unsigned int GetData() override; private: enum Config_Scanner {