From eb5f0f95c4c3229a830e64461e76021c23cdff96 Mon Sep 17 00:00:00 2001 From: luoliangyi <87842688@qq.com> Date: Tue, 14 Feb 2023 11:16:15 +0800 Subject: [PATCH] =?UTF-8?q?HGScannerLib=E5=A2=9E=E5=8A=A0=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E8=AE=BE=E5=A4=87=E7=8A=B6=E6=80=81=E7=9A=84=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/windows/HGScannerLib/HGScannerLib.def | 1 + sdk/scannerlib/HGLibDeviceImpl.cpp | 10 ++++++++++ sdk/scannerlib/HGLibDeviceImpl.hpp | 1 + sdk/scannerlib/HGScannerLib.cpp | 11 +++++++++++ sdk/scannerlib/HGScannerLib.h | 3 +++ 5 files changed, 26 insertions(+) diff --git a/build/windows/HGScannerLib/HGScannerLib.def b/build/windows/HGScannerLib/HGScannerLib.def index 87a09e2d..7cf89645 100644 --- a/build/windows/HGScannerLib/HGScannerLib.def +++ b/build/windows/HGScannerLib/HGScannerLib.def @@ -22,6 +22,7 @@ HGLib_ReleaseDeviceParamGroupList HGLib_ReleaseDeviceParam HGLib_ResetDeviceParam HGLib_DeviceIsPaperOn +HGLib_GetDeviceStatus HGLib_DeviceRestart HGLib_DeviceShutDown HGLib_StartDeviceScan diff --git a/sdk/scannerlib/HGLibDeviceImpl.cpp b/sdk/scannerlib/HGLibDeviceImpl.cpp index 6a1b2470..f163ba1f 100644 --- a/sdk/scannerlib/HGLibDeviceImpl.cpp +++ b/sdk/scannerlib/HGLibDeviceImpl.cpp @@ -948,6 +948,16 @@ HGBool HGLibDeviceImpl::IsPaperOn() return HGFALSE; } +HGInt HGLibDeviceImpl::GetStatus() +{ + SANE_Bool isOn = SANE_FALSE; + unsigned int len = sizeof(SANE_Bool); + SANE_Status status = sane_io_control(m_devHandle, IO_CTRL_CODE_GET_PAPER_ON, &isOn, &len); + if (SANE_STATUS_GOOD == status) + return isOn ? 1 : 0; + return -1; +} + HGBool HGLibDeviceImpl::Restart() { SANE_Power stat = SANE_POWER_RESTART; diff --git a/sdk/scannerlib/HGLibDeviceImpl.hpp b/sdk/scannerlib/HGLibDeviceImpl.hpp index f0abb594..88c27958 100644 --- a/sdk/scannerlib/HGLibDeviceImpl.hpp +++ b/sdk/scannerlib/HGLibDeviceImpl.hpp @@ -32,6 +32,7 @@ public: static HGBool ReleaseParam(HGLibDeviceParam* param); HGBool ResetParam(); HGBool IsPaperOn(); + HGInt GetStatus(); HGBool Restart(); HGBool ShutDown(); HGBool StartScan(HGLibDeviceScanEventFunc eventFunc, HGPointer eventParam, diff --git a/sdk/scannerlib/HGScannerLib.cpp b/sdk/scannerlib/HGScannerLib.cpp index 0a2e4fe9..615d6936 100644 --- a/sdk/scannerlib/HGScannerLib.cpp +++ b/sdk/scannerlib/HGScannerLib.cpp @@ -252,6 +252,17 @@ HGBool HGAPI HGLib_DeviceIsPaperOn(HGLibDevice device) return deviceImpl->IsPaperOn(); } +HGInt HGAPI HGLib_GetDeviceStatus(HGLibDevice device) +{ + if (NULL == device) + { + return -1; + } + + HGLibDeviceImpl* deviceImpl = (HGLibDeviceImpl*)device; + return deviceImpl->GetStatus(); +} + HGBool HGAPI HGLib_DeviceRestart(HGLibDevice device) { if (NULL == device) diff --git a/sdk/scannerlib/HGScannerLib.h b/sdk/scannerlib/HGScannerLib.h index 62b25f7e..516e2af2 100644 --- a/sdk/scannerlib/HGScannerLib.h +++ b/sdk/scannerlib/HGScannerLib.h @@ -527,6 +527,9 @@ HGEXPORT HGBool HGAPI HGLib_ResetDeviceParam(HGLibDevice device); /* 设备是否有纸 */ HGEXPORT HGBool HGAPI HGLib_DeviceIsPaperOn(HGLibDevice device); +/* 获取设备状态, -1表示异常,0表示无纸,1表示有纸 */ +HGEXPORT HGInt HGAPI HGLib_GetDeviceStatus(HGLibDevice device); + /* 重启设备 */ HGEXPORT HGBool HGAPI HGLib_DeviceRestart(HGLibDevice device);