From bbb5c44a6ea16c4b2765b486ff9f47630de55938 Mon Sep 17 00:00:00 2001 From: lovelyyoung <1002639516@qq.com> Date: Sat, 11 Jul 2020 18:43:17 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E4=BF=9D=E5=AD=98bug=202.=E9=92=88=E5=AF=B9=E4=B8=83?= =?UTF-8?q?=E5=A4=A9=E8=BD=AF=E4=BB=B6=E5=B4=A9=E6=BA=83=E5=81=9A=E4=BA=86?= =?UTF-8?q?=E4=BC=98=E5=8C=96=203.=E8=B0=83=E6=95=B4=E9=83=A8=E5=88=86?= =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E5=8F=AF=E7=94=A8=E6=80=A7=E7=BA=A6=E6=9D=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- huagao/CFeedPaperPage.cpp | 4 - huagao/CTwainUI.cpp | 4 +- huagao/Device/CJsonObject.cpp | 16 +-- huagao/Device/GScan.h | 31 ++++- huagao/Device/GScanO200.cpp | 53 +++++++-- huagao/Device/ImageMatQueue.cpp | 2 +- huagao/Device/JsonConfig.cpp | 4 +- huagao/Device/PublicFunc.cpp | 19 ++- huagao/Device/PublicFunc.h | 1 + huagao/GscanJsonConfig.cpp | 67 ++++++----- huagao/SmartEdit.cpp | 2 +- huagao/huagaods.cpp | 205 +++++++++++++++++++------------- huagao/huagaotwds.pro | 8 +- 13 files changed, 261 insertions(+), 155 deletions(-) diff --git a/huagao/CFeedPaperPage.cpp b/huagao/CFeedPaperPage.cpp index 3662dec2..5d45e980 100644 --- a/huagao/CFeedPaperPage.cpp +++ b/huagao/CFeedPaperPage.cpp @@ -11,10 +11,6 @@ std::vector g400hiden = { IDC_CKBINDINGDETECT , - IDC_LBCOUNT , - IDC_RDCONSISTSCAN, - IDC_RDSPECIFYSCANNUM, - IDC_EDSCANNUM, IDC_CKSKEWDETECT, IDC_LBSDL, IDC_SLDDETECTLEVEL, diff --git a/huagao/CTwainUI.cpp b/huagao/CTwainUI.cpp index 3fbfae68..ccbe3bc8 100644 --- a/huagao/CTwainUI.cpp +++ b/huagao/CTwainUI.cpp @@ -238,6 +238,8 @@ int CTwainUI::getCmbDuplexIndex() ret = 2; else if (settings->is_autodiscradblank_vince) ret = 3; + else if (settings->en_fold) + ret = 4; else if(settings->is_duplex==FALSE) ret = 0; return ret; @@ -427,7 +429,7 @@ void CTwainUI::UpDateScanParam(PCONFIGPARAMS configItem, bool updateDs) settings->is_autotext = configItem->Orentation == 4; settings->is_backrotate180 =configItem->EnBackRotate180; settings->hardwarecaps.en_skrewdetect = configItem->EnScrewDetect; - settings->hardwarecaps.skrewdetectlevel = (float)configItem->ScrewDetectLevel; + settings->hardwarecaps.skrewdetectlevel = (int)configItem->ScrewDetectLevel; settings->hardwarecaps.en_stapledetect = configItem->EnBindingDetect; settings->hardwarecaps.en_doublefeed = configItem->EnUltrasonicDetect; settings->en_fold = configItem->EnFlod ? 1 : 0; diff --git a/huagao/Device/CJsonObject.cpp b/huagao/Device/CJsonObject.cpp index 55b3a451..2ec41b93 100644 --- a/huagao/Device/CJsonObject.cpp +++ b/huagao/Device/CJsonObject.cpp @@ -743,10 +743,10 @@ namespace neb { return(false); } - if (pJsonStruct->type != cJSON_Double) - { - return(false); - } + //if (pJsonStruct->type != cJSON_Double) + //{ + // return(false); + //} dValue = pJsonStruct->valuedouble; return(true); } @@ -1751,10 +1751,10 @@ namespace neb { return(false); } - if (pJsonStruct->type != cJSON_Double) - { - return(false); - } + //if (pJsonStruct->type != cJSON_Double) + //{ + // return(false); + //} dValue = pJsonStruct->valuedouble; return(true); } diff --git a/huagao/Device/GScan.h b/huagao/Device/GScan.h index 3b04ee8f..8b99fe44 100644 --- a/huagao/Device/GScan.h +++ b/huagao/Device/GScan.h @@ -62,7 +62,7 @@ typedef enum tagUsbSupported { PC_SCAN_BUSY_or_ERROR = 73, //USB 未连接 USB_DISCONNECTED = 200 -} UsbSupported, *PUsbSupported; +} UsbSupported, * PUsbSupported; enum tagEventIndex @@ -79,8 +79,9 @@ class ImageMatQueue; class IScanner { public: - virtual ~IScanner(){}; - + IScanner() { bFilterMsg = false; } + virtual ~IScanner() { bFilterMsg = true; } + void ResetMsgFiter() { bFilterMsg = true; } virtual void open(int vid, int pid) = 0;; virtual int aquire_bmpdata(std::vector& bmpdata) = 0; virtual BOOL IsConnected() = 0; @@ -91,19 +92,38 @@ public: virtual void config_params(GScanCap& params) = 0; virtual void Scanner_StartScan(UINT16 count) = 0; virtual void Stop_scan() = 0; - virtual void ResetScanner() =0; + virtual void ResetScanner() = 0; virtual bool Get_IsImageQueueEmpty() = 0; virtual void reset() = 0; virtual void clear_hwerror() = 0; - virtual void setdecodepixtype(int twpixtype)= 0; + virtual void setdecodepixtype(int twpixtype) = 0; virtual UINT32 get_ErrorCode() = 0; virtual void Set_ErrorCode(UINT32 value) = 0; virtual int get_scanned_num() = 0; void DoEvents() { MSG msg; if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { + //if (msg.message != WM_LBUTTONUP) + //{ + // DispatchMessage(&msg); + // TranslateMessage(&msg); + //} + //else + //{ + // if (!((msg.pt.x >= 240 && msg.pt.x <= 340) && (msg.pt.y >= 170 && msg.pt.y <= 240))) + // { + // DispatchMessage(&msg); + // TranslateMessage(&msg); + // } + //} + if (msg.message != WM_LBUTTONUP && bFilterMsg) + { + bFilterMsg = false; + return; + } DispatchMessage(&msg); TranslateMessage(&msg); + } } protected: @@ -115,4 +135,5 @@ protected: std::string fwVersion; std::string SerialNum; int pixType; + bool bFilterMsg; }; \ No newline at end of file diff --git a/huagao/Device/GScanO200.cpp b/huagao/Device/GScanO200.cpp index d2b4c6b5..34626314 100644 --- a/huagao/Device/GScanO200.cpp +++ b/huagao/Device/GScanO200.cpp @@ -140,9 +140,9 @@ typedef enum tagUsbKeyWords : UINT32 //读取纵向畸变系数 GET_JUST_COF_V -} UsbKeyWords, *PUsbKeyWords; +} UsbKeyWords, * PUsbKeyWords; -GScanO200::GScanO200(): +GScanO200::GScanO200() : m_bread_fixed_ratio_fromDSP(false) { m_pImages.reset(new ImageMatQueue()); @@ -164,6 +164,31 @@ void GScanO200::open(int vid, int pid) auto usbs = UsbScan_List::find_vid_pid(vid, pid); if (!usbs.empty()) { + } + else + { + int ivid, ipid; +#ifdef G200 +#ifdef ISG100 + ivid = 0x3072; + ipid = 0x0100; +#else + ivid = 0x3072; + ipid = 0x0200; +#endif // ISG100 + +#elif defined(G300) + ivid = 0x3072; + ipid = 0x0300; +#elif defined(G400) + ivid = 0x3072; + ipid = 0x0400; +#endif // G200 + usbs = UsbScan_List::find_vid_pid(ivid, ipid); + } + + if (!usbs.empty()) + { m_usb = *usbs.begin(); bool ret = m_usb->open(); if (ret) { @@ -307,6 +332,7 @@ void GScanO200::config_params(GScanCap& params) UINT32 cfgdata = cfg.GetData(); USBCB usbcb = { CONFIGURED_DATA,cfgdata,0 }; m_usb->write_bulk(&usbcb, sizeof(USBCB)); + this_thread::sleep_for(std::chrono::milliseconds(200)); m_pImages->setparam(params); } } @@ -455,9 +481,10 @@ void GScanO200::usbhotplug_callback(bool isconnect, void* userdata) void GScanO200::usbhotplug(bool isleft) { if (isleft) { - devState = DEV_WRONG; - Error_Code = USB_DISCONNECTED; - m_pImages->setscanflags(false); + devState = DEV_WRONG; + Error_Code = USB_DISCONNECTED; + m_pImages->setscanflags(false); + m_usb.reset(); } } @@ -490,14 +517,24 @@ void GScanO200::usbmain() continue; } - if (gcap.resolution_dst == 300.0f && gcap.en_fold) { - if (m_pImages->orginimgcount() > 1) + //if (gcap.resolution_dst == 300.0f && gcap.en_fold) { + // if (m_pImages->orginimgcount() > 1) + // { + // this_thread::sleep_for(chrono::milliseconds(100)); + // continue; + // } + //} + + if (gcap.resolution_dst >= 300.0f) + { + if (m_pImages->orginimgcount() > 2) { - this_thread::sleep_for(chrono::milliseconds(100)); + this_thread::sleep_for(chrono::milliseconds(10)); continue; } } + USBCB usbcb = Get_Scanner_Status(); switch (usbcb.u32_Data) { case HAVE_IMAGE: diff --git a/huagao/Device/ImageMatQueue.cpp b/huagao/Device/ImageMatQueue.cpp index 21a2c233..0369feb7 100644 --- a/huagao/Device/ImageMatQueue.cpp +++ b/huagao/Device/ImageMatQueue.cpp @@ -132,7 +132,7 @@ void ImageMatQueue::setparam(const GScanCap& param) + "\n is_autotext : " + to_string(scanParam.is_autotext) + "\n is_backrotate180 : " + to_string(scanParam.is_backrotate180) + "\n is_duplex : " + to_string(scanParam.is_duplex) + "\n is_switchfrontback : " + to_string(scanParam.is_switchfrontback) + "\n multi_output_red : " + to_string(scanParam.multi_output_red) + "\n paperAlign : " + to_string(scanParam.paperAlign) + "\n papertype : " + to_string(scanParam.papertype) + "\n resolution_dst : " + to_string(scanParam.resolution_dst) + "\n scannum : " + to_string(scanParam.scannum) + "\n sharpen : " + to_string(scanParam.sharpen)+ "\n Pixtype : "+to_string(scanParam.pixtype); - FileTools::write_log("2.txt", outinfo); + FileTools::write_log("D:\\2.txt", outinfo); #endif // DEBUG m_iaList.clear(); diff --git a/huagao/Device/JsonConfig.cpp b/huagao/Device/JsonConfig.cpp index 4b85c138..2bbb34a9 100644 --- a/huagao/Device/JsonConfig.cpp +++ b/huagao/Device/JsonConfig.cpp @@ -385,8 +385,8 @@ std::vector JsonConfig::parseJsonFromString(const std::string str) itmEnSwitchFrontBack.Get(i, b_value); cfp.EnSwitchFrontBack = b_value; - itmBrtnes.Get(i, i_value); - cfp.Brightness= i_value; + itmBrtnes.Get(i, f_value); + cfp.Brightness= f_value; itmAutoCrnt.Get(i,b_value); cfp.EnAutoContrast=b_value; itmContrast.Get(i,i_value); diff --git a/huagao/Device/PublicFunc.cpp b/huagao/Device/PublicFunc.cpp index bcce2832..537dc767 100644 --- a/huagao/Device/PublicFunc.cpp +++ b/huagao/Device/PublicFunc.cpp @@ -425,9 +425,22 @@ int GetContrastLevel(float contrast) { if (contrast >= -1000.0f && contrast < -666.0f) { ret = 1; } else if (contrast >= -666.0f && contrast < -333.0f) { ret = 2; } else if (contrast >= -333.0f && contrast < 0.0f) { ret = 3; } - else if (contrast > 0.0f && contrast < 333.0f) { ret = 5; } - else if (contrast >= 333.0f && contrast < 666.0f) { ret = 6; } - else if (contrast >= 666.0f && contrast <= 1000.0f) { ret = 7; } + else if (contrast > 0.0f && contrast <= 333.0f) { ret = 5; } + else if (contrast > 333.0f && contrast <= 666.0f) { ret = 6; } + else if (contrast > 666.0f && contrast <= 1000.0f) { ret = 7; } + return ret; +} + +CString GetHidedlgPath() +{ + TCHAR szIniFile[MAX_PATH] = { 0 }; + SHGetSpecialFolderPath(NULL, szIniFile, CSIDL_WINDOWS, TRUE); + _tcscat(szIniFile, _T("\\twain_32\\HuaGoScan\\hidedlg.exe")); + int iLen = WideCharToMultiByte(CP_ACP, 0, szIniFile, -1, NULL, 0, NULL, NULL); + char* chRtn = new char[iLen * sizeof(char)]; + WideCharToMultiByte(CP_ACP, 0, szIniFile, -1, chRtn, iLen, NULL, NULL); + CString ret(chRtn); + delete[] chRtn; return ret; } diff --git a/huagao/Device/PublicFunc.h b/huagao/Device/PublicFunc.h index dc607c08..aaa4f99a 100644 --- a/huagao/Device/PublicFunc.h +++ b/huagao/Device/PublicFunc.h @@ -264,6 +264,7 @@ float GetContrast(int level); int GetMappingBrightnessValue(float in); int GetMappingContrastValue(float in); int GetContrastLevel(float contrast); +CString GetHidedlgPath(); string getOSInfo(); string getManufactureID(); string getCpuType(); diff --git a/huagao/GscanJsonConfig.cpp b/huagao/GscanJsonConfig.cpp index ad8b76d0..6f754252 100644 --- a/huagao/GscanJsonConfig.cpp +++ b/huagao/GscanJsonConfig.cpp @@ -26,7 +26,7 @@ GScanCap GscanJsonConfig::GetDefaultGscancapValue() gcap.is_duplex = TRUE; gcap.is_autodiscradblank_normal = FALSE; gcap.is_autodiscradblank_vince = FALSE; - gcap.is_switchfrontback = TRUE; + gcap.is_switchfrontback = FALSE; gcap.resolution_dst = 200.0f; gcap.resolution_native = 200.0f; @@ -55,7 +55,7 @@ GScanCap GscanJsonConfig::GetDefaultGscancapValue() gcap.hardwarecaps.en_stapledetect = FALSE;//默认不开启订书针检测 gcap.hardwarecaps.skrewdetectlevel = 3;//默认处于3挡 gcap.hardwarecaps.capturepixtype = 2;//彩色模式 - gcap.imageRotateDegree = 90.0f;//默认不进行旋转 + gcap.imageRotateDegree = 0.0f;//默认不进行旋转 gcap.is_autotext = FALSE; gcap.is_backrotate180 = FALSE; gcap.scannum = -1;//默认连续扫描 @@ -82,27 +82,28 @@ void GscanJsonConfig::SaveGscanCapConfig(const GScanCap & gcap, const std::strin outJson["Config"].Add(FLOD, (bool)(gcap.en_fold), false); outJson["Config"].Add(SWITCHFRONTBACK, (bool)(gcap.is_switchfrontback), false); - outJson["Config"].Add(BRIGHTNESS, (float)(gcap.brightness)); + outJson["Config"].Add(BRIGHTNESS, (int)(gcap.brightness)); outJson["Config"].Add(AUTOCONTRAST, (bool)(gcap.is_autocontrast), false); - outJson["Config"].Add(CONTRAST, (float)(gcap.contrast)); - outJson["Config"].Add(GAMMA_, (int)(gcap.gamma)); + outJson["Config"].Add(CONTRAST, (int)(gcap.contrast)); + outJson["Config"].Add(GAMMA_, (double)(gcap.gamma)); outJson["Config"].Add(FILTERTYPE, (int)(gcap.filter)); + outJson["Config"].Add(ENHANCECOLOR,((int)gcap.enhance_color)); outJson["Config"].Add(SHARPENTYPE, (int)(gcap.sharpen)); outJson["Config"].Add(AUTODESCREW, (bool)(gcap.autodescrew), false); outJson["Config"].Add(FILLBLACK, (bool)(gcap.fillbackground), false); outJson["Config"].Add(MULTIOUTPUT, (bool)(gcap.multi_output_red), false); outJson["Config"].Add(OUTHOLE, (bool)(gcap.fillhole.is_fillhole), false); outJson["Config"].Add(OUTHOLERATIO, (int)(gcap.fillhole.fillholeratio)); - outJson["Config"].Add(HSVCORRECT, (bool)(gcap.hsvcorrect)); + outJson["Config"].Add(HSVCORRECT, (bool)(gcap.hsvcorrect),false); outJson["Config"].Add(ULTRADETECT, (bool)(gcap.hardwarecaps.en_doublefeed), false); outJson["Config"].Add(BINDINGDETECT, (bool)(gcap.hardwarecaps.en_stapledetect), false); outJson["Config"].Add(SCANCOUNT, (int)(gcap.scannum)); - outJson["Config"].Add(DOCORIENTATION, (float)(gcap.imageRotateDegree)); - outJson["Config"].Add(AUTO_TEXT, (bool)(gcap.is_autocrop),false); + outJson["Config"].Add(DOCORIENTATION, (int)(gcap.imageRotateDegree)); + outJson["Config"].Add(AUTO_TEXT, (bool)(gcap.is_autotext),false); outJson["Config"].Add(BACKROTATE180, (bool)(gcap.is_backrotate180), false); - outJson["Config"].Add(SCREWDETECT, (bool)(gcap.hardwarecaps.en_stapledetect), false); + outJson["Config"].Add(SCREWDETECT, (bool)(gcap.hardwarecaps.en_skrewdetect), false); outJson["Config"].Add(SCREWLEVEL, (int)(gcap.hardwarecaps.skrewdetectlevel)); outJson["Config"].Add(ITEMCAPTION, (string)(gcap.Caption)); outJson["Config"].Add(SAVEPATH, (string)(gcap.SavePath)); @@ -166,7 +167,7 @@ void GscanJsonConfig::WriteJsonArrayToFile(std::vector cfgArray, const root["Config"][PAPARSIZE].Add((int)cfgArray[i].papertype); root["Config"][PAPERALIGN].Add((int)cfgArray[i].paperAlign); root["Config"][AUTOCROP].Add(i, (bool)cfgArray[i].is_autocrop); - root["Config"][RESOLUTION].Add(cfgArray[i].resolution_dst); + root["Config"][RESOLUTION].Add((int)cfgArray[i].resolution_dst); root["Config"][DUPLEX].Add(i,(bool)cfgArray[i].is_duplex); root["Config"][DISCARBLANK].Add(i, (bool)cfgArray[i].is_autodiscradblank_normal); root["Config"][DISCARBLANKVINCE].Add(i, (bool)cfgArray[i].is_autodiscradblank_vince); @@ -175,10 +176,10 @@ void GscanJsonConfig::WriteJsonArrayToFile(std::vector cfgArray, const root["Config"][FLOD].Add(i, (bool)cfgArray[i].en_fold); root["Config"][SWITCHFRONTBACK].Add(i,(bool)cfgArray[i].is_switchfrontback); - root["Config"][BRIGHTNESS].Add(cfgArray[i].brightness); + root["Config"][BRIGHTNESS].Add((int)cfgArray[i].brightness); root["Config"][AUTOCONTRAST].Add(i, (bool)cfgArray[i].is_autocontrast); - root["Config"][CONTRAST].Add(cfgArray[i].contrast); - root["Config"][GAMMA_].Add(cfgArray[i].gamma); + root["Config"][CONTRAST].Add((int)cfgArray[i].contrast); + root["Config"][GAMMA_].Add((double)cfgArray[i].gamma); root["Config"][FILTERTYPE].Add((int)cfgArray[i].filter); root["Config"][ENHANCECOLOR].Add((int)cfgArray[i].enhance_color); @@ -187,17 +188,17 @@ void GscanJsonConfig::WriteJsonArrayToFile(std::vector cfgArray, const root["Config"][FILLBLACK].Add(i, (bool)cfgArray[i].fillbackground); root["Config"][MULTIOUTPUT].Add(i, (bool)cfgArray[i].multi_output_red); root["Config"][OUTHOLE].Add(i, (bool)cfgArray[i].fillhole.is_fillhole); - root["Config"][OUTHOLERATIO].Add(cfgArray[i].fillhole.fillholeratio); + root["Config"][OUTHOLERATIO].Add((int)cfgArray[i].fillhole.fillholeratio); root["Config"][HSVCORRECT].Add(i, (bool)cfgArray[i].hsvcorrect); root["Config"][ULTRADETECT].Add(i, (bool)cfgArray[i].hardwarecaps.en_doublefeed); root["Config"][BINDINGDETECT].Add(i, (bool)cfgArray[i].hardwarecaps.en_stapledetect); root["Config"][SCANCOUNT].Add((int)cfgArray[i].scannum); - root["Config"][DOCORIENTATION].Add(cfgArray[i].imageRotateDegree); + root["Config"][DOCORIENTATION].Add((int)cfgArray[i].imageRotateDegree); root["Config"][AUTO_TEXT].Add(i, (bool)cfgArray[i].is_autotext); root["Config"][BACKROTATE180].Add(i, (bool)cfgArray[i].is_backrotate180); root["Config"][SCREWDETECT].Add(i, (bool)cfgArray[i].hardwarecaps.en_skrewdetect); - root["Config"][SCREWLEVEL].Add(cfgArray[i].hardwarecaps.skrewdetectlevel); + root["Config"][SCREWLEVEL].Add((int)cfgArray[i].hardwarecaps.skrewdetectlevel); if (cfgArray[i].Caption.c_str() != NULL) { @@ -299,10 +300,10 @@ std::vector GscanJsonConfig::parseJsonFromString(const std::string str root["Config"].Get(DISCARBLANK, itmDiscardBlk); neb::CJsonObject itmDiscardBlkVince; root["Config"].Get(DISCARBLANKVINCE, itmDiscardBlkVince); - neb::CJsonObject itmDBAreaNum; - root["Config"].Get(DB_AREANUM, itmDBAreaNum); - neb::CJsonObject itmDBDevnMax; - root["Config"].Get(DB_DEVNMAX, itmDBDevnMax); + //neb::CJsonObject itmDBAreaNum; + //root["Config"].Get(DB_AREANUM, itmDBAreaNum); + //neb::CJsonObject itmDBDevnMax; + //root["Config"].Get(DB_DEVNMAX, itmDBDevnMax); neb::CJsonObject itmEnFlod; root["Config"].Get(FLOD, itmEnFlod); neb::CJsonObject itmEnSwitchFrontBack; @@ -396,12 +397,12 @@ std::vector GscanJsonConfig::parseJsonFromString(const std::string str itmEnSwitchFrontBack.Get(i, b_value); cfp.is_switchfrontback = b_value ? 1 : 0; - itmBrtnes.Get(i, f_value); - cfp.brightness = f_value; + itmBrtnes.Get(i, i_value); + cfp.brightness = i_value; itmAutoCrnt.Get(i, b_value); cfp.is_autocontrast = b_value ? 1 : 0; - itmContrast.Get(i, f_value); - cfp.contrast = f_value; + itmContrast.Get(i, i_value); + cfp.contrast = i_value; itmGamma.Get(i, f_value); cfp.gamma = f_value; @@ -430,8 +431,8 @@ std::vector GscanJsonConfig::parseJsonFromString(const std::string str cfp.hardwarecaps.en_stapledetect = b_value ? 1 : 0; itmScanCount.Get(i, i_value); cfp.scannum = i_value; - itmDocOrientation.Get(i, f_value); - cfp.imageRotateDegree = (int)f_value; + itmDocOrientation.Get(i, i_value); + cfp.imageRotateDegree = i_value; itmAutotext.Get(i, b_value); cfp.is_autotext = b_value?1:0; itmBackRotate.Get(i, b_value); @@ -459,7 +460,7 @@ std::vector GscanJsonConfig::parseJsonFromString(const std::string str GScanCap cfp; int index; bool bvalue; - float fvalue; + double fvalue; std::string svalue; root["Config"].Get(PIXTYPE, index); @@ -487,14 +488,14 @@ std::vector GscanJsonConfig::parseJsonFromString(const std::string str root["Config"].Get(SWITCHFRONTBACK, bvalue); cfp.is_switchfrontback = bvalue?1:0; - root["Config"].Get(BRIGHTNESS, fvalue); - cfp.brightness = (float)fvalue; + root["Config"].Get(BRIGHTNESS, index); + cfp.brightness = index; root["Config"].Get(AUTOCONTRAST, bvalue); cfp.is_autocontrast = bvalue?1:0; root["Config"].Get(CONTRAST, index); - cfp.contrast = (float)index; - root["Config"].Get(GAMMA_, index); - cfp.gamma = (float)index; + cfp.contrast = index; + root["Config"].Get(GAMMA_, fvalue); + cfp.gamma = fvalue; root["Config"].Get(FILTERTYPE, index); cfp.filter = (byte)index; @@ -523,7 +524,7 @@ std::vector GscanJsonConfig::parseJsonFromString(const std::string str root["Config"].Get(SCANCOUNT, index); cfp.scannum = index; root["Config"].Get(DOCORIENTATION, index); - cfp.imageRotateDegree = (float)index; + cfp.imageRotateDegree = index; root["Config"].Get(AUTO_TEXT, bvalue); cfp.is_autotext = bvalue?1:0; root["Config"].Get(BACKROTATE180, bvalue); diff --git a/huagao/SmartEdit.cpp b/huagao/SmartEdit.cpp index 55a7698b..7ad4eae4 100644 --- a/huagao/SmartEdit.cpp +++ b/huagao/SmartEdit.cpp @@ -314,7 +314,7 @@ int CSmartEdit::SetValue( cdbl dvalue ) if( ! m_bUseFp ) return FALSE; - if( ( dvalue < m_dMin ) || ( dvalue > m_dMax ) ) + if( ( dvalue < m_dMin-1e-6 ) || ( dvalue > m_dMax+1e-6 ) ) return FALSE; CString buf; diff --git a/huagao/huagaods.cpp b/huagao/huagaods.cpp index 8d0f26fe..8fb22fef 100644 --- a/huagao/huagaods.cpp +++ b/huagao/huagaods.cpp @@ -138,7 +138,7 @@ static std::unique_ptr guiTwain(nullptr, DeleteWnd); static std::unique_ptr guiBridge(nullptr, DeleteWnd); #endif static std::unique_ptr guiIndicator(nullptr, DeleteWnd); - +//#define HG_VIRTUAL #ifndef HG_VIRTUAL static std::unique_ptr scanner(new GScanO200()); #else @@ -386,17 +386,15 @@ Result HuagaoDs::identityOpenDs(const Identity&) { bmInfo.biBitCount = m_scanparam->pixtype == 2 ? 24 : (m_scanparam->pixtype == 1 ? 8 : 0); m_iBitdepth = m_scanparam->pixtype == 2 ? 24 : (m_scanparam->pixtype == 1 ? 8 : 0); scanner->open(0x064B, 0x7823); + //scanner->open(0x3072, 0x0100); + if (!scanner->IsConnected()) { - //MessageBox(NULL, _T("未找到扫描仪!请检查电源或者USB连接线是否接通!"), _T("提示"), MB_SYSTEMMODAL | MB_OK | MB_ICONINFORMATION); - //CString str("201"); ShellExecute(NULL, TEXT("open"), GetHidedlgPath(), CString("201"), NULL, SW_HIDE); return checkDeviceOnline(); } hMutex = CreateMutex(NULL, FALSE, _T("LookitApp")); if (GetLastError() == ERROR_ALREADY_EXISTS) { //如果已经存在同名的Mutex会得到这个错误. CloseHandle(hMutex); - //MessageBox(NULL, _T("设备已被其他程序占用,请关闭占用程序之后再重试!"), _T("提示"), MB_OK); - //CString str("202"); ShellExecute(NULL, TEXT("open"), GetHidedlgPath(), CString("202"), NULL, SW_HIDE); return seqError(); } @@ -462,15 +460,13 @@ Result HuagaoDs::identityOpenDs(const Identity&) { data = Capability::createEnumeration( { Compression::None, Compression::Group4 }, m_compression == Compression::None ? 0 : 1, 0); return success(); - - case Msg::Reset: - m_compression = Compression::None; // fallthrough case Msg::GetCurrent: data = Capability::createOneValue(m_compression); return success(); - + case Msg::Reset: case Msg::GetDefault: + m_compression = Compression::None; data = Capability::createOneValue(Compression::None); return success(); @@ -499,7 +495,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) { return success(); case Msg::Reset: - m_iBitdepth = 24; + m_iBitdepth = 8; data = Capability::createOneValue(UInt16(m_iBitdepth)); break; case Msg::GetCurrent: @@ -507,7 +503,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) { return success(); case Msg::GetDefault: - data = Capability::createOneValue(24); + data = Capability::createOneValue(8); return success(); case Msg::Set: { @@ -548,13 +544,13 @@ Result HuagaoDs::identityOpenDs(const Identity&) { { PixelType::BlackWhite, PixelType::Gray, PixelType::Rgb }, (int)(m_scanparam->pixtype), (int)PixelType::Gray); return success(); - case Msg::Reset: - m_scanparam->pixtype = (byte)PixelType::Gray; case Msg::GetCurrent: data = Capability::createOneValue((PixelType)(m_scanparam->pixtype)); return success(); case Msg::GetDefault: + case Msg::Reset: + m_scanparam->pixtype = (byte)PixelType::Gray; data = Capability::createOneValue(PixelType::Gray); return success(); @@ -594,9 +590,8 @@ Result HuagaoDs::identityOpenDs(const Identity&) { return success(); case Msg::Reset: - m_jpegQuality = 80; - return success(); case Msg::GetDefault: + m_jpegQuality = 80; data = Capability::createOneValue(CapType::IJpegQuality, 80); return success(); @@ -622,15 +617,14 @@ Result HuagaoDs::identityOpenDs(const Identity&) { data = Capability::createEnumeration( { XferMech::Native, XferMech::Memory, XferMech::File }, m_capXferMech == XferMech::Native ? 0 : (m_capXferMech == XferMech::Memory ? 1 : 2), 0); return success(); - - case Msg::Reset: - m_capXferMech = XferMech::Native; // fallthrough case Msg::GetCurrent: data = Capability::createOneValue(m_capXferMech); return success(); case Msg::GetDefault: + case Msg::Reset: + m_capXferMech = XferMech::Native; data = Capability::createOneValue(XferMech::Native); return success(); @@ -672,6 +666,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) { } case Msg::GetDefault: case Msg::Reset: { + m_scanparam->resolution_dst = 200.0f; data = Capability::createOneValue(data.type(), Fix32(200.0)); return success(); } @@ -731,27 +726,27 @@ Result HuagaoDs::identityOpenDs(const Identity&) { return success(); case Msg::GetDefault: case Msg::Reset: + m_scanparam->papertype =(int)PaperSize::A3; data = Capability::createOneValue(data.type(), UInt16(PaperSize::A3)); return success(); case Msg::Set: { - auto res = data.currentItem(); + auto paper = data.currentItem(); std::list::iterator resIter = paperSizeList.begin(); bool contains = false; for (resIter; resIter != paperSizeList.end(); resIter++) { - if (*resIter == res) { + if (*resIter == paper) { contains = true; break; } } if (contains) { - m_scanparam->papertype = (byte)res; - if (res == (byte)PaperSize::None) - { - m_scanparam->autodescrew = 1;//设置papertype为NONE 则默认自动裁切 + m_scanparam->papertype = (byte)paper; + if (paper == (byte)PaperSize::None) m_scanparam->paperAlign = PaperAlign::Rot0; - } - + m_autosize = paper == (byte)PaperSize::None? (UInt16)AutoSize::Auto:(UInt16)AutoSize::None; + m_autoboarderdetcet = paper == (byte)PaperSize::None; + m_scanparam->is_autocrop = paper == (byte)PaperSize::None?1:0; return success(); } return badValue(); @@ -768,14 +763,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) { data = Capability::createEnumeration( { Orientation::Portrait, Orientation::Landscape }, m_scanparam->paperAlign, 0); return success(); - - case Msg::Reset: - m_scanparam->paperAlign = PaperAlign::Rot0; case Msg::GetCurrent: data = Capability::createOneValue((Orientation)(m_scanparam->paperAlign)); return success(); - + case Msg::Reset: case Msg::GetDefault: + m_scanparam->paperAlign = PaperAlign::Rot0; data = Capability::createOneValue(Orientation::Portrait); return success(); @@ -807,19 +800,18 @@ Result HuagaoDs::identityOpenDs(const Identity&) { } } data = Capability::createEnumeration( - { Fix32(0.0),Fix32(90.0),Fix32(180.0),Fix32(270.0) }, + { Fix32(0.0f),Fix32(90.0f),Fix32(180.0f),Fix32(270.0f) }, index == -1 ? 0 : index, 0); return success(); } - case Msg::Reset: - m_scanparam->imageRotateDegree = 0.0; case Msg::GetCurrent: data = Capability::createOneValue(Fix32(m_scanparam->imageRotateDegree)); return success(); - + case Msg::Reset: case Msg::GetDefault: - data = Capability::createOneValue(Fix32(0.0)); + m_scanparam->imageRotateDegree = 0.0f; + data = Capability::createOneValue(Fix32(0.0f)); return success(); case Msg::Set: { @@ -868,15 +860,14 @@ Result HuagaoDs::identityOpenDs(const Identity&) { { Bool(), Bool(true) }, Bool(m_bIndicator)); return success(); - case Msg::Reset: - m_bIndicator = true; // fallthrough case Msg::GetCurrent: data = Capability::createOneValue(m_bIndicator); return success(); - + case Msg::Reset: case Msg::GetDefault: - data = Capability::createOneValue(false); + m_bIndicator = true; + data = Capability::createOneValue(m_bIndicator); return success(); case Msg::Set: { @@ -902,13 +893,13 @@ Result HuagaoDs::identityOpenDs(const Identity&) { case Msg::Get: data = Capability::createOneValue(true); return success(); - case Msg::Reset: - m_bFeederEnabled = true; case Msg::GetCurrent: data = Capability::createOneValue(m_bFeederEnabled); return success(); case Msg::GetDefault: + case Msg::Reset: + m_bFeederEnabled = true; data = Capability::createOneValue(true); return success(); @@ -933,14 +924,13 @@ Result HuagaoDs::identityOpenDs(const Identity&) { { Bool(), Bool(true) }, Bool(m_scanparam->is_duplex)); return success(); - case Msg::Reset: - m_scanparam->is_duplex = true; case Msg::GetCurrent: data = Capability::createOneValue(m_scanparam->is_duplex); return success(); - + case Msg::Reset: case Msg::GetDefault: - data = Capability::createOneValue(false); + m_scanparam->is_duplex = true; + data = Capability::createOneValue(true); return success(); case Msg::Set: { @@ -963,15 +953,13 @@ Result HuagaoDs::identityOpenDs(const Identity&) { data = Capability::createEnumeration( { Bool(), Bool(true) }, Bool(m_bAutoFeed)); return success(); - - case Msg::Reset: - m_bAutoFeed = true; // fallthrough case Msg::GetCurrent: data = Capability::createOneValue(m_bAutoFeed); return success(); - + case Msg::Reset: case Msg::GetDefault: + m_bAutoFeed = true; data = Capability::createOneValue(true); return success(); @@ -986,6 +974,34 @@ Result HuagaoDs::identityOpenDs(const Identity&) { } }; + //m_query[CapType::AutoScan] = msgSupportGetAllSetReset; + //m_caps[CapType::AutoScan] = [this](Msg msg, Capability& data) -> Result { + // switch (msg) { + // case Msg::Get: + // data = Capability::createEnumeration( + // { Bool(), Bool(true) }, Bool(m_bAutoFeed)); + // return success(); + // // fallthrough + // case Msg::GetCurrent: + // data = Capability::createOneValue(m_bAutoFeed); + // return success(); + // case Msg::Reset: + // case Msg::GetDefault: + // m_bAutoFeed = true; + // data = Capability::createOneValue(true); + // return success(); + + // case Msg::Set: { + // auto mech = data.currentItem(); + // m_bAutoFeed = mech; + // return success(); + // } + + // default: + // return capBadOperation(); + // } + //}; + m_query[CapType::IImageFileFormat] = msgSupportGetAllSetReset; m_caps[CapType::IImageFileFormat] = [this](Msg msg, Capability& data) -> Result { switch (msg) { @@ -1081,12 +1097,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) { case Msg::Get: data = Capability::createEnumeration( { Bool(), Bool(true) }, Bool(m_scanparam->is_autotext)); - case Msg::Reset: case Msg::GetCurrent: - m_scanparam->is_autotext = false; data = Capability::createOneValue(m_scanparam->is_autotext); return success(); + case Msg::Reset: case Msg::GetDefault: + m_scanparam->is_autotext = false; data = Capability::createOneValue(false); return success(); case Msg::Set: { @@ -1162,7 +1178,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) { switch (msg) { case Msg::Get: data = Capability::createEnumeration( - { AutoSize::None, AutoSize::Auto,AutoSize::Current }, (UInt16)m_autosize, 0); + { AutoSize::None, AutoSize::Auto}, (UInt16)m_autosize, 0); return success(); // fallthrough case Msg::GetCurrent: @@ -1170,6 +1186,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) { return success(); case Msg::Reset: case Msg::GetDefault: + m_autosize = (UInt16)AutoSize::None; data = Capability::createOneValue(AutoSize::None); return success(); @@ -1180,6 +1197,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) { m_scanparam->is_autocrop = 1; m_scanparam->papertype = (byte)Twpp::PaperSize::None; m_scanparam->paperAlign = PaperAlign::Rot0; + m_autoboarderdetcet = true; + } + else + { + m_autoboarderdetcet = false; + m_scanparam->is_autocrop = 0; } m_autosize = (byte)autosize; return success(); @@ -1198,7 +1221,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) { return success(); case Msg::Reset: case Msg::GetCurrent: - m_autoscan = true; + m_autoboarderdetcet = false; data = Capability::createOneValue(m_autoboarderdetcet); return success(); @@ -1213,6 +1236,11 @@ Result HuagaoDs::identityOpenDs(const Identity&) { m_scanparam->is_autocrop = true; m_scanparam->papertype = (byte)Twpp::PaperSize::None; m_scanparam->paperAlign = PaperAlign::Rot0; + m_autosize = (UInt16)AutoSize::Auto; + } + else + { + m_autosize = (UInt16)AutoSize::None; } m_autoboarderdetcet = autodetectborder; return success(); @@ -1345,8 +1373,8 @@ Result HuagaoDs::identityOpenDs(const Identity&) { data = Capability::createOneValue((CapType)(CapTypeEx::TwEx_IFillBackground), m_scanparam->fillbackground); return success(); case Msg::Reset: - m_scanparam->fillbackground = false; case Msg::GetDefault: + m_scanparam->fillbackground = false; data = Capability::createOneValue((CapType)(CapTypeEx::TwEx_IFillBackground), Bool(false)); return success(); case Msg::Set: { @@ -1366,12 +1394,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) { case Msg::Get: data = Capability::createEnumeration((CapType)(CapTypeEx::TwEx_IFillHole), { Bool(),Bool(true) }, Bool(m_scanparam->fillhole.is_fillhole), 0); return success(); - case Msg::Reset: - m_scanparam->fillhole.is_fillhole = false; case Msg::GetCurrent: data = Capability::createOneValue((CapType)(CapTypeEx::TwEx_IFillHole), m_scanparam->fillhole.is_fillhole); return success(); case Msg::GetDefault: + case Msg::Reset: + m_scanparam->fillhole.is_fillhole = false; data = Capability::createOneValue((CapType)(CapTypeEx::TwEx_IFillHole), Bool(false)); return success(); case Msg::Set: { @@ -1390,12 +1418,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) { case Msg::Get: data = Capability::createOneValue((CapType)(CapTypeEx::TwEx_IFillHoleRatio), m_scanparam->fillhole.fillholeratio); return success(); - case Msg::Reset: - m_scanparam->fillhole.fillholeratio = 10; case Msg::GetCurrent: data = Capability::createOneValue((CapType)(CapTypeEx::TwEx_IFillHoleRatio), m_scanparam->fillhole.fillholeratio); return success(); case Msg::GetDefault: + case Msg::Reset: + m_scanparam->fillhole.fillholeratio = 10; data = Capability::createOneValue((CapType)(CapTypeEx::TwEx_IFillHoleRatio), Int32(10)); return success(); case Msg::Set: { @@ -1418,12 +1446,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) { case Msg::Get: data = Capability::createEnumeration((CapType)(CapTypeEx::TwEx_IMultiOutputRed), { Bool(),Bool(true) }, Bool(m_scanparam->multi_output_red), 0); return success(); - case Msg::Reset: - m_scanparam->multi_output_red = false; case Msg::GetCurrent: data = Capability::createOneValue((CapType)(CapTypeEx::TwEx_IMultiOutputRed), m_scanparam->multi_output_red); return success(); case Msg::GetDefault: + case Msg::Reset: + m_scanparam->multi_output_red = false; data = Capability::createOneValue((CapType)(CapTypeEx::TwEx_IMultiOutputRed), Bool(false)); return success(); case Msg::Set: { @@ -1452,8 +1480,8 @@ Result HuagaoDs::identityOpenDs(const Identity&) { data = Capability::createOneValue((CapType)(CapTypeEx::TwEx_HsvCorrect), m_scanparam->hsvcorrect); return success(); case Msg::Reset: - m_scanparam->hsvcorrect = false; case Msg::GetDefault: + m_scanparam->hsvcorrect = false; data = Capability::createOneValue((CapType)(CapTypeEx::TwEx_HsvCorrect), Bool(false)); return success(); case Msg::Set: { @@ -1474,13 +1502,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) { m_scanparam->filter, 0); return success(); - case Msg::Reset: - m_scanparam->filter = (byte)Filter::None; - return success(); case Msg::GetCurrent: data = Capability::createOneValue((Filter)m_scanparam->filter); return success(); case Msg::GetDefault: + case Msg::Reset: + m_scanparam->filter = (byte)Filter::None; data = Capability::createOneValue(Filter::None); return success(); case Msg::Set: { @@ -1510,13 +1537,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) { m_scanparam->enhance_color, 0); return success(); - case Msg::Reset: - m_scanparam->enhance_color = Enchace_Color::Enhance_None; - return success(); case Msg::GetCurrent: data = Capability::createOneValue((CapType)(CapTypeEx::TwEx_IEnhanceColor), (Enchace_Color)(m_scanparam->enhance_color)); return success(); case Msg::GetDefault: + case Msg::Reset: + m_scanparam->enhance_color = Enchace_Color::Enhance_None; data = Capability::createOneValue((CapType)(CapTypeEx::TwEx_IEnhanceColor), Enchace_Color::Enhance_None); return success(); case Msg::Set: { @@ -1550,12 +1576,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) { m_scanparam->sharpen, 0); return success(); - case Msg::Reset: - m_scanparam->sharpen = SharpenBlur::Sharpen_None; case Msg::GetCurrent: data = Capability::createOneValue((CapType)(CapTypeEx::TwEx_Sharpen), (SharpenBlur)(m_scanparam->sharpen)); return success(); case Msg::GetDefault: + case Msg::Reset: + m_scanparam->sharpen = SharpenBlur::Sharpen_None; data = Capability::createOneValue((CapType)(CapTypeEx::TwEx_Sharpen), SharpenBlur::Sharpen_None); return success(); case Msg::Set: { @@ -1577,12 +1603,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) { case Msg::Get: data = Capability::createRange(Fix32(-1000.0f), Fix32(1000.0f), Fix32(333.3f), Fix32(m_scanparam->brightness), Fix32(0.0)); return success(); - case Msg::Reset: - m_scanparam->brightness = 0.0f; case Msg::GetCurrent: data = Capability::createOneValue(Fix32(m_scanparam->brightness)); return success(); case Msg::GetDefault: + case Msg::Reset: + m_scanparam->brightness = 0.0f; data = Capability::createOneValue(Fix32(0.0f)); return success(); case Msg::Set: { @@ -1603,12 +1629,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) { case Msg::Get: data = Capability::createRange(Fix32(-1000.0f), Fix32(1000.0f), Fix32(333.3f), Fix32(m_scanparam->contrast), Fix32(0.0)); return success(); - case Msg::Reset: - m_scanparam->contrast = 0.0f; case Msg::GetCurrent: data = Capability::createOneValue(Fix32(m_scanparam->contrast)); return success(); case Msg::GetDefault: + case Msg::Reset: + m_scanparam->contrast = 0.0f; data = Capability::createOneValue(Fix32(0.0f)); return success(); case Msg::Set: { @@ -1629,12 +1655,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) { case Msg::Get: data = Capability::createRange(Fix32(0.0f), Fix32(5.0f), Fix32(1.0f), Fix32(m_scanparam->gamma), Fix32(1.0)); return success(); - case Msg::Reset: - m_scanparam->gamma = 1.0f; case Msg::GetCurrent: data = Capability::createOneValue(Fix32(m_scanparam->gamma)); return success(); case Msg::GetDefault: + case Msg::Reset: + m_scanparam->gamma = 1.0f; data = Capability::createOneValue(Fix32(0.0f)); return success(); case Msg::Set: { @@ -1711,12 +1737,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) { case Msg::Get: data = Capability::createEnumeration((CapType)(CapTypeEx::TwEx_ScrewDetectEnable), { Bool(),Bool(true) }, Bool(m_scanparam->hardwarecaps.en_skrewdetect), 0); return success(); - case Msg::Reset: - m_scanparam->hardwarecaps.en_skrewdetect = false; case Msg::GetCurrent: data = Capability::createOneValue((CapType)(CapTypeEx::TwEx_ScrewDetectEnable), m_scanparam->hardwarecaps.en_skrewdetect); return success(); case Msg::GetDefault: + case Msg::Reset: + m_scanparam->hardwarecaps.en_skrewdetect = false; data = Capability::createOneValue((CapType)(CapTypeEx::TwEx_ScrewDetectEnable), Bool(false)); return success(); case Msg::Set: { @@ -1735,12 +1761,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) { case Msg::Get: data = Capability::createOneValue((CapType)(CapTypeEx::TwEx_ScrewLevel), m_scanparam->hardwarecaps.skrewdetectlevel); return success(); - case Msg::Reset: - m_scanparam->hardwarecaps.skrewdetectlevel = 3; case Msg::GetCurrent: data = Capability::createOneValue((CapType)(CapTypeEx::TwEx_ScrewLevel), m_scanparam->hardwarecaps.skrewdetectlevel); return success(); case Msg::GetDefault: + case Msg::Reset: + m_scanparam->hardwarecaps.skrewdetectlevel = 3; data = Capability::createOneValue((CapType)(CapTypeEx::TwEx_ScrewLevel), UInt8(3)); return success(); case Msg::Set: { @@ -1763,12 +1789,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) { case Msg::Get: data = Capability::createEnumeration((CapType)(CapTypeEx::TwEx_StableDetectEnable), { Bool(),Bool(true) }, Bool(m_scanparam->hardwarecaps.en_stapledetect), 0); return success(); - case Msg::Reset: - m_scanparam->hardwarecaps.en_stapledetect = false; case Msg::GetCurrent: data = Capability::createOneValue((CapType)(CapTypeEx::TwEx_StableDetectEnable), m_scanparam->hardwarecaps.en_stapledetect); return success(); case Msg::GetDefault: + case Msg::Reset: + m_scanparam->hardwarecaps.en_stapledetect = false; data = Capability::createOneValue((CapType)(CapTypeEx::TwEx_StableDetectEnable), Bool(false)); return success(); case Msg::Set: { @@ -1788,12 +1814,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) { case Msg::Get: data = Capability::createEnumeration(CapType::DoubleFeedDetection, { Bool(),Bool(true) }, Bool(m_scanparam->hardwarecaps.en_doublefeed), 0); return success(); - case Msg::Reset: - m_scanparam->hardwarecaps.en_doublefeed = false; case Msg::GetCurrent: data = Capability::createOneValue(CapType::DoubleFeedDetection, m_scanparam->hardwarecaps.en_doublefeed); return success(); case Msg::GetDefault: + case Msg::Reset: + m_scanparam->hardwarecaps.en_doublefeed = false; data = Capability::createOneValue(CapType::DoubleFeedDetection, Bool(false)); return success(); case Msg::Set: { @@ -1827,7 +1853,7 @@ Result HuagaoDs::identityCloseDs(const Identity&) { ReleaseMutex(hMutex); CloseHandle(hMutex); } - saveGscanCapSetting(); + //saveGscanCapSetting(); return success(); } @@ -1900,6 +1926,7 @@ Result HuagaoDs::userInterfaceDisable(const Identity&, UserInterface& ui) { Result HuagaoDs::userInterfaceEnable(const Identity&, UserInterface& ui) { m_pendingXfers = 1; m_memXferYOff = 0; + scanner->ResetMsgFiter(); //writelog("userInterfaceEnable"); if (!ui.showUi()) { // this is an exception when we want to set state explicitly, notifyXferReady can be called only in enabled state @@ -2004,7 +2031,7 @@ Result HuagaoDs::imageMemXferGet(const Identity& origin, ImageMemXfer& data) { if (rows == 0) { return seqError(); // image already transfered in this session } - cv::Mat mat = cv::imdecode(bmpData, cv::IMREAD_GRAYSCALE); + //cv::Mat mat = cv::imdecode(bmpData, cv::IMREAD_GRAYSCALE); //G4Tiff gt(mat); //vector cmpdata; //gt.GetCompressedData(cmpdata); @@ -2185,6 +2212,7 @@ Twpp::Result HuagaoDs::showTwainUI(Twpp::UserInterface& ui, bool bUiOnly) auto scanFunction = [this](const GScanCap& caps) { m_pendingXfers = 1; m_scanparam.reset(new GScanCap(caps)); + saveGscanCapSetting(); if (startScan() == success()) { notifyXferReady(); //FileTools::write_log("E:\\Users\\huago\\Desktop\\1.txt", "notifyXferReady"); @@ -2197,6 +2225,7 @@ Twpp::Result HuagaoDs::showTwainUI(Twpp::UserInterface& ui, bool bUiOnly) //!< ui only to confirm button push auto confirmFunction = [this](const GScanCap& caps) { m_scanparam.reset(new GScanCap(caps)); + saveGscanCapSetting(); notifyCloseOk(); }; @@ -2244,6 +2273,12 @@ void HuagaoDs::updataGscanCap() GScanCap cfs = js.ReadGscanCap(); cfs.resolution_native = 200.0f; cfs.threshold = 128; + if (cfs.is_autocrop) + { + m_autoboarderdetcet = true; + m_autosize = (UInt16)AutoSize::Auto; + } + m_scanparam.reset(new GScanCap(cfs)); } diff --git a/huagao/huagaotwds.pro b/huagao/huagaotwds.pro index fc1f9956..e3ab9b09 100644 --- a/huagao/huagaotwds.pro +++ b/huagao/huagaotwds.pro @@ -73,14 +73,14 @@ SOURCES += huagaods.cpp \ ImageProcess/ImageApplyChannel.cpp \ ImageProcess/ImageApplyCrop.cpp \ ImageProcess/ImageApplyDiscardBlank.cpp \ + ImageProcess/ImageApplyDetachNoise.cpp \ + ImageProcess/ImageApplyHSVCorrect.cpp \ ImageProcess/ImageApplyOutHole.cpp \ ImageProcess/ImageApplyResize.cpp \ ImageProcess/ImageApplyRotation.cpp \ ImageProcess/ImageApplySharpen.cpp \ ImageProcess/ImageProcess_Public.cpp \ ImageProcess/ImageApplyConcatenation.cpp \ - ImageProcess/ImageApplyDetachNoise.cpp \ - ImageProcess/ImageApplyHSVCorrect.cpp \ GscanJsonConfig.cpp \ Sliders.cpp \ SmartEdit.cpp \ @@ -129,15 +129,15 @@ HEADERS += huagaods.hpp \ ImageProcess/ImageApplyChannel.h \ ImageProcess/ImageApplyCrop.h \ ImageProcess/ImageApplyDiscardBlank.h \ - ImageProcess/ImageApplyHeaders.h \ ImageProcess/ImageApplyDetachNoise.h \ + ImageProcess/ImageApplyHSVCorrect.h \ + ImageProcess/ImageApplyHeaders.h \ ImageProcess/ImageApplyOutHole.h \ ImageProcess/ImageApplyResize.h \ ImageProcess/ImageApplyRotation.h \ ImageProcess/ImageApplySharpen.h \ ImageProcess/ImageProcess_Public.h \ ImageProcess/ImageApplyConcatenation.h \ - ImageProcess/ImageApplyHSVCorrect.h \ GscanJsonConfig.h \ MapFinder.h \ Sliders.h \