From aa20c3105b624c336488986653df53f28b59a255 Mon Sep 17 00:00:00 2001 From: luoliangyi <87842688@qq.com> Date: Wed, 7 Sep 2022 10:51:14 +0800 Subject: [PATCH] =?UTF-8?q?HGWebScan=EF=BC=9A=E4=BC=98=E5=8C=96=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E8=AE=BE=E5=A4=87=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sdk/webscan/WebUser.cpp | 56 +++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/sdk/webscan/WebUser.cpp b/sdk/webscan/WebUser.cpp index fd931ad8..a47e5cd1 100644 --- a/sdk/webscan/WebUser.cpp +++ b/sdk/webscan/WebUser.cpp @@ -394,24 +394,6 @@ void WebUser::GetDeviceList(cJSON* json) void WebUser::SelectDevice(cJSON* json) { assert(NULL != json); - - if (NULL != m_scanEvent) - { - assert(NULL != m_devHandle); - sane_cancel(m_devHandle); - - HGBase_WaitEvent(m_scanEvent); - HGBase_DestroyEvent(m_scanEvent); - m_scanEvent = NULL; - } - - if (NULL != m_devHandle) - { - m_dpi = 96; - sane_close(m_devHandle); - m_devHandle = NULL; - m_devName.clear(); - } int code = -1; std::string result = "错误"; @@ -421,16 +403,42 @@ void WebUser::SelectDevice(cJSON* json) HGBase_EnterLock(m_lockName); if (index >= 0 && index < (int)m_devNameList.size()) { - SANE_Handle dev = NULL; - SANE_Status status = sane_open(m_devNameList[index].c_str(), &dev); - if (SANE_STATUS_GOOD == status) + if (m_devNameList[index] == m_devName) { - m_devName = m_devNameList[index]; - m_devHandle = dev; - m_dpi = GetDpi(); code = 0; result.clear(); } + else + { + if (NULL != m_scanEvent) + { + assert(NULL != m_devHandle); + sane_cancel(m_devHandle); + + HGBase_WaitEvent(m_scanEvent); + HGBase_DestroyEvent(m_scanEvent); + m_scanEvent = NULL; + } + + if (NULL != m_devHandle) + { + m_dpi = 96; + sane_close(m_devHandle); + m_devHandle = NULL; + m_devName.clear(); + } + + SANE_Handle dev = NULL; + SANE_Status status = sane_open(m_devNameList[index].c_str(), &dev); + if (SANE_STATUS_GOOD == status) + { + m_devName = m_devNameList[index]; + m_devHandle = dev; + m_dpi = GetDpi(); + code = 0; + result.clear(); + } + } } HGBase_LeaveLock(m_lockName);