From c0b50bb896f0ff9699e1395d8f1529c2382fe652 Mon Sep 17 00:00:00 2001
From: Joshi <3040996759@qq.com>
Date: Tue, 22 Jul 2025 13:23:35 +0800
Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E5=90=88demo=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
klp-reader/pom.xml | 5 ++
.../klp/reader/entity/ScanResultEntity.java | 14 ++++
.../klp/reader/mapper/ScanResultMapper.java | 9 +++
.../klp/reader/service/ScannerService.java | 70 +++++++++++++++++++
.../resources/mapper/ScanResultMapper.xml | 5 ++
5 files changed, 103 insertions(+)
create mode 100644 klp-reader/src/main/java/com/klp/reader/entity/ScanResultEntity.java
create mode 100644 klp-reader/src/main/java/com/klp/reader/mapper/ScanResultMapper.java
create mode 100644 klp-reader/src/main/java/com/klp/reader/service/ScannerService.java
create mode 100644 klp-reader/src/main/resources/mapper/ScanResultMapper.xml
diff --git a/klp-reader/pom.xml b/klp-reader/pom.xml
index 6bef086d..db638af3 100644
--- a/klp-reader/pom.xml
+++ b/klp-reader/pom.xml
@@ -27,6 +27,11 @@
mv-code-reader-ctrl-wrapper
1.0.0
+
+
+ org.springframework.boot
+ spring-boot-starter
+
diff --git a/klp-reader/src/main/java/com/klp/reader/entity/ScanResultEntity.java b/klp-reader/src/main/java/com/klp/reader/entity/ScanResultEntity.java
new file mode 100644
index 00000000..df0b1107
--- /dev/null
+++ b/klp-reader/src/main/java/com/klp/reader/entity/ScanResultEntity.java
@@ -0,0 +1,14 @@
+package com.klp.reader.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("scan_result")
+public class ScanResultEntity {
+ @TableId(type = IdType.AUTO)
+ private Long id;
+ private String code;
+}
diff --git a/klp-reader/src/main/java/com/klp/reader/mapper/ScanResultMapper.java b/klp-reader/src/main/java/com/klp/reader/mapper/ScanResultMapper.java
new file mode 100644
index 00000000..63730890
--- /dev/null
+++ b/klp-reader/src/main/java/com/klp/reader/mapper/ScanResultMapper.java
@@ -0,0 +1,9 @@
+package com.klp.reader.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.klp.reader.entity.ScanResultEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ScanResultMapper extends BaseMapper {
+}
diff --git a/klp-reader/src/main/java/com/klp/reader/service/ScannerService.java b/klp-reader/src/main/java/com/klp/reader/service/ScannerService.java
new file mode 100644
index 00000000..d4b254d8
--- /dev/null
+++ b/klp-reader/src/main/java/com/klp/reader/service/ScannerService.java
@@ -0,0 +1,70 @@
+package com.klp.reader.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.klp.reader.entity.ScanResultEntity;
+import com.klp.reader.mapper.ScanResultMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import java.util.ArrayList;
+
+import MvCodeReaderCtrlWrapper.*;
+import MvCodeReaderCtrlWrapper.MvCodeReaderCtrl.*;
+import MvCodeReaderCtrlWrapper.MvCodeReaderCtrlDefine.*;
+
+@Service
+public class ScannerService {
+ private Handle hHandle;
+
+ @Autowired
+ private ScanResultMapper scanResultMapper; // 你需要实现这个Mapper
+
+ @PostConstruct
+ public void init() {
+ ArrayList stCamList = MvCodeReaderCtrl.MV_CODEREADER_EnumDevices();
+ if (stCamList == null || stCamList.isEmpty()) {
+ System.out.println("Find No Device!");
+ return;
+ }
+ MV_CODEREADER_DEVICE_INFO deviceInfo = stCamList.get(0);
+ try {
+ hHandle = MvCodeReaderCtrl.MV_CODEREADER_CreateHandle(deviceInfo);
+ } catch (ParameterException e) {
+ throw new RuntimeException(e);
+ }
+ if (hHandle == null) {
+ System.out.println("Create handle failed!");
+ return;
+ }
+ int nRet = MvCodeReaderCtrl.MV_CODEREADER_OpenDevice(hHandle);
+ if (nRet != 0) {
+ System.out.println("Open Device fail! nRet[" + String.format("0x%x", nRet) + "]");
+ return;
+ }
+ MvCodeReaderCtrl.MV_CODEREADER_RegisterImageCallBackEx2(hHandle, (pdata, stOutInfo) -> {
+ handleScanResult(stOutInfo);
+ return 0;
+ });
+ MvCodeReaderCtrl.MV_CODEREADER_StartGrabbing(hHandle);
+ }
+
+ private void handleScanResult(MV_CODEREADER_IMAGE_OUT_INFO_EX2 stOutInfo) {
+ for (int a = 0; a < stOutInfo.pstCodeListEx.nCodeNum; a++) {
+ String code = stOutInfo.pstCodeListEx.stBcrInfoEx.get(a).chCode;
+ // 保存到数据库
+ ScanResultEntity entity = new ScanResultEntity();
+ entity.setCode(code);
+ scanResultMapper.insert(entity);
+ }
+ }
+
+ @PreDestroy
+ public void destroy() {
+ if (hHandle != null) {
+ MvCodeReaderCtrl.MV_CODEREADER_StopGrabbing(hHandle);
+ MvCodeReaderCtrl.MV_CODEREADER_DestroyHandle(hHandle);
+ }
+ }
+}
diff --git a/klp-reader/src/main/resources/mapper/ScanResultMapper.xml b/klp-reader/src/main/resources/mapper/ScanResultMapper.xml
new file mode 100644
index 00000000..42b553f7
--- /dev/null
+++ b/klp-reader/src/main/resources/mapper/ScanResultMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+