diff --git a/app/demo/device_user.cpp b/app/demo/device_user.cpp index 12ec6928..d4abfc21 100644 --- a/app/demo/device_user.cpp +++ b/app/demo/device_user.cpp @@ -1,4 +1,5 @@ #include "device_user.h" +#include #if defined(HG_CMP_MSC) @@ -87,6 +88,28 @@ class DeviceUser* DeviceUserMgr::OpenDeviceUser() if (nullptr == source) return nullptr; + HGUInt devCount = 0; + HGSane_GetDeviceCount(source, &devCount); + if (0 == devCount) + { + HGSane_CloseSource(source); + return nullptr; + } + else if (1 == devCount) + { + HGChar errInfo[256]; + HGSaneDevice dev = nullptr; + HGSane_OpenDevice(source, 0, &dev, errInfo, 256); + if (nullptr == dev) + { + HGSane_CloseSource(source); + QMessageBox::information(m_wnd, tr("tips"), tr(errInfo)); + return nullptr; + } + + return new DeviceUser(m_wnd, source, dev); + } + HGSaneDevice dev = nullptr; HGSane_OpenSelectedDevice(source, m_wnd, &dev); if (nullptr == dev) @@ -116,7 +139,7 @@ DeviceUser::~DeviceUser() QString DeviceUser::GetName() { HGChar devName[256]; - HGSane_GetDeviceName(m_saneDev, devName, 256); + HGSane_GetSourceName(m_source, devName, 256); return QString(devName); }