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 @@ + + + + +