HGScannerLib增加获取设备序列号和固件版本号的接口

This commit is contained in:
luoliangyi 2022-09-29 18:07:43 +08:00
parent d37a2dc0a9
commit c439c2a091
6 changed files with 86 additions and 0 deletions

View File

@ -11,6 +11,8 @@ HGLib_GetDeviceNameList
HGLib_ReleaseDeviceNameList
HGLib_OpenDevice
HGLib_CloseDevice
HGLib_GetDeviceSN
HGLib_GetDeviceFWVersion
HGLib_SetDeviceParam
HGLib_GetDeviceParamGroupList
HGLib_GetDeviceParam

Binary file not shown.

View File

@ -359,6 +359,60 @@ HGBool HGLibDeviceImpl::Close()
return HGTRUE;
}
HGBool HGLibDeviceImpl::GetSN(HGChar* sn, HGUInt maxLen)
{
if (NULL == sn || 0 == maxLen)
{
return HGFALSE;
}
assert(NULL != m_devHandle);
std::string serialNum;
unsigned int serialNumLen = 0;
if (SANE_STATUS_NO_MEM == sane_io_control(m_devHandle, IO_CTRL_CODE_GET_SERIAL, nullptr, &serialNumLen)
&& serialNumLen)
{
serialNum.resize(serialNumLen);
sane_io_control(m_devHandle, IO_CTRL_CODE_GET_SERIAL, &serialNum[0], &serialNumLen);
}
if (serialNum.empty() || maxLen < serialNum.size() + 1)
{
return HGFALSE;
}
strcpy(sn, serialNum.c_str());
return HGTRUE;
}
HGBool HGLibDeviceImpl::GetFWVersion(HGChar* fwVersion, HGUInt maxLen)
{
if (NULL == fwVersion || 0 == maxLen)
{
return HGFALSE;
}
assert(NULL != m_devHandle);
std::string versionNum;
unsigned int versionNumLen = 0;
if (SANE_STATUS_NO_MEM == sane_io_control(m_devHandle, IO_CTRL_CODE_GET_HARDWARE_VERSION, nullptr, &versionNumLen)
&& versionNumLen)
{
versionNum.resize(versionNumLen);
sane_io_control(m_devHandle, IO_CTRL_CODE_GET_HARDWARE_VERSION, &versionNum[0], &versionNumLen);
}
if (versionNum.empty() || maxLen < versionNum.size() + 1)
{
return HGFALSE;
}
strcpy(fwVersion, versionNum.c_str());
return HGTRUE;
}
HGBool HGLibDeviceImpl::SetParam(HGUInt option, const HGVoid* data)
{
assert(NULL != m_devHandle);

View File

@ -23,6 +23,8 @@ public:
static HGLibDeviceImpl* Open(const HGChar* deviceName);
HGBool Close();
HGBool GetSN(HGChar* sn, HGUInt maxLen);
HGBool GetFWVersion(HGChar* fwVersion, HGUInt maxLen);
HGBool SetParam(HGUInt option, const HGVoid* data);
HGLibDeviceParamGroup* GetParamGroupList(HGUInt* count);
HGLibDeviceParam* GetParam(HGUInt option);

View File

@ -129,6 +129,28 @@ HGBool HGAPI HGLib_CloseDevice(HGLibDevice device)
return deviceImpl->Close();
}
HGBool HGAPI HGLib_GetDeviceSN(HGLibDevice device, HGChar* sn, HGUInt maxLen)
{
if (NULL == device)
{
return HGFALSE;
}
HGLibDeviceImpl* deviceImpl = (HGLibDeviceImpl*)device;
return deviceImpl->GetSN(sn, maxLen);
}
HGBool HGAPI HGLib_GetDeviceFWVersion(HGLibDevice device, HGChar* fwVersion, HGUInt maxLen)
{
if (NULL == device)
{
return HGFALSE;
}
HGLibDeviceImpl* deviceImpl = (HGLibDeviceImpl*)device;
return deviceImpl->GetFWVersion(fwVersion, maxLen);
}
HGBool HGAPI HGLib_SetDeviceParam(HGLibDevice device, HGUInt option, const HGVoid* data)
{
if (NULL == device)

View File

@ -446,6 +446,12 @@ HGEXPORT HGLibDevice HGAPI HGLib_OpenDevice(const HGChar *deviceName);
/* 关闭设备 */
HGEXPORT HGBool HGAPI HGLib_CloseDevice(HGLibDevice device);
/* 获取设备序列号 */
HGEXPORT HGBool HGAPI HGLib_GetDeviceSN(HGLibDevice device, HGChar *sn, HGUInt maxLen);
/* 获取设备固件版本号*/
HGEXPORT HGBool HGAPI HGLib_GetDeviceFWVersion(HGLibDevice device, HGChar* fwVersion, HGUInt maxLen);
/* 设置设备参数 */
HGEXPORT HGBool HGAPI HGLib_SetDeviceParam(HGLibDevice device, HGUInt option, const HGVoid *data);