From 6c900e451c25f7ea8291803c8667da58cd276613 Mon Sep 17 00:00:00 2001 From: yangjiaxuan <171295266@qq.com> Date: Mon, 4 Dec 2023 15:27:29 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E8=AE=BE=E5=A4=87=E6=96=AD?= =?UTF-8?q?=E5=BC=80=EF=BC=8C=E7=82=B9=E5=87=BB=E6=89=AB=E6=8F=8F=EF=BC=8C?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=A0=8F=E6=9C=AA=E6=9B=B4=E6=96=B0=E4=B8=94?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E7=82=B9=E5=87=BB=E6=89=AB=E6=8F=8F=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=9BBUG-810?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/scanner2/mainwindow.cpp | 22 +++++++++++++++++++++- modules/twain_user/HGTwainImpl.cpp | 5 +++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/app/scanner2/mainwindow.cpp b/app/scanner2/mainwindow.cpp index 8b3557ae..8e0082a6 100644 --- a/app/scanner2/mainwindow.cpp +++ b/app/scanner2/mainwindow.cpp @@ -3400,8 +3400,28 @@ void MainWindow::on_act_acquire_triggered() HGResult ret = HGBASE_ERR_FAIL; if (nullptr != m_devUser) { + bool deviceIsOnline = true; ret = m_devUser->StartScan(); - if (HGBASE_ERR_OK != ret) + +#if defined(HG_CMP_MSC) + + if (HGTWAIN_ERR_DEVICEOFFLINE == ret) + { + deviceIsOnline = false; + } +#else + if (HGSANE_ERR_DEVICEOFFLINE == ret) + { + deviceIsOnline = false; + } +#endif + + if (!deviceIsOnline) + { + deleteDevUser(); + } + + if (HGBASE_ERR_OK != ret && deviceIsOnline) { on_scanFinishEvent(); } diff --git a/modules/twain_user/HGTwainImpl.cpp b/modules/twain_user/HGTwainImpl.cpp index b0603bf3..86cf7e86 100644 --- a/modules/twain_user/HGTwainImpl.cpp +++ b/modules/twain_user/HGTwainImpl.cpp @@ -640,6 +640,11 @@ HGResult HGTwainDSImpl::Enable(HGBool showUI, HWND parent, HGDSEventFunc eventFu USHORT ret = m_dsmImpl->m_pDSMProc(&m_dsmImpl->m_AppId, &m_iden, DG_CONTROL, DAT_USERINTERFACE, MSG_ENABLEDS, (TW_MEMREF)&twUI); if (TWRC_SUCCESS != ret) { + TW_STATUS status; + m_dsmImpl->m_pDSMProc(&m_dsmImpl->m_AppId, &m_iden, DG_CONTROL, DAT_STATUS, MSG_GET, (TW_MEMREF)&status); + if (status.ConditionCode == TWCC_CHECKDEVICEONLINE) + return HGTWAIN_ERR_DEVICEOFFLINE; + return HGTWAIN_ERR_FAIL; }