修复部分UI逻辑问题

This commit is contained in:
masayume 2021-09-23 09:19:47 +08:00
parent a9ae29134d
commit a74735c8d8
18 changed files with 223 additions and 112 deletions

View File

@ -53,15 +53,17 @@ BOOL CAboutDlg::OnInitDialog()
CStatic* pStatic = (CStatic*)GetDlgItem(IDC_PICABOUTHUAGO); CStatic* pStatic = (CStatic*)GetDlgItem(IDC_PICABOUTHUAGO);
#ifdef MAKEHUAGAO #ifdef MAKEHUAGAO
HBITMAP hBitmap = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BMPABOUTDLG)); HBITMAP hBitmap = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BMPABOUTDLG));
#elif defined HANVON
HBITMAP hBitmap = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP3));
#else defined LANXUM #else defined LANXUM
HBITMAP hBitmap = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP2)); HBITMAP hBitmap = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP2));
#endif #endif
pStatic->ModifyStyle(0xF, SS_BITMAP | SS_CENTERIMAGE); pStatic->ModifyStyle(0xF, SS_BITMAP | SS_CENTERIMAGE);
pStatic->SetBitmap(hBitmap); pStatic->SetBitmap(hBitmap);
#ifndef MAKEHUAGAO #if defined MAKEHUAGAO || defined LANXUM || defined HANVON
#ifndef LANXUM GetDlgItem(IDC_PICABOUTHUAGO)->ShowWindow(TRUE);
#else
GetDlgItem(IDC_PICABOUTHUAGO)->ShowWindow(FALSE); GetDlgItem(IDC_PICABOUTHUAGO)->ShowWindow(FALSE);
#endif // !LANXUM
#endif #endif
SetDlgItemText(IDC_LBDESIGNERVALUE, COMPANY_NAME); SetDlgItemText(IDC_LBDESIGNERVALUE, COMPANY_NAME);
SetDlgItemText(IDC_LBCOMPANYADDRESS, COMPANY_ADDRESS); SetDlgItemText(IDC_LBCOMPANYADDRESS, COMPANY_ADDRESS);

View File

@ -181,6 +181,7 @@ BEGIN_MESSAGE_MAP(CBasicPage, CTabPageSSL)
ON_CBN_SELCHANGE(IDC_CMBRESLUTION, &CBasicPage::OnCbnSelchangeCmbreslution) ON_CBN_SELCHANGE(IDC_CMBRESLUTION, &CBasicPage::OnCbnSelchangeCmbreslution)
ON_CBN_SELCHANGE(IDC_CMBDUPLEX, &CBasicPage::OnCbnSelchangeCmbduplex) ON_CBN_SELCHANGE(IDC_CMBDUPLEX, &CBasicPage::OnCbnSelchangeCmbduplex)
ON_BN_CLICKED(IDC_BTNDISCARDSETTING, &CBasicPage::OnClickedBtndiscardsetting) ON_BN_CLICKED(IDC_BTNDISCARDSETTING, &CBasicPage::OnClickedBtndiscardsetting)
ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDERDPI, &CBasicPage::OnNMReleasedcaptureSliderdpi)
END_MESSAGE_MAP() END_MESSAGE_MAP()
@ -270,6 +271,17 @@ void CBasicPage::updateCmbDuplex(BOOL insert)
//int tmp_resindex = m_cmBoxResultion->GetCurSel(); //int tmp_resindex = m_cmBoxResultion->GetCurSel();
int tmp_resindex = m_Slider_Dpi.m_iPosition; int tmp_resindex = m_Slider_Dpi.m_iPosition;
int totalcount = m_cmBoxDuplex->GetCount(); 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 (tmp_colorindex == 0 && tmp_paperindex > 19 && tmp_resindex >= 300) {
if (m_cmBoxDuplex->GetCurSel() == 4) if (m_cmBoxDuplex->GetCurSel() == 4)
{ {
@ -283,6 +295,20 @@ void CBasicPage::updateCmbDuplex(BOOL insert)
m_cmBoxDuplex->InsertString(4, TEXT("对折")); 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 #ifndef G300
if (tmp_paperindex == 19 || tmp_paperindex == 20 || tmp_paperindex == 21 || tmp_paperindex == 22 || tmp_paperindex == 1|| tmp_paperindex == 4|| tmp_paperindex == 5){ 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); (((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
}

View File

@ -54,4 +54,5 @@ private:
std::string m_serialNum; std::string m_serialNum;
public: public:
afx_msg void OnCbnSelchangeCblowpowermode(); afx_msg void OnCbnSelchangeCblowpowermode();
afx_msg void OnNMReleasedcaptureSliderdpi(NMHDR* pNMHDR, LRESULT* pResult);
}; };

View File

@ -66,6 +66,7 @@ BOOL CTwainUI::OnInitDialog()
m_pageImageProc->ImageAutoDescrewUpdate(m_pageBasic->m_cmBoxSS->GetCurSel()); m_pageImageProc->ImageAutoDescrewUpdate(m_pageBasic->m_cmBoxSS->GetCurSel());
//m_pageFeedPaper->FeedAutoDescrewUpdate(m_pageBasic->m_cmBoxSS->GetCurSel()); //m_pageFeedPaper->FeedAutoDescrewUpdate(m_pageBasic->m_cmBoxSS->GetCurSel());
UpdateUi(); UpdateUi();
m_pageBasic->OnNMReleasedcaptureSliderdpi(nullptr, nullptr);
}; };
int nPageID = 0; int nPageID = 0;
@ -85,7 +86,7 @@ BOOL CTwainUI::OnInitDialog()
UpdateUI(); UpdateUI();
UpdateListConfig(); UpdateListConfig();
dataChangeFunction(); dataChangeFunction();
setvisable_size(false); //setvisable_size(false);
#ifdef G200 #ifdef G200
setvisable_sleepmode(false); setvisable_sleepmode(false);
#endif // G200 #endif // G200

View File

@ -10,6 +10,7 @@ G400ScanConfig::G400ScanConfig(GScanCap& gcap)
cfg.params.isColor = 1; cfg.params.isColor = 1;
else else
cfg.params.isColor = SupPixelTypes[gcap.pixtype]; cfg.params.isColor = SupPixelTypes[gcap.pixtype];
//cfg.params.isColor = 1;
#ifdef UV #ifdef UV
cfg.params.enableUV = gcap.hardwarecaps.en_uv;//gcap.hardwarecaps.en_stapledetect==0?0:1; cfg.params.enableUV = gcap.hardwarecaps.en_uv;//gcap.hardwarecaps.en_stapledetect==0?0:1;
#else #else

View File

@ -120,7 +120,7 @@ static map<UsbSupported, string> msgs = {
{UsbSupported::USB_BULK_ERROR,"USB数据读取错误"}, {UsbSupported::USB_BULK_ERROR,"USB数据读取错误"},
{UsbSupported::V4L2_AQULRE_ERROR,"扫描仪取图失败!"}, {UsbSupported::V4L2_AQULRE_ERROR,"扫描仪取图失败!"},
{UsbSupported::V4L2_IMAGE_EMPTY,"扫描仪图像处理异常!"}, {UsbSupported::V4L2_IMAGE_EMPTY,"扫描仪图像处理异常!"},
{UsbSupported::SLEEPING,"设备处于休眠模式,请唤醒休眠后再扫描"}, {UsbSupported::SLEEPING,"设备处于休眠模式,请按电源键关闭休眠"},
{UsbSupported::HAVE_DOGEAR,"检测到有折角,停止扫描!"}, {UsbSupported::HAVE_DOGEAR,"检测到有折角,停止扫描!"},
}; };
@ -140,7 +140,7 @@ class IScanner
public: public:
IScanner() { IScanner() {
imgreadednum = imgtransfered = roller_num = lose_image_num = 0; imgreadednum = imgtransfered = roller_num = lose_image_num = 0;
is_AndroidOrLinux = false; is_Android = false;
} }
virtual ~IScanner() virtual ~IScanner()
{ {
@ -263,7 +263,7 @@ protected:
int roller_num; int roller_num;
int scannum; int scannum;
int lose_image_num; int lose_image_num;
bool is_AndroidOrLinux; bool is_Android;
int error_index; int error_index;
}; };

View File

@ -127,6 +127,12 @@ int GScanO1003399::aquire_bmpdata(std::vector<unsigned char>& bmpdata)
{ {
if ((imagecount == 0) && (!scanflag) || (sw.elapsed_s() > 30)) if ((imagecount == 0) && (!scanflag) || (sw.elapsed_s() > 30))
{ {
if (is_scan())
{
sw.reset();
continue;
}
DoEvents(); DoEvents();
this_thread::sleep_for(chrono::milliseconds(1)); this_thread::sleep_for(chrono::milliseconds(1));
if (sw.elapsed_s() > 30.0) if (sw.elapsed_s() > 30.0)

View File

@ -264,10 +264,10 @@ std::string GScanO400::GetFWVersion()
m_usb->read_bulk(&fwVersion[0], fwVersion.size()); m_usb->read_bulk(&fwVersion[0], fwVersion.size());
std::this_thread::sleep_for(chrono::milliseconds(10)); std::this_thread::sleep_for(chrono::milliseconds(10));
} }
if (fwVersion.substr(0, 2) == "G3" || fwVersion.substr(0, 2) == "G4") if (fwVersion.substr(0, 2) == "G3" || fwVersion.substr(0, 2) == "G4" ||fwVersion.substr(0,2)== "GU")
is_AndroidOrLinux = false; is_Android = false;
else else
is_AndroidOrLinux = true; is_Android = true;
return fwVersion; return fwVersion;
} }
return ""; return "";
@ -333,7 +333,7 @@ BOOL GScanO400::Get_Scanner_PaperOn()
Set_ErrorCode(USB_DISCONNECTED); Set_ErrorCode(USB_DISCONNECTED);
return true; return true;
} }
//return false;
USBCB usbcb = { GET_PAPER_STATUS ,2,0 }; USBCB usbcb = { GET_PAPER_STATUS ,2,0 };
std::lock_guard<std::mutex> lck(m_imgLocker); std::lock_guard<std::mutex> lck(m_imgLocker);
m_usb->write_bulk(&usbcb, sizeof(usbcb)); m_usb->write_bulk(&usbcb, sizeof(usbcb));
@ -386,6 +386,7 @@ void GScanO400::config_params(GScanCap& params)
void GScanO400::Scanner_StartScan(UINT16 count) void GScanO400::Scanner_StartScan(UINT16 count)
{ {
scanfalg = false; scanfalg = false;
Set_ErrorCode(0);
roller_num = Get_Roller_num(); roller_num = Get_Roller_num();
std::lock_guard<std::mutex> lck(m_imgLocker); std::lock_guard<std::mutex> lck(m_imgLocker);
if (m_threadUsb && m_threadUsb->joinable()) { if (m_threadUsb && m_threadUsb->joinable()) {
@ -453,29 +454,20 @@ void GScanO400::Scanner_StartScan(UINT16 count)
int GScanO400::notifyscan() int GScanO400::notifyscan()
{ {
if (is_AndroidOrLinux)
return 2;
if (!m_usb.get() && !m_usb->is_connected()) if (!m_usb.get() && !m_usb->is_connected())
return -1; return -1;
USBCB notify = { 0x100,0,0 }; USBCB notify = { 0x100,0,0 };
m_usb->write_bulk(&notify, sizeof(notify)); m_usb->write_bulk(&notify, sizeof(notify));
m_usb->read_bulk(&notify, sizeof(notify)); m_usb->read_bulk(&notify, 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); ShellExecute(NULL, TEXT("open"), GetHidedlgPath(), CString("扫描仪处于休眠状态,请按电源键唤醒! 提示 "), NULL, SW_HIDE);
auto now = std::chrono::system_clock::now(); return -1;
while (std::chrono::system_clock::now() < now + std::chrono::milliseconds(8000))
{
DoEvents();
}
ShellExecute(NULL, TEXT("open"), GetHidedlgPath(), CString("扫描仪唤醒完成! 提示 "), NULL, SW_HIDE);
return 1;
} }
else if (notify.u32_Data == 0x10) return 1;
return 0;
return -1;
} }
void GScanO400::Stop_scan() void GScanO400::Stop_scan()
{ {
std::lock_guard<std::mutex> lck(m_imgLocker); std::lock_guard<std::mutex> lck(m_imgLocker);
@ -676,7 +668,7 @@ void GScanO400::usbmain()
UpdateScanInfo(countNReaded(), get_imgTransfered()); UpdateScanInfo(countNReaded(), get_imgTransfered());
#endif #endif
if (!is_AndroidOrLinux) if (!is_Android)
Pop_Image(); Pop_Image();
FileTools::writelog(log_INFO, "从扫描仪接收" + to_string(get_imgnReaded()) + "份文件。耗时 " + to_string(sw.elapsed_ms())); FileTools::writelog(log_INFO, "从扫描仪接收" + to_string(get_imgnReaded()) + "份文件。耗时 " + to_string(sw.elapsed_ms()));
sw.reset(); sw.reset();
@ -703,7 +695,7 @@ void GScanO400::usbmain()
case USB_BULK_ERROR: case USB_BULK_ERROR:
if (!haveError) if (!haveError)
{ {
//if (is_AndroidOrLinux) //if (is_Android)
//{ //{
haveError = true; haveError = true;
Set_ErrorCode(usbcb.u32_Data); Set_ErrorCode(usbcb.u32_Data);

View File

@ -264,7 +264,7 @@ void ImageMatQueue::setparam(const GScanCap& param)
{ {
CImageApplyResize* apply; CImageApplyResize* apply;
bool islongcustomcrop = false; bool islongcustomcrop = false;
if (param.papertype == TwSS::USStatement) if (param.papertype == TwSS::USStatement || param.normalCrop)
islongcustomcrop = true; islongcustomcrop = true;
if (param.is_autocrop || islongcustomcrop) { if (param.is_autocrop || islongcustomcrop) {
double ratio = param.resolution_dst / 200.0;// double ratio = param.resolution_dst / 200.0;//
@ -311,6 +311,8 @@ void ImageMatQueue::setparam(const GScanCap& param)
SHGetSpecialFolderPath(NULL, szIniFile, CSIDL_WINDOWS, TRUE); SHGetSpecialFolderPath(NULL, szIniFile, CSIDL_WINDOWS, TRUE);
#ifdef LANXUM #ifdef LANXUM
_tcscat(szIniFile, _T("\\twain_32\\LANXUMSCAN\\tessdata")); _tcscat(szIniFile, _T("\\twain_32\\LANXUMSCAN\\tessdata"));
#elif defined HANVON
_tcscat(szIniFile, _T("\\twain_32\\HanvonScan\\tessdata"));
#else #else
_tcscat(szIniFile, _T("\\twain_32\\HuaGoScan\\tessdata")); _tcscat(szIniFile, _T("\\twain_32\\HuaGoScan\\tessdata"));
#endif // #endif //
@ -507,6 +509,9 @@ void ImageMatQueue::proc()
else else
{ {
auto mat = imread(info.path, rmc); 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()) if (!mat.empty())
{ {
Mat front = mat(Rect(0, 0, mat.cols / 2, mat.rows)); Mat front = mat(Rect(0, 0, mat.cols / 2, mat.rows));
@ -605,7 +610,8 @@ void ImageMatQueue::proc()
if (mats[i].channels() == 3) if (mats[i].channels() == 3)
cvtColor(mats[i], mats[i], cv::COLOR_BGR2GRAY); cvtColor(mats[i], mats[i], cv::COLOR_BGR2GRAY);
#endif #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) if (!scanParam.multi_output_red)
mats[i].release(); mats[i].release();

View File

@ -49,16 +49,17 @@ public:
} }
memcpy(m_data->data() + 54, colortable, 256 * 4); memcpy(m_data->data() + 54, colortable, 256 * 4);
} }
cv::imencode(".bmp", mat, *(m_data.get())); //cv::imencode(".bmp", mat, *(m_data.get()));
setBmpFileHeader(mat); setBmpFileHeader(mat);
setBmpInfoHeader(mat, res); setBmpInfoHeader(mat, res);
//uchar* data = m_data->data() + headersize + bmpdatasize;
//uchar* matdata = mat.data; uchar* data = m_data->data() + headersize + bmpdatasize;
//for (int i = 0; i < mat.rows; i++) { uchar* matdata = mat.data;
// data -= m_datalinesize; for (int i = 0; i < mat.rows; i++) {
// memcpy(data, matdata, step); data -= m_datalinesize;
// matdata += step; memcpy(data, matdata, step);
//} matdata += step;
}
} }
private: private:
void setBmpFileHeader(const cv::Mat& mat) void setBmpFileHeader(const cv::Mat& mat)

View File

@ -461,6 +461,8 @@ CString GetHidedlgPath()
SHGetSpecialFolderPath(NULL, szIniFile, CSIDL_WINDOWS, TRUE); SHGetSpecialFolderPath(NULL, szIniFile, CSIDL_WINDOWS, TRUE);
#ifdef MAKEHUAGAO #ifdef MAKEHUAGAO
_tcscat(szIniFile, _T("\\twain_32\\HuaGoScan\\hidedlg.exe")); _tcscat(szIniFile, _T("\\twain_32\\HuaGoScan\\hidedlg.exe"));
#elif defined HANVON
_tcscat(szIniFile, _T("\\twain_32\\HanvonScan\\hidedlg.exe"));
#elif defined LANXUM #elif defined LANXUM
_tcscat(szIniFile, _T("\\twain_32\\LANXUMSCAN\\hidedlg.exe")); _tcscat(szIniFile, _T("\\twain_32\\LANXUMSCAN\\hidedlg.exe"));
#else // MAKEHUAGAO #else // MAKEHUAGAO

View File

@ -108,9 +108,9 @@ void GscanJsonConfig::SaveGscanCapConfig(const GScanCap & gcap, const std::strin
#ifdef UV #ifdef UV
outJson["Config"].Add(ENUVMODEL, (bool)(gcap.hardwarecaps.en_uv), false); outJson["Config"].Add(ENUVMODEL, (bool)(gcap.hardwarecaps.en_uv), false);
#endif #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(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(GAMMA_, (double)(gcap.gamma));
outJson["Config"].Add(FILTERTYPE, (int)(gcap.filter)); 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(DOCORIENTATION, (int)(gcap.imageRotateDegree));
outJson["Config"].Add(AUTO_TEXT, (bool)(gcap.is_autotext),false); outJson["Config"].Add(AUTO_TEXT, (bool)(gcap.is_autotext),false);
outJson["Config"].Add(BACKROTATE180, (bool)(gcap.is_backrotate180), 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(ISCONVEX, (bool)(gcap.is_convex), false);
outJson["Config"].Add(INDENT, (int)(gcap.indent), false); outJson["Config"].Add(INDENT, (int)(gcap.indent));
outJson["Config"].Add(AUTOCROP_THRESHOLD, (int)(gcap.AutoCrop_threshold), false); outJson["Config"].Add(AUTOCROP_THRESHOLD, (int)(gcap.AutoCrop_threshold));
outJson["Config"].Add(DOGEAR_DETECTION, (bool)(gcap.is_dogeardetection), false); outJson["Config"].Add(DOGEAR_DETECTION, (bool)(gcap.is_dogeardetection), false);
outJson["Config"].Add(SCREWDETECT, (bool)(gcap.hardwarecaps.en_skrewdetect), false); outJson["Config"].Add(SCREWDETECT, (bool)(gcap.hardwarecaps.en_skrewdetect), false);
outJson["Config"].Add(SCREWLEVEL, (int)(gcap.hardwarecaps.skrewdetectlevel)); outJson["Config"].Add(SCREWLEVEL, (int)(gcap.hardwarecaps.skrewdetectlevel));

View File

@ -182,22 +182,22 @@ void CSmartEdit::OnUpdate()
} }
else else
{ {
m_iValue = _tstoi( buf ); m_iValue = _tstoi(buf);
if( m_iValue < m_iMin ) if (m_iValue < m_iMin)
{ {
m_iValue = m_iMin; m_iValue = m_iMin;
OnBadInput(); OnBadInput();
} }
else if( m_iValue > m_iMax ) else if (m_iValue > m_iMax)
{ {
m_iValue = m_iMax; m_iValue = m_iMax;
OnBadInput(); OnBadInput();
} }
else else
error = FALSE; error = FALSE;
} }
if( m_pSlider ) if (m_pSlider)
m_pSlider->SetSlidePos( m_iValue ); m_pSlider->SetSlidePos( m_iValue );
if( error ) if( error )

View File

@ -90,6 +90,8 @@ static constexpr const Identity srcIdent(
DataGroup::Image, DataGroup::Image,
#ifdef MAKEHUAGAO #ifdef MAKEHUAGAO
"HUAGO", "HUAGO",
#elif defined HANVON
"HANVON",
#elif defined LANXUM #elif defined LANXUM
"LANXUM", "LANXUM",
#else // MAKEHUAGAO #else // MAKEHUAGAO
@ -97,52 +99,60 @@ static constexpr const Identity srcIdent(
#endif #endif
#ifdef G200 #ifdef G200
#if defined (ISG100) #ifdef ISG100
#ifdef LANXUM #ifdef LANXUM
"G62S Series", "G62S Series",
#else // ISG100 #else // ISG100
"G100 Series", "G100 Series",
#endif #endif
#else // ISG100 #else // ISG100
#ifdef LANXUM #ifdef LANXUM
"G73S Series", "G73S Series",
#else // ISG100 #elif defined HANVON
"G200 Series", "HW-7000W Series",
#endif #else // ISG100
#endif "G200 Series",
#endif
#endif
#elif defined(G300) // G200 #elif defined(G300) // G200
#ifdef LANXUM #ifdef LANXUM
"G42S Series", "G42S Series",
#else // ISG100 #elif defined HANVON
"G300 Series", "HW-7000W Series",
#endif #else // ISG100
"G300 Series",
#endif
#elif defined(G400) // G200 #elif defined(G400) // G200
#ifdef LANXUM #ifdef LANXUM
"G52S Series", "G52S Series",
#else // ISG100 #elif defined HANVON
"G400 Series", "HW-7000W Series",
#endif #else // ISG100
"G400 Series",
#endif
#endif #endif
#ifdef G200 #ifdef G200
#if defined (ISG100) #ifdef ISG100
#ifdef MAKEHUAGAO #ifdef MAKEHUAGAO
"HUAGOSCAN G100 TWAIN" "HUAGOSCAN G100 TWAIN"
#elif defined LANXUM //!LANXUM #elif defined LANXUM //!LANXUM
"LANXUMSCAN G62S TWAIN" "LANXUMSCAN G62S TWAIN"
#else // !MAKEHUAGAO #else // !MAKEHUAGAO
"ZhibenScan G100 TWAIN" "ZhibenScan G100 TWAIN"
#endif #endif
#else // ISG100 #else // ISG100
#ifdef MAKEHUAGAO #ifdef MAKEHUAGAO
"HUAGOSCAN G200 TWAIN" "HUAGOSCAN G200 TWAIN"
#elif defined LANXUM //!LANXUM #elif defined HANVON
"LANXUMSCAN G73S TWAIN" "HANVONSCAN HW-7000W TAWIN"
#else // !MAKEHUAGAO #elif defined LANXUM //!LANXUM
"ZhibenScan G200 TWAIN" "LANXUMSCAN G73S TWAIN"
#endif #else // !MAKEHUAGAO
"ZhibenScan G200 TWAIN"
#endif
#endif #endif
#elif defined G300 // G200 #elif defined G300 // G200
#ifdef MAKEHUAGAO #ifdef MAKEHUAGAO
@ -152,19 +162,24 @@ static constexpr const Identity srcIdent(
"HUAGOSCAN G300 TWAIN" "HUAGOSCAN G300 TWAIN"
#endif #endif
#elif defined HANVON
"HANVONSCAN HW-7000W TAWIN"
#elif defined LANXUM //!LANXUM #elif defined LANXUM //!LANXUM
"LANXUMSCAN G42S TWAIN" "LANXUMSCAN G42S TWAIN"
#else // !MAKEHUAGAO #else // !MAKEHUAGAO
"ZhibenScan G300 TWAIN" "ZhibenScan G300 TWAIN"
#endif #endif
#elif defined(G400) // G200 #elif defined(G400) // G200
#ifdef MAKEHUAGAO #ifdef MAKEHUAGAO
"HUAGOSCAN G400 TWAIN" "HUAGOSCAN G400 TWAIN"
#elif defined LANXUM //!LANXUM #elif defined HANVON
"LANXUMSCAN G52S TWAIN" "HANVONSCAN HW-7000W TAWIN"
#else // !MAKEHUAGAO #elif defined LANXUM //!LANXUM
"ZhibenScan G400 TWAIN" "LANXUMSCAN G52S TWAIN"
#endif #else // !MAKEHUAGAO
"ZhibenScan G400 TWAIN"
#endif
#endif #endif
#if defined(_MSC_VER) #if defined(_MSC_VER)
@ -263,7 +278,11 @@ static std::vector<Vid_pid> DeviceID{
#endif // ISG100 #endif // ISG100
}; };
#elif defined HANVON
static std::vector<Vid_pid> DeviceID{
{0x2903,0x7000},
};
#else #else
static std::vector<Vid_pid> DeviceID{ static std::vector<Vid_pid> DeviceID{
{0x64B,0x7823}, {0x64B,0x7823},
@ -844,8 +863,15 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
return checkDeviceOnline(); return checkDeviceOnline();
} }
scanner->open(vid, pid); 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()) { if (!scanner->IsConnected()) {
//ShellExecute(NULL, TEXT("open"), GetHidedlgPath(), CString("201"), NULL, SW_HIDE); //ShellExecute(NULL, TEXT("open"), GetHidedlgPath(), CString("201"), NULL, SW_HIDE);
showmsg("警告", msgs[(UsbSupported)201]); showmsg("警告", msgs[(UsbSupported)201]);
@ -1082,7 +1108,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
m_caps[CapType::IXResolution] = [this](Msg msg, Capability& data) { m_caps[CapType::IXResolution] = [this](Msg msg, Capability& data) {
switch (msg) { switch (msg) {
case Msg::Get: case Msg::Get:
data = Capability::createRange<CapType::IXResolution>(Fix32(100.0f), Fix32(300.0f), Fix32(1.0f), Fix32(m_scanparam->resolution_dst), Fix32(200.0)); data = Capability::createRange<CapType::IXResolution>(Fix32(100.0f), Fix32(600.0f), Fix32(1.0f), Fix32(m_scanparam->resolution_dst), Fix32(200.0));
return success(); return success();
case Msg::GetCurrent: case Msg::GetCurrent:
data = Capability::createOneValue<CapType::IXResolution>(Fix32(m_scanparam->resolution_dst)); data = Capability::createOneValue<CapType::IXResolution>(Fix32(m_scanparam->resolution_dst));
@ -1094,7 +1120,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
return success(); return success();
case Msg::Set: { case Msg::Set: {
auto mech = data.currentItem<CapType::IXResolution>(); auto mech = data.currentItem<CapType::IXResolution>();
if (mech < 100.0f || mech > 300.0f) if (mech < 100.0f || mech > 600.0f)
return badValue(); return badValue();
m_scanparam->resolution_dst = (float)mech; m_scanparam->resolution_dst = (float)mech;
return success(); return success();
@ -2359,13 +2385,22 @@ Twpp::Result HuagaoDs::showTwainUI(Twpp::UserInterface& ui, bool bUiOnly)
//!< show ui to scan button push //!< show ui to scan button push
auto scanFunction = [this](const GScanCap& caps) { auto scanFunction = [this](const GScanCap& caps) {
if (!scanner->IsConnected()) if (!scanner->IsConnected())
{
scanner->open(vid, pid); scanner->open(vid, pid);
if (!scanner->IsConnected())
return checkDeviceOnline();
}
#ifndef G200 #ifndef G200
while (!scanner->Get_Scanner_PaperOn()) 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) { if (MessageBox(NULL, L"检测到无纸,请添加纸张", L"提示", MB_YESNO | MB_SYSTEMMODAL) == IDNO) {
m_pendingXfers = 0; m_pendingXfers = 0;
return; return seqError();
} }
} }
#endif // !G200 #endif // !G200
@ -2375,7 +2410,7 @@ Twpp::Result HuagaoDs::showTwainUI(Twpp::UserInterface& ui, bool bUiOnly)
if (!scanner->IsConnected()) if (!scanner->IsConnected())
{ {
MessageBox(NULL, L"USB连接异常,请连接USB后重新打开扫描软件", L"提示", MB_OK | MB_SYSTEMMODAL); MessageBox(NULL, L"USB连接异常,请连接USB后重新打开扫描软件", L"提示", MB_OK | MB_SYSTEMMODAL);
return; return seqError();
} }
if (startScan() == success()) { if (startScan() == success()) {
@ -2532,7 +2567,9 @@ Twpp::Result HuagaoDs::startScan()
//FileTools::write_log("D:\\1.txt",info); //FileTools::write_log("D:\\1.txt",info);
FileTools::writelog(log_INFO, "start scan"); FileTools::writelog(log_INFO, "start scan");
#ifndef G200 #ifndef G200
scanner->notifyscan(); if(scanner->notifyscan()<1)
return seqError();
scanner->clear_hwerror(); scanner->clear_hwerror();
#endif // #endif //

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -74,7 +74,7 @@ public:
/// Mac uses QuickDraw Picture. /// Mac uses QuickDraw Picture.
template<typename T = void> template<typename T = void>
ConstData<T> data() const noexcept{ ConstData<T> data() const noexcept{
return m_handle.lock<const typename std::decay<T>::type>(); return m_handle.lock<const typename std::decay<T>::type>();
} }
operator bool() const noexcept{ operator bool() const noexcept{