Bläddra i källkod

Z991239-5239 #comment 高拍仪桥接实体

80374374 1 år sedan
förälder
incheckning
29b3821a7c

+ 19 - 0
DevAdapter/self/hspscanner/CMakeLists.txt

@@ -0,0 +1,19 @@
+# 声明模块名称的前缀和名称
+rvc_dev_define_module("HSPSCanner")
+
+# rvc_dev_config_library 内需要使用这三个参数,用于拼接输出的适配器文件名称
+set(${MODULE_PREFIX}_VENDOR ${CURRENT_VENDOR})
+set(${MODULE_PREFIX}_VERSION "1")
+set(${MODULE_PREFIX}_BATCH "1")
+
+# 包含要编译的实现文件,rvc_dev_config_library 内使用
+set(${MODULE_PREFIX}_SRCS SHARED
+        VirtualDeviceClass.cpp 
+        )
+
+# 适配器工程需要通过此宏替代 add_library
+rvc_dev_config_library(${MODULE_NAME} ${MODULE_PREFIX})
+
+
+#  =-=-=-=-=-=-=-=-=-= {适配器工程}/CMakeLists.txt 文件最后必须声明如下内容=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=
+rvc_dev_target_install(${MODULE_FULL_NAME})

+ 157 - 0
DevAdapter/self/hspscanner/VirtualDeviceClass.cpp

@@ -0,0 +1,157 @@
+#include "VirtualDeviceClass.h"
+#include "libHSPSCannerLoader.h"
+
+static VirtualDeviceClassImpl* object = NULL;
+
+DEVICEBASE_API ErrorCodeEnum  CreateDevComponent(DeviceBaseClass*& pOutDevAptObj)
+{
+	ErrorCodeEnum result(Error_Unexpect);
+	if (object == NULL) {
+		char* buf;
+		DWORD size;
+		const char* var = "INVOKE_VENDOR_ADAPTER_NAME";
+		size = GetEnvironmentVariableA(var, NULL, 0);
+		//ERROR_ENVVAR_NOT_FOUND
+		if (size <= 0) {
+			return Error_InvalidState;
+		}
+		buf = new char[size + 3];
+		if (buf == NULL) {
+			return Error_Resource;
+		}
+		memset(buf, 0, sizeof(char) * (size + 3));
+		size = GetEnvironmentVariableA(var, buf, size);
+		result = Bridge_LoadDevObject(buf);
+		if (result == Error_Succeed) {
+			object = new VirtualDeviceClassImpl();
+		}
+		delete[] buf;
+	}
+	pOutDevAptObj = object;
+	return result;
+}
+
+DEVICEBASE_API ErrorCodeEnum  ReleaseDevComponent(DeviceBaseClass*& pInDevAptObj)
+{
+	ErrorCodeEnum result = Bridge_ReleaseDevObject();
+	if (result == Error_Succeed && pInDevAptObj != NULL) {
+		delete pInDevAptObj;
+		pInDevAptObj = NULL;
+	}
+	return result;
+}
+
+VirtualDeviceClassImpl::VirtualDeviceClassImpl()
+{
+
+}
+
+VirtualDeviceClassImpl::~VirtualDeviceClassImpl()
+{
+
+}
+
+ErrorCodeEnum VirtualDeviceClassImpl::GetDevCategory(DevCategoryInfo& devCategory)
+{
+	ErrorCodeEnum result;
+	DevCategoryInfo inner;
+	result = Bridge_GetDevCategory(&inner);
+	if (result == Error_Succeed) {
+		strcpy_s(devCategory.szType, MAX_DEV_TYPE_LEN, inner.szType);
+		strcpy_s(devCategory.szModel, MAX_DEV_MODEL_LEN, inner.szModel);
+		strcpy_s(devCategory.szVendor, MAX_DEV_VENDOR_LEN, inner.szVendor);
+		devCategory.eState = inner.eState;
+		devCategory.version.wMajor = inner.version.wMajor;
+		devCategory.version.wMinor = inner.version.wMinor;
+		devCategory.version.wRevision = inner.version.wRevision;
+		devCategory.version.wBuild = inner.version.wBuild;
+	}
+	return result;
+}
+
+ErrorCodeEnum VirtualDeviceClassImpl::Reset()
+{
+	return Bridge_Reset();
+}
+
+
+ErrorCodeEnum VirtualDeviceClassImpl::DevClose()
+{
+	ErrorCodeEnum result = Error_Succeed;
+	return (result = Bridge_DevClose());
+}
+
+ErrorCodeEnum VirtualDeviceClassImpl::GetLastErr(DevErrorInfo& devErrInfo)
+{
+	ErrorCodeEnum result = Error_Succeed;
+	DevErrorInfo inner;
+	result = Bridge_GetLastErr(&inner);
+	if (result == Error_Succeed) {
+		devErrInfo.dwErrMsgLen = inner.dwErrMsgLen;
+		strcpy_s(devErrInfo.szErrMsg, MAX_DEV_ERROR_MSG_LEN, inner.szErrMsg);
+	}
+	return (result);
+}
+
+ErrorCodeEnum VirtualDeviceClassImpl::DevOpen()
+{
+	ErrorCodeEnum result = Error_Succeed;
+	return (result = Bridge_DevOpen());
+}
+
+ErrorCodeEnum VirtualDeviceClassImpl::SetParam(ParamType type, ParamTypeValue value)
+{
+	ErrorCodeEnum result = Error_Succeed;
+	return (result = Bridge_SetParam(type, value));
+}
+
+ErrorCodeEnum VirtualDeviceClassImpl::SetPreview(short nValue)
+{
+	ErrorCodeEnum result = Error_Succeed;
+	return (result = Bridge_SetPreview(nValue));
+}
+
+ErrorCodeEnum VirtualDeviceClassImpl::ScanImage(const char* pszFileName)
+{
+	ErrorCodeEnum result = Error_Succeed;
+	return (result = Bridge_ScanImage(pszFileName));
+}
+
+ErrorCodeEnum VirtualDeviceClassImpl::ScanImageEx(BYTE* pBtImg, int& nBtLen, const char* pszFileName /*= ""*/)
+{
+	ErrorCodeEnum result = Error_Succeed;
+	int inner = nBtLen;
+	result = Bridge_ScanImageEx(pBtImg, &inner, pszFileName);
+	nBtLen = inner;
+
+	return result;
+}
+
+ErrorCodeEnum VirtualDeviceClassImpl::SetViewPos(int nX, int nY, int nWidth)
+{
+	ErrorCodeEnum result = Error_Succeed;
+	return (result = Bridge_SetViewPos(nX, nY, nWidth));
+}
+
+ErrorCodeEnum VirtualDeviceClassImpl::SetProperty()
+{
+	return Bridge_SetProperty();
+}
+
+ErrorCodeEnum VirtualDeviceClassImpl::GetDevStatus(HspsDevStatus& status)
+{
+	Bridge_HspsDevStatus inner;
+	ErrorCodeEnum result = Error_Succeed;
+	result = Bridge_GetDevStatus(&inner);
+	if (result == Error_Succeed) {
+		status.isConnected = inner.isConnected;
+		status.inPreview = inner.inPreview;
+		status.inShow = inner.inShow;
+	}
+	return result;
+}
+
+//SubClassStart
+
+
+

+ 37 - 0
DevAdapter/self/hspscanner/VirtualDeviceClass.h

@@ -0,0 +1,37 @@
+#ifndef VIRTUAL_DEVICE_CLASS_HEADER_
+#define VIRTUAL_DEVICE_CLASS_HEADER_
+
+
+#include "HSPScannerClass.h"
+
+class VirtualDeviceClassImpl : public CHSPSClass
+{
+public:
+	VirtualDeviceClassImpl();
+	~VirtualDeviceClassImpl();
+
+	//DeviceBaseClass
+	ErrorCodeEnum GetDevCategory(DevCategoryInfo& devCategory);
+	ErrorCodeEnum Reset();
+	ErrorCodeEnum DevClose();
+	ErrorCodeEnum GetLastErr(DevErrorInfo& devErrInfo);
+
+	//SubDeviceClass
+	ErrorCodeEnum DevOpen();
+
+	ErrorCodeEnum SetParam(ParamType type, ParamTypeValue value);
+
+	ErrorCodeEnum SetPreview(short nValue);
+
+	ErrorCodeEnum ScanImage(const char* pszFileName);
+
+	ErrorCodeEnum ScanImageEx(BYTE* pBtImg, int& nBtLen, const char* pszFileName = "");
+
+	ErrorCodeEnum SetViewPos(int nX, int nY, int nWidth);
+
+	ErrorCodeEnum SetProperty();
+
+	ErrorCodeEnum GetDevStatus(HspsDevStatus& status);
+};
+
+#endif //VIRTUAL_DEVICE_CLASS_HEADER_