diff --git a/huagao/CAboutDlg.cpp b/huagao/CAboutDlg.cpp index af74672d..d5ae3e82 100644 --- a/huagao/CAboutDlg.cpp +++ b/huagao/CAboutDlg.cpp @@ -53,15 +53,17 @@ BOOL CAboutDlg::OnInitDialog() CStatic* pStatic = (CStatic*)GetDlgItem(IDC_PICABOUTHUAGO); #ifdef MAKEHUAGAO HBITMAP hBitmap = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BMPABOUTDLG)); +#elif defined HANVON + HBITMAP hBitmap = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP3)); #else defined LANXUM HBITMAP hBitmap = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP2)); #endif pStatic->ModifyStyle(0xF, SS_BITMAP | SS_CENTERIMAGE); pStatic->SetBitmap(hBitmap); -#ifndef MAKEHUAGAO -#ifndef LANXUM +#if defined MAKEHUAGAO || defined LANXUM || defined HANVON + GetDlgItem(IDC_PICABOUTHUAGO)->ShowWindow(TRUE); +#else GetDlgItem(IDC_PICABOUTHUAGO)->ShowWindow(FALSE); -#endif // !LANXUM #endif SetDlgItemText(IDC_LBDESIGNERVALUE, COMPANY_NAME); SetDlgItemText(IDC_LBCOMPANYADDRESS, COMPANY_ADDRESS); diff --git a/huagao/CBasicPage.cpp b/huagao/CBasicPage.cpp index 1c4fb66b..379291d4 100644 --- a/huagao/CBasicPage.cpp +++ b/huagao/CBasicPage.cpp @@ -181,6 +181,7 @@ BEGIN_MESSAGE_MAP(CBasicPage, CTabPageSSL) ON_CBN_SELCHANGE(IDC_CMBRESLUTION, &CBasicPage::OnCbnSelchangeCmbreslution) ON_CBN_SELCHANGE(IDC_CMBDUPLEX, &CBasicPage::OnCbnSelchangeCmbduplex) ON_BN_CLICKED(IDC_BTNDISCARDSETTING, &CBasicPage::OnClickedBtndiscardsetting) + ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDERDPI, &CBasicPage::OnNMReleasedcaptureSliderdpi) END_MESSAGE_MAP() @@ -270,6 +271,17 @@ void CBasicPage::updateCmbDuplex(BOOL insert) //int tmp_resindex = m_cmBoxResultion->GetCurSel(); int tmp_resindex = m_Slider_Dpi.m_iPosition; int totalcount = m_cmBoxDuplex->GetCount(); + + if (tmp_duplexindex == 0) + { + GetDlgItem(IDC_CKBSWITCHFRONTBACK)->EnableWindow(FALSE); + ((CButton*)GetDlgItem(IDC_CKBSWITCHFRONTBACK))->SetCheck(FALSE); + } + else + { + GetDlgItem(IDC_CKBSWITCHFRONTBACK)->EnableWindow(TRUE); + } + if (tmp_colorindex == 0 && tmp_paperindex > 19 && tmp_resindex >= 300) { if (m_cmBoxDuplex->GetCurSel() == 4) { @@ -283,6 +295,20 @@ void CBasicPage::updateCmbDuplex(BOOL insert) m_cmBoxDuplex->InsertString(4, TEXT("对折")); } } + if (m_Slider_Dpi.m_iPosition > 300 && m_cmBoxSS->GetCount() > 20) + { + if (m_cmBoxSS->GetCurSel() >= 20) + m_cmBoxSS->SetCurSel(19); + m_cmBoxSS->DeleteString(22); + m_cmBoxSS->DeleteString(21); + m_cmBoxSS->DeleteString(20); + } + else if (m_Slider_Dpi.m_iPosition <= 300 && m_cmBoxSS->GetCount() <= 20) + { + m_cmBoxSS->InsertString(20, _T("最大扫描尺寸自动裁切")); + m_cmBoxSS->InsertString(21, _T("最大扫描尺寸")); + m_cmBoxSS->InsertString(22, _T("三联试卷")); + } #ifndef G300 if (tmp_paperindex == 19 || tmp_paperindex == 20 || tmp_paperindex == 21 || tmp_paperindex == 22 || tmp_paperindex == 1|| tmp_paperindex == 4|| tmp_paperindex == 5){ (((CButton*)GetDlgItem(IDC_CKBSIZEDETECT)))->SetCheck(false); @@ -306,3 +332,39 @@ void CBasicPage::updateCmbDuplex(BOOL insert) + + +void CBasicPage::OnNMReleasedcaptureSliderdpi(NMHDR* pNMHDR, LRESULT* pResult) +{ + // TODO: 在此添加控件通知处理程序代码 + if(pResult!=nullptr) + *pResult = 0; +#ifdef G200 + + if (m_Slider_Dpi.m_iPosition > 300 && m_cmBoxSS->GetCount() > 20) + { + if (m_cmBoxSS->GetCurSel() >= 20) + m_cmBoxSS->SetCurSel(19); + m_cmBoxSS->DeleteString(22); + m_cmBoxSS->DeleteString(21); + m_cmBoxSS->DeleteString(20); + } + else if (m_Slider_Dpi.m_iPosition <= 300 && m_cmBoxSS->GetCount() <= 20) + { + m_cmBoxSS->InsertString(20,_T("最大扫描尺寸自动裁切")); + m_cmBoxSS->InsertString(21,_T("最大扫描尺寸")); + m_cmBoxSS->InsertString(22,_T("三联试卷")); + } + if (m_Slider_Dpi.m_iPosition > 300 && m_cmBoxDuplex->GetCount() > 4) + { + if (m_cmBoxDuplex->GetCurSel() == 4) + m_cmBoxDuplex->SetCurSel(1); + m_cmBoxDuplex->DeleteString(4); + } + else if (m_Slider_Dpi.m_iPosition <= 300 && m_cmBoxDuplex->GetCount() <= 4) + { + m_cmBoxDuplex->InsertString(4, _T("对折")); + } +#endif // G200 + +} diff --git a/huagao/CBasicPage.h b/huagao/CBasicPage.h index 65c6211b..cd62f446 100644 --- a/huagao/CBasicPage.h +++ b/huagao/CBasicPage.h @@ -54,4 +54,5 @@ private: std::string m_serialNum; public: afx_msg void OnCbnSelchangeCblowpowermode(); + afx_msg void OnNMReleasedcaptureSliderdpi(NMHDR* pNMHDR, LRESULT* pResult); }; diff --git a/huagao/CTwainUI.cpp b/huagao/CTwainUI.cpp index 36b5eb57..65d6d559 100644 --- a/huagao/CTwainUI.cpp +++ b/huagao/CTwainUI.cpp @@ -66,6 +66,7 @@ BOOL CTwainUI::OnInitDialog() m_pageImageProc->ImageAutoDescrewUpdate(m_pageBasic->m_cmBoxSS->GetCurSel()); //m_pageFeedPaper->FeedAutoDescrewUpdate(m_pageBasic->m_cmBoxSS->GetCurSel()); UpdateUi(); + m_pageBasic->OnNMReleasedcaptureSliderdpi(nullptr, nullptr); }; int nPageID = 0; @@ -85,7 +86,7 @@ BOOL CTwainUI::OnInitDialog() UpdateUI(); UpdateListConfig(); dataChangeFunction(); - setvisable_size(false); + //setvisable_size(false); #ifdef G200 setvisable_sleepmode(false); #endif // G200 diff --git a/huagao/Device/G400ScanConfig.cpp b/huagao/Device/G400ScanConfig.cpp index adc3a587..511f6833 100644 --- a/huagao/Device/G400ScanConfig.cpp +++ b/huagao/Device/G400ScanConfig.cpp @@ -10,6 +10,7 @@ G400ScanConfig::G400ScanConfig(GScanCap& gcap) cfg.params.isColor = 1; else cfg.params.isColor = SupPixelTypes[gcap.pixtype]; + //cfg.params.isColor = 1; #ifdef UV cfg.params.enableUV = gcap.hardwarecaps.en_uv;//gcap.hardwarecaps.en_stapledetect==0?0:1; #else diff --git a/huagao/Device/GScan.h b/huagao/Device/GScan.h index ac79bd2c..ef9bba92 100644 --- a/huagao/Device/GScan.h +++ b/huagao/Device/GScan.h @@ -120,7 +120,7 @@ static map msgs = { {UsbSupported::USB_BULK_ERROR,"USBݶȡ"}, {UsbSupported::V4L2_AQULRE_ERROR,"ɨȡͼʧܣ"}, {UsbSupported::V4L2_IMAGE_EMPTY,"ɨͼ쳣"}, - {UsbSupported::SLEEPING,"豸ģʽ뻽ߺɨ裡"}, + {UsbSupported::SLEEPING,"豸ģʽ밴Դرߣ"}, {UsbSupported::HAVE_DOGEAR,"⵽۽ǣֹͣɨ裡"}, }; @@ -140,7 +140,7 @@ class IScanner public: IScanner() { imgreadednum = imgtransfered = roller_num = lose_image_num = 0; - is_AndroidOrLinux = false; + is_Android = false; } virtual ~IScanner() { @@ -263,7 +263,7 @@ protected: int roller_num; int scannum; int lose_image_num; - bool is_AndroidOrLinux; + bool is_Android; int error_index; }; \ No newline at end of file diff --git a/huagao/Device/GScanO1003399.cpp b/huagao/Device/GScanO1003399.cpp index be2e7dfb..d2a81a6a 100644 --- a/huagao/Device/GScanO1003399.cpp +++ b/huagao/Device/GScanO1003399.cpp @@ -127,6 +127,12 @@ int GScanO1003399::aquire_bmpdata(std::vector& bmpdata) { if ((imagecount == 0) && (!scanflag) || (sw.elapsed_s() > 30)) { + if (is_scan()) + { + sw.reset(); + continue; + } + DoEvents(); this_thread::sleep_for(chrono::milliseconds(1)); if (sw.elapsed_s() > 30.0) diff --git a/huagao/Device/GScanO400.cpp b/huagao/Device/GScanO400.cpp index ba4b3588..461592bb 100644 --- a/huagao/Device/GScanO400.cpp +++ b/huagao/Device/GScanO400.cpp @@ -264,10 +264,10 @@ std::string GScanO400::GetFWVersion() m_usb->read_bulk(&fwVersion[0], fwVersion.size()); std::this_thread::sleep_for(chrono::milliseconds(10)); } - if (fwVersion.substr(0, 2) == "G3" || fwVersion.substr(0, 2) == "G4") - is_AndroidOrLinux = false; + if (fwVersion.substr(0, 2) == "G3" || fwVersion.substr(0, 2) == "G4" ||fwVersion.substr(0,2)== "GU") + is_Android = false; else - is_AndroidOrLinux = true; + is_Android = true; return fwVersion; } return ""; @@ -333,7 +333,7 @@ BOOL GScanO400::Get_Scanner_PaperOn() Set_ErrorCode(USB_DISCONNECTED); return true; } - //return false; + USBCB usbcb = { GET_PAPER_STATUS ,2,0 }; std::lock_guard lck(m_imgLocker); m_usb->write_bulk(&usbcb, sizeof(usbcb)); @@ -386,6 +386,7 @@ void GScanO400::config_params(GScanCap& params) void GScanO400::Scanner_StartScan(UINT16 count) { scanfalg = false; + Set_ErrorCode(0); roller_num = Get_Roller_num(); std::lock_guard lck(m_imgLocker); if (m_threadUsb && m_threadUsb->joinable()) { @@ -453,29 +454,20 @@ void GScanO400::Scanner_StartScan(UINT16 count) int GScanO400::notifyscan() { - if (is_AndroidOrLinux) - return 2; if (!m_usb.get() && !m_usb->is_connected()) return -1; USBCB notify = { 0x100,0,0 }; m_usb->write_bulk(¬ify, sizeof(notify)); m_usb->read_bulk(¬ify, sizeof(notify)); - if (notify.u32_Data == 0x100) + if ((notify.u32_Data != 0x10 && GetFWVersion().length() < 10) || notify.u32_Data == 0x100) { - ShellExecute(NULL, TEXT("open"), GetHidedlgPath(), CString("ɨǴ״̬ڻѣ ʾ "), NULL, SW_HIDE); - auto now = std::chrono::system_clock::now(); - while (std::chrono::system_clock::now() < now + std::chrono::milliseconds(8000)) - { - DoEvents(); - } - ShellExecute(NULL, TEXT("open"), GetHidedlgPath(), CString("ɨǻɣ ʾ "), NULL, SW_HIDE); - return 1; + ShellExecute(NULL, TEXT("open"), GetHidedlgPath(), CString("ɨǴ״̬,밴Դѣ ʾ "), NULL, SW_HIDE); + return -1; } - else if (notify.u32_Data == 0x10) - return 0; - return -1; + return 1; } + void GScanO400::Stop_scan() { std::lock_guard lck(m_imgLocker); @@ -676,7 +668,7 @@ void GScanO400::usbmain() UpdateScanInfo(countNReaded(), get_imgTransfered()); #endif - if (!is_AndroidOrLinux) + if (!is_Android) Pop_Image(); FileTools::writelog(log_INFO, "ɨǽ" + to_string(get_imgnReaded()) + "ļʱ " + to_string(sw.elapsed_ms())); sw.reset(); @@ -703,7 +695,7 @@ void GScanO400::usbmain() case USB_BULK_ERROR: if (!haveError) { - //if (is_AndroidOrLinux) + //if (is_Android) //{ haveError = true; Set_ErrorCode(usbcb.u32_Data); diff --git a/huagao/Device/ImageMatQueue.cpp b/huagao/Device/ImageMatQueue.cpp index 7b963e1b..c4918e94 100644 --- a/huagao/Device/ImageMatQueue.cpp +++ b/huagao/Device/ImageMatQueue.cpp @@ -264,7 +264,7 @@ void ImageMatQueue::setparam(const GScanCap& param) { CImageApplyResize* apply; bool islongcustomcrop = false; - if (param.papertype == TwSS::USStatement) + if (param.papertype == TwSS::USStatement || param.normalCrop) islongcustomcrop = true; if (param.is_autocrop || islongcustomcrop) { double ratio = param.resolution_dst / 200.0;// @@ -311,6 +311,8 @@ void ImageMatQueue::setparam(const GScanCap& param) SHGetSpecialFolderPath(NULL, szIniFile, CSIDL_WINDOWS, TRUE); #ifdef LANXUM _tcscat(szIniFile, _T("\\twain_32\\LANXUMSCAN\\tessdata")); +#elif defined HANVON + _tcscat(szIniFile, _T("\\twain_32\\HanvonScan\\tessdata")); #else _tcscat(szIniFile, _T("\\twain_32\\HuaGoScan\\tessdata")); #endif // @@ -507,6 +509,9 @@ void ImageMatQueue::proc() else { auto mat = imread(info.path, rmc); + //auto mat = imread(info.path, IMREAD_COLOR); + //if (rmc == IMREAD_GRAYSCALE) + // cvtColor(mat, mat, CV_RGB2GRAY); if (!mat.empty()) { Mat front = mat(Rect(0, 0, mat.cols / 2, mat.rows)); @@ -605,7 +610,8 @@ void ImageMatQueue::proc() if (mats[i].channels() == 3) cvtColor(mats[i], mats[i], cv::COLOR_BGR2GRAY); #endif - idata = (scanParam.pixtype == 0 || (((scanParam.automaticcolortype == 0) && (scanParam.automaticcolor == true)) && (mats[i].channels() == 1))) ? (IMat2Bmp)Mat2BmpBw(mats[i], scanParam.resolution_dst) : Mat2Bmp(mats[i], scanParam.resolution_dst); + idata = (scanParam.pixtype == 0 || (((scanParam.automaticcolortype == 0) && (scanParam.automaticcolor == true)) && (mats[i].channels() == 1))) ? + (IMat2Bmp)Mat2BmpBw(mats[i], scanParam.resolution_dst) : Mat2Bmp(mats[i], scanParam.resolution_dst); if (!scanParam.multi_output_red) mats[i].release(); diff --git a/huagao/Device/ImageMatQueue.h b/huagao/Device/ImageMatQueue.h index 96b93109..62ca9173 100644 --- a/huagao/Device/ImageMatQueue.h +++ b/huagao/Device/ImageMatQueue.h @@ -49,16 +49,17 @@ public: } memcpy(m_data->data() + 54, colortable, 256 * 4); } - cv::imencode(".bmp", mat, *(m_data.get())); + //cv::imencode(".bmp", mat, *(m_data.get())); setBmpFileHeader(mat); setBmpInfoHeader(mat, res); - //uchar* data = m_data->data() + headersize + bmpdatasize; - //uchar* matdata = mat.data; - //for (int i = 0; i < mat.rows; i++) { - // data -= m_datalinesize; - // memcpy(data, matdata, step); - // matdata += step; - //} + + uchar* data = m_data->data() + headersize + bmpdatasize; + uchar* matdata = mat.data; + for (int i = 0; i < mat.rows; i++) { + data -= m_datalinesize; + memcpy(data, matdata, step); + matdata += step; + } } private: void setBmpFileHeader(const cv::Mat& mat) diff --git a/huagao/Device/PublicFunc.cpp b/huagao/Device/PublicFunc.cpp index 66dd63e4..a3fb52da 100644 --- a/huagao/Device/PublicFunc.cpp +++ b/huagao/Device/PublicFunc.cpp @@ -461,6 +461,8 @@ CString GetHidedlgPath() SHGetSpecialFolderPath(NULL, szIniFile, CSIDL_WINDOWS, TRUE); #ifdef MAKEHUAGAO _tcscat(szIniFile, _T("\\twain_32\\HuaGoScan\\hidedlg.exe")); +#elif defined HANVON + _tcscat(szIniFile, _T("\\twain_32\\HanvonScan\\hidedlg.exe")); #elif defined LANXUM _tcscat(szIniFile, _T("\\twain_32\\LANXUMSCAN\\hidedlg.exe")); #else // MAKEHUAGAO diff --git a/huagao/GscanJsonConfig.cpp b/huagao/GscanJsonConfig.cpp index dd11cb81..f8221c7c 100644 --- a/huagao/GscanJsonConfig.cpp +++ b/huagao/GscanJsonConfig.cpp @@ -108,9 +108,9 @@ void GscanJsonConfig::SaveGscanCapConfig(const GScanCap & gcap, const std::strin #ifdef UV outJson["Config"].Add(ENUVMODEL, (bool)(gcap.hardwarecaps.en_uv), false); #endif - outJson["Config"].Add(BRIGHTNESS, (int)(gcap.brightness)); + outJson["Config"].Add(BRIGHTNESS, (double)(gcap.brightness)); outJson["Config"].Add(AUTOCONTRAST, (bool)(gcap.is_autocontrast), false); - outJson["Config"].Add(CONTRAST, (int)(gcap.contrast)); + outJson["Config"].Add(CONTRAST, (double)(gcap.contrast)); outJson["Config"].Add(GAMMA_, (double)(gcap.gamma)); outJson["Config"].Add(FILTERTYPE, (int)(gcap.filter)); @@ -131,10 +131,10 @@ void GscanJsonConfig::SaveGscanCapConfig(const GScanCap & gcap, const std::strin 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(NOISE, (int)(gcap.noise), false); + outJson["Config"].Add(NOISE, (int)(gcap.noise)); outJson["Config"].Add(ISCONVEX, (bool)(gcap.is_convex), false); - outJson["Config"].Add(INDENT, (int)(gcap.indent), false); - outJson["Config"].Add(AUTOCROP_THRESHOLD, (int)(gcap.AutoCrop_threshold), false); + outJson["Config"].Add(INDENT, (int)(gcap.indent)); + outJson["Config"].Add(AUTOCROP_THRESHOLD, (int)(gcap.AutoCrop_threshold)); outJson["Config"].Add(DOGEAR_DETECTION, (bool)(gcap.is_dogeardetection), false); outJson["Config"].Add(SCREWDETECT, (bool)(gcap.hardwarecaps.en_skrewdetect), false); outJson["Config"].Add(SCREWLEVEL, (int)(gcap.hardwarecaps.skrewdetectlevel)); diff --git a/huagao/SmartEdit.cpp b/huagao/SmartEdit.cpp index 8d1eeaec..2987c1f1 100644 --- a/huagao/SmartEdit.cpp +++ b/huagao/SmartEdit.cpp @@ -182,22 +182,22 @@ void CSmartEdit::OnUpdate() } else { - m_iValue = _tstoi( buf ); - if( m_iValue < m_iMin ) - { - m_iValue = m_iMin; - OnBadInput(); - } - else if( m_iValue > m_iMax ) - { - m_iValue = m_iMax; - OnBadInput(); - } - else - error = FALSE; - } - - if( m_pSlider ) + m_iValue = _tstoi(buf); + if (m_iValue < m_iMin) + { + m_iValue = m_iMin; + OnBadInput(); + } + else if (m_iValue > m_iMax) + { + m_iValue = m_iMax; + OnBadInput(); + } + else + error = FALSE; + } + + if (m_pSlider) m_pSlider->SetSlidePos( m_iValue ); if( error ) diff --git a/huagao/huagaods.cpp b/huagao/huagaods.cpp index e38ae8e0..f16ac2cc 100644 --- a/huagao/huagaods.cpp +++ b/huagao/huagaods.cpp @@ -90,6 +90,8 @@ static constexpr const Identity srcIdent( DataGroup::Image, #ifdef MAKEHUAGAO "HUAGO", +#elif defined HANVON + "HANVON", #elif defined LANXUM "LANXUM", #else // MAKEHUAGAO @@ -97,52 +99,60 @@ static constexpr const Identity srcIdent( #endif #ifdef G200 -#if defined (ISG100) -#ifdef LANXUM - "G62S Series", -#else // ISG100 - "G100 Series", -#endif -#else // ISG100 -#ifdef LANXUM - "G73S Series", -#else // ISG100 - "G200 Series", -#endif -#endif + #ifdef ISG100 + #ifdef LANXUM + "G62S Series", + #else // ISG100 + "G100 Series", + #endif + #else // ISG100 + #ifdef LANXUM + "G73S Series", + #elif defined HANVON + "HW-7000W Series", + #else // ISG100 + "G200 Series", + #endif + #endif #elif defined(G300) // G200 -#ifdef LANXUM - "G42S Series", -#else // ISG100 - "G300 Series", -#endif + #ifdef LANXUM + "G42S Series", + #elif defined HANVON + "HW-7000W Series", + #else // ISG100 + "G300 Series", + #endif #elif defined(G400) // G200 -#ifdef LANXUM - "G52S Series", -#else // ISG100 - "G400 Series", -#endif + #ifdef LANXUM + "G52S Series", + #elif defined HANVON + "HW-7000W Series", + #else // ISG100 + "G400 Series", + #endif #endif #ifdef G200 -#if defined (ISG100) -#ifdef MAKEHUAGAO - "HUAGOSCAN G100 TWAIN" -#elif defined LANXUM //!LANXUM - "LANXUMSCAN G62S TWAIN" -#else // !MAKEHUAGAO - "ZhibenScan G100 TWAIN" -#endif -#else // ISG100 -#ifdef MAKEHUAGAO - "HUAGOSCAN G200 TWAIN" -#elif defined LANXUM //!LANXUM - "LANXUMSCAN G73S TWAIN" -#else // !MAKEHUAGAO - "ZhibenScan G200 TWAIN" -#endif + #ifdef ISG100 + #ifdef MAKEHUAGAO + "HUAGOSCAN G100 TWAIN" + #elif defined LANXUM //!LANXUM + "LANXUMSCAN G62S TWAIN" + #else // !MAKEHUAGAO + "ZhibenScan G100 TWAIN" + #endif + #else // ISG100 + #ifdef MAKEHUAGAO + "HUAGOSCAN G200 TWAIN" + #elif defined HANVON + "HANVONSCAN HW-7000W TAWIN" + #elif defined LANXUM //!LANXUM + "LANXUMSCAN G73S TWAIN" + #else // !MAKEHUAGAO + "ZhibenScan G200 TWAIN" + #endif #endif #elif defined G300 // G200 #ifdef MAKEHUAGAO @@ -152,19 +162,24 @@ static constexpr const Identity srcIdent( "HUAGOSCAN G300 TWAIN" #endif +#elif defined HANVON + "HANVONSCAN HW-7000W TAWIN" + #elif defined LANXUM //!LANXUM "LANXUMSCAN G42S TWAIN" #else // !MAKEHUAGAO "ZhibenScan G300 TWAIN" #endif #elif defined(G400) // G200 -#ifdef MAKEHUAGAO - "HUAGOSCAN G400 TWAIN" -#elif defined LANXUM //!LANXUM - "LANXUMSCAN G52S TWAIN" -#else // !MAKEHUAGAO - "ZhibenScan G400 TWAIN" -#endif + #ifdef MAKEHUAGAO + "HUAGOSCAN G400 TWAIN" + #elif defined HANVON + "HANVONSCAN HW-7000W TAWIN" + #elif defined LANXUM //!LANXUM + "LANXUMSCAN G52S TWAIN" + #else // !MAKEHUAGAO + "ZhibenScan G400 TWAIN" + #endif #endif #if defined(_MSC_VER) @@ -263,7 +278,11 @@ static std::vector DeviceID{ #endif // ISG100 }; +#elif defined HANVON +static std::vector DeviceID{ + {0x2903,0x7000}, +}; #else static std::vector DeviceID{ {0x64B,0x7823}, @@ -844,8 +863,15 @@ Result HuagaoDs::identityOpenDs(const Identity&) { return checkDeviceOnline(); } scanner->open(vid, pid); - - + if (scanner->get_ErrorCode() == SLEEPING) { + if (hMutex) { + ReleaseMutex(hMutex); + CloseHandle(hMutex); + hMutex = NULL; + } + showmsg("", msgs[(UsbSupported)81]); + return seqError(); + } if (!scanner->IsConnected()) { //ShellExecute(NULL, TEXT("open"), GetHidedlgPath(), CString("201"), NULL, SW_HIDE); showmsg("", msgs[(UsbSupported)201]); @@ -1082,7 +1108,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) { m_caps[CapType::IXResolution] = [this](Msg msg, Capability& data) { switch (msg) { case Msg::Get: - data = Capability::createRange(Fix32(100.0f), Fix32(300.0f), Fix32(1.0f), Fix32(m_scanparam->resolution_dst), Fix32(200.0)); + data = Capability::createRange(Fix32(100.0f), Fix32(600.0f), Fix32(1.0f), Fix32(m_scanparam->resolution_dst), Fix32(200.0)); return success(); case Msg::GetCurrent: data = Capability::createOneValue(Fix32(m_scanparam->resolution_dst)); @@ -1094,7 +1120,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) { return success(); case Msg::Set: { auto mech = data.currentItem(); - if (mech < 100.0f || mech > 300.0f) + if (mech < 100.0f || mech > 600.0f) return badValue(); m_scanparam->resolution_dst = (float)mech; return success(); @@ -2359,13 +2385,22 @@ Twpp::Result HuagaoDs::showTwainUI(Twpp::UserInterface& ui, bool bUiOnly) //!< show ui to scan button push auto scanFunction = [this](const GScanCap& caps) { if (!scanner->IsConnected()) + { scanner->open(vid, pid); + if (!scanner->IsConnected()) + return checkDeviceOnline(); + } #ifndef G200 while (!scanner->Get_Scanner_PaperOn()) { + if (scanner->get_ErrorCode() == SLEEPING) { + showmsg("", msgs[(UsbSupported)81]); + scanner->Set_ErrorCode(0); + return seqError(); + } if (MessageBox(NULL, L"⵽ֽֽ", L"ʾ", MB_YESNO | MB_SYSTEMMODAL) == IDNO) { m_pendingXfers = 0; - return; + return seqError(); } } #endif // !G200 @@ -2375,7 +2410,7 @@ Twpp::Result HuagaoDs::showTwainUI(Twpp::UserInterface& ui, bool bUiOnly) if (!scanner->IsConnected()) { MessageBox(NULL, L"USB쳣,USB´ɨ", L"ʾ", MB_OK | MB_SYSTEMMODAL); - return; + return seqError(); } if (startScan() == success()) { @@ -2532,7 +2567,9 @@ Twpp::Result HuagaoDs::startScan() //FileTools::write_log("D:\\1.txt",info); FileTools::writelog(log_INFO, "start scan"); #ifndef G200 - scanner->notifyscan(); + if(scanner->notifyscan()<1) + return seqError(); + scanner->clear_hwerror(); #endif // diff --git a/huagao/huagaotwds.rc b/huagao/huagaotwds.rc index 6174d014..cd08bf99 100644 Binary files a/huagao/huagaotwds.rc and b/huagao/huagaotwds.rc differ diff --git a/huagao/resource.h b/huagao/resource.h index 281b74c1..5a3237ec 100644 Binary files a/huagao/resource.h and b/huagao/resource.h differ diff --git a/huagao/stdafx.h b/huagao/stdafx.h index a01afd12..2d9daad8 100644 Binary files a/huagao/stdafx.h and b/huagao/stdafx.h differ diff --git a/twpp/imagenativexfer.hpp b/twpp/imagenativexfer.hpp index c47a045f..8a90bc03 100644 --- a/twpp/imagenativexfer.hpp +++ b/twpp/imagenativexfer.hpp @@ -74,7 +74,7 @@ public: /// Mac uses QuickDraw Picture. template ConstData data() const noexcept{ - return m_handle.lock::type>(); + return m_handle.lock::type>(); } operator bool() const noexcept{