diff --git a/web/src/main/java/com/aijiao/test/JNIDemo.java b/web/src/main/java/com/aijiao/test/JNIDemo.java index 502790a..65f00f5 100644 --- a/web/src/main/java/com/aijiao/test/JNIDemo.java +++ b/web/src/main/java/com/aijiao/test/JNIDemo.java @@ -10,7 +10,24 @@ public class JNIDemo { public static native String detectBestBarCode(String filePath); + public static String detectBestCodeUntilOK(String filePath){ + String code = null; + long startTime = System.currentTimeMillis(); + System.out.println("start:"); + System.out.println(startTime); + //只要code为空或者图片为Empty,就继续查,直到5s为止 + while ((code == null || "Empty".equals(code)) && (System.currentTimeMillis() - startTime < 5000)){ + try { + Thread.sleep(200); + } catch (InterruptedException e) { + e.printStackTrace(); + } + code = JNIDemo.detectBestBarCode(filePath); + } + System.out.println(System.currentTimeMillis()); + return code; + } static { try{ @@ -36,9 +53,9 @@ public class JNIDemo { } public static void main(String[] args) { - JNIDemo barCodeScan = new JNIDemo(); + //String code = barCodeScan.detectBestBarCode("d:\\data\\media\\2022\\01\\12\\10\\camera25\\1324-hfhaegaaag.jpg"); - String code = barCodeScan.detectBestBarCode("d:\\data\\media\\2022\\03\\24\\11\\camera37\\0018-aieeecdbab.jpg"); + String code = JNIDemo.detectBestCodeUntilOK("C:\\Users\\user\\Desktop\\abc\\552-iajgcbfhfd.jpg"); System.out.println(code); } } diff --git a/web/src/main/java/com/zhehekeji/web/service/PlcService.java b/web/src/main/java/com/zhehekeji/web/service/PlcService.java index 2b4b617..8c8ff59 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -459,25 +459,27 @@ public class PlcService { Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId()); Integer cameraId = getCameraByPlcCmd(plcCmdInfo,plcCmdInfo.getLeftRight1()); gyrateCameraByCode(cameraId, cmdCode); - String path = cameraCapture(cameraId,true,configProperties.getCameraConfig().getDelayCaptureTime()); - OrderInfo orderInfo = new OrderInfo(street,plcCmdInfo,1,cmdCode); - Stock stock = stockMapper.getByShelveIdAndRowColumn(orderInfo.getShelveId(),orderInfo.getRow(),orderInfo.getColumn()); - log.info("pic path:{}",configProperties.getSavePath().getMediaPath()+path); try { - Thread.sleep(configProperties.getCameraConfig().getDelayScanTime()); + Thread.sleep(configProperties.getCameraConfig().getDelayCaptureTime()); } catch (InterruptedException e) { e.printStackTrace(); } + String path = cameraCapture(cameraId,false,null); + OrderInfo orderInfo = new OrderInfo(street,plcCmdInfo,1,cmdCode); + Stock stock = stockMapper.getByShelveIdAndRowColumn(orderInfo.getShelveId(),orderInfo.getRow(),orderInfo.getColumn()); + log.info("pic path:{}",configProperties.getSavePath().getMediaPath()+path); + String scanCode = null; String trayCode = null; Boolean codeCheck = Boolean.TRUE; //货物使用球机扫码 if(configProperties.getScanCodeMode().getGoods() == 1){ - scanCode = barCodeScan.detectBestBarCode(configProperties.getSavePath().getMediaPath()+path); - if(StringUtils.isEmpty(scanCode) || scanCode.equals("Empty")){ + scanCode = JNIDemo.detectBestCodeUntilOK(configProperties.getSavePath().getMediaPath()+path); + if(StringUtils.isEmpty(scanCode)){ + log.error("row:{},cloumn:{}",plcCmdInfo.getRow1(),plcCmdInfo.getColumn1()); + log.error("detectBestBarCode:{}",scanCode); scanCode = "识别异常"; codeCheck = Boolean.FALSE; - log.warn("detectBestBarCode:{}",scanCode); }else { codeCheck = wmsCode.equals(scanCode); } diff --git a/web/src/main/java/com/zhehekeji/web/service/TestService.java b/web/src/main/java/com/zhehekeji/web/service/TestService.java index 6d0f875..ddffb9c 100644 --- a/web/src/main/java/com/zhehekeji/web/service/TestService.java +++ b/web/src/main/java/com/zhehekeji/web/service/TestService.java @@ -30,13 +30,7 @@ public class TestService { Integer column = street.getLeftColumn(); for(int i = 1;i<=row;i++){ for(int j = 0; j<= column;j++){ - String code = null; - if(j % 2 == 0){ - code = "3224112150069"; - }else { - code = "1111"; - } - + String code = "3224112150069"; String taskId = i +"-"+ j+"-"+LocalDateTime.now().format(DateTimeFormatter.ofPattern("hhmmss")); PlcCmdInfo plcCmdInfo = new PlcCmdInfo(street.getPlcId(),taskId,1,1,j,i,1,1,1,1,1,1); plcService.check(plcCmdInfo,"E1",code,"21234-trayCode"); @@ -46,6 +40,11 @@ public class TestService { e.printStackTrace(); } plcService.gyrateCameraByCode(street.getCamera1Id(),"C5"); + try { + Thread.sleep(3000); + } catch (InterruptedException e) { + e.printStackTrace(); + } } } isRunning = Boolean.FALSE; diff --git a/web/src/main/resources/application-prod.yml b/web/src/main/resources/application-prod.yml index daf0857..acbb72d 100644 --- a/web/src/main/resources/application-prod.yml +++ b/web/src/main/resources/application-prod.yml @@ -32,10 +32,10 @@ cameraConfig: cameraUser: admin cameraPort: 37777 videoServer: 127.0.0.1:8083 - #相机抓图延迟 毫秒 - delayCaptureTime: 2000 + #相机抓图延迟 毫秒,这个延迟是等待球机球机转动到位,然后拍照的 + delayCaptureTime: 2200 #OCR识别延迟 毫秒 - delayScanTime: 3000 + delayScanTime: 1500 # ------------ # -----图片 mp4下载地址 savePath: @@ -48,8 +48,8 @@ ksec: port: 3000 # ------------ 实时视频流 全部页面的格式 行列数量 videoStyleConfig: - videoStyleRow: 1 - videoStyleColumn: 1 + videoStyleRow: 2 + videoStyleColumn: 2 # ------------光源--- # -------------type 0:没有光源 1:JYDam # -----------1:JYDam 配置num和index @@ -64,5 +64,5 @@ sensor: # -----goods 货物 # 扫码模式 1:球机扫码 2:扫码枪 scanCodeMode: - tray: 2 + tray: 0 goods: 1 \ No newline at end of file