From 41e0b0b5b4f2109099dbf335da008c7c577cb1e0 Mon Sep 17 00:00:00 2001 From: zc Date: Tue, 10 Mar 2026 16:54:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B5=B7=E5=BA=B7=E5=B7=A5?= =?UTF-8?q?=E4=B8=9A=E7=9B=B8=E6=9C=BAdemo=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wms-webapi/Library/JavaEnv.bat | 50 ++++ wms-webapi/Library/MvCameraControlWrapper.jar | Bin 0 -> 73905 bytes .../admin/controller/hkMVS/Grab_Callback.java | 264 ++++++++++++++++++ 3 files changed, 314 insertions(+) create mode 100644 wms-webapi/Library/JavaEnv.bat create mode 100644 wms-webapi/Library/MvCameraControlWrapper.jar create mode 100644 wms-webapi/src/main/java/top/wms/admin/controller/hkMVS/Grab_Callback.java diff --git a/wms-webapi/Library/JavaEnv.bat b/wms-webapi/Library/JavaEnv.bat new file mode 100644 index 0000000..6e00b89 --- /dev/null +++ b/wms-webapi/Library/JavaEnv.bat @@ -0,0 +1,50 @@ +:: 检查java安装环境 + +@echo off + +:: 设置全局错误码 +set /A errorcode=0 + +:: 开启扩展功能 +setlocal ENABLEEXTENSIONS +setlocal ENABLEDELAYEDEXPANSION + +::通过向临时文件写内容,判断是否有文件读写权限 +echo > tmp +if exist tmp ( + del /F/Q tmp >nul 2>&1 +) else ( + echo Please switch to an administrator account to run this batch!!! + set /A errorcode=1 + goto:END +) + +::判断JAVA_HOME是否被定义 +if "%JAVA_HOME%"=="" ( + echo JAVA_HOME not set. Please make sure that java is correctly installed. + set /A errorcode=2 + goto:END +) + +:: 判断CLASSPATH是否被定义 +if "%CLASSPATH%"=="" ( + echo CLASSPATH not set. Please make sure that java is correctly installed. + set /A errorcode=3 + goto:END +) + +:: 判断java版本是否比 1.7.0高,需先将版本信息重定向到文件中,再对文件内容进行分析 +java -version >nul 2> JavaVer.tmp +for /F "tokens=1,2,3*" %%i in (JavaVer.tmp) do ( + if "%%j" == "version" ( + if %%k LSS "1.7.0" ( + echo Java version is less than "1.7.0", warnings or errors may occur. + ) + ) +) +del /F/Q JavaVer.tmp >nul 2>&1 + +:END + +::返回错误码 +exit /B %errorcode% diff --git a/wms-webapi/Library/MvCameraControlWrapper.jar b/wms-webapi/Library/MvCameraControlWrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..b4f86b4a29dd1ad905a1212c5e60b7a802b1f55a GIT binary patch literal 73905 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 stDeviceList) { + if (null == stDeviceList) { + return -1; + } + + // Choose a device to operate + int camIndex = -1; + + while (true) { + System.out.print("Please input camera index:"); + if (scanner.hasNextInt()) { + try { + + camIndex = scanner.nextInt(); + if ((camIndex >= 0 && camIndex < stDeviceList.size()) || -1 == camIndex) { + break; + } else { + System.out.println("Input error: " + camIndex + " Over Range:( 0 - " + (stDeviceList.size() - 1) + " )"); + } + } catch (NumberFormatException e) { + System.out.println("Input not number."); + camIndex = -1; + break; + } + } else { + camIndex = -1; + break; + } + + } + if (-1 == camIndex) { + System.out.println("Input error.exit"); + return camIndex; + } + + if (0 <= camIndex && stDeviceList.size() > camIndex) { + if ((MV_GIGE_DEVICE == stDeviceList.get(camIndex).transportLayerType) || (MV_GENTL_GIGE_DEVICE == stDeviceList.get(camIndex).transportLayerType)) { + System.out.println("Connect to camera[" + camIndex + "]: " + stDeviceList.get(camIndex).gigEInfo.userDefinedName); + } else if (MV_USB_DEVICE == stDeviceList.get(camIndex).transportLayerType) { + System.out.println("Connect to camera[" + camIndex + "]: " + stDeviceList.get(camIndex).usb3VInfo.userDefinedName); + } else if (MV_GENTL_CAMERALINK_DEVICE == stDeviceList.get(camIndex).transportLayerType) { + System.out.println("Connect to camera[" + camIndex + "]: " + stDeviceList.get(camIndex).cmlInfo.DeviceID); + } else if (MV_GENTL_CXP_DEVICE == stDeviceList.get(camIndex).transportLayerType) { + System.out.println("Connect to camera[" + camIndex + "]: " + stDeviceList.get(camIndex).cxpInfo.DeviceID); + } else if (MV_GENTL_XOF_DEVICE == stDeviceList.get(camIndex).transportLayerType) { + System.out.println("Connect to camera[" + camIndex + "]: " + stDeviceList.get(camIndex).xofInfo.DeviceID); + } else { + System.out.println("Device is not supported."); + } + } else { + System.out.println("Invalid index " + camIndex); + camIndex = -1; + } + + return camIndex; + } + + public static void main(String[] args) { + int nRet = MV_OK; + int camIndex = -1; + scanner = new Scanner(System.in); + + Handle hCamera = null; + ArrayList stDeviceList = null; + + do { + System.out.println("SDK Version " + MvCameraControl.MV_CC_GetSDKVersion()); + + // Initialize SDK + nRet = MvCameraControl.MV_CC_Initialize(); + if (MV_OK != nRet) { + System.err.printf("Initialize SDK fail! nRet [0x%x]\n\n", nRet); + break; + } + + // Enumerate devices + try { + stDeviceList = MvCameraControl.MV_CC_EnumDevices(MV_GIGE_DEVICE | MV_USB_DEVICE | MV_GENTL_GIGE_DEVICE | MV_GENTL_CAMERALINK_DEVICE | MV_GENTL_CXP_DEVICE | MV_GENTL_XOF_DEVICE); + } catch (CameraControlException e) { + System.err.println("Enumrate devices failed!" + e.toString()); + e.printStackTrace(); + break; + } + + if (0 >= stDeviceList.size()) { + System.out.println("No devices found!"); + break; + } + int i = 0; + for (MV_CC_DEVICE_INFO stDeviceInfo : stDeviceList) { + if (null == stDeviceInfo) { + continue; + } + System.out.println("[camera " + (i++) + "]"); + printDeviceInfo(stDeviceInfo); + } + + // choose camera + camIndex = chooseCamera(stDeviceList); + if (-1 == camIndex) { + break; + } + + // Create device handle + try { + hCamera = MvCameraControl.MV_CC_CreateHandle(stDeviceList.get(camIndex)); + } catch (CameraControlException e) { + System.err.println("Create handle failed!" + e.toString()); + e.printStackTrace(); + hCamera = null; + break; + } + + // Open selected device + nRet = MvCameraControl.MV_CC_OpenDevice(hCamera); + if (MV_OK != nRet) { + System.err.printf("Connect to camera failed, errcode: [%#x]\n", nRet); + break; + } + + // Register image callback + nRet = MvCameraControl.MV_CC_RegisterImageCallBack(hCamera, new CameraImageCallBack() { + @Override + public int OnImageCallBack(byte[] bytes, MV_FRAME_OUT_INFO mv_frame_out_info) { + printFrameInfo(mv_frame_out_info); + return 0; + } + }); + if (MV_OK != nRet) { + System.err.printf("register image callback failed, errcode: [%#x]\n", nRet); + break; + } + + + // Turn off trigger mode + nRet = MvCameraControl.MV_CC_SetEnumValueByString(hCamera, "TriggerMode", "Off"); + if (MV_OK != nRet) { + System.err.printf("SetTriggerMode failed, errcode: [%#x]\n", nRet); + break; + } + + + nRet = MvCameraControl.MV_CC_StartGrabbing(hCamera); + if (MV_OK != nRet) { + System.err.printf("StartGrabbing failed, errcode: [%#x]\n", nRet); + break; + } + + scanner.useDelimiter(""); + System.out.println("Press Enter to exit."); + while (true) { + String input = scanner.nextLine(); + if (scanner.hasNextLine()) { + break; + } else { + try { + Thread.sleep(1 * 10); + } catch (InterruptedException e) { + e.printStackTrace(); + break; + } + } + + } + + // Stop grabbing + nRet = MvCameraControl.MV_CC_StopGrabbing(hCamera); + if (MV_OK != nRet) { + System.err.printf("StopGrabbing failed, errcode: [%#x]\n", nRet); + break; + } + + // close device + nRet = MvCameraControl.MV_CC_CloseDevice(hCamera); + if (MV_OK != nRet) { + System.err.printf("CloseDevice failed, errcode: [%#x]\n", nRet); + break; + } + + } while (false); + + if (null != hCamera) { + // Destroy handle + nRet = MvCameraControl.MV_CC_DestroyHandle(hCamera); + if (MV_OK != nRet) { + System.err.printf("DestroyHandle failed, errcode: [%#x]\n", nRet); + } + } + MvCameraControl.MV_CC_Finalize(); + scanner.close(); + } +}