HGWebScan:优化切换设备功能

This commit is contained in:
luoliangyi 2022-09-07 10:51:14 +08:00
parent cc6bbf1b6a
commit aa20c3105b
1 changed files with 32 additions and 24 deletions

View File

@ -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);