From 70b82fff55010e88e842eb90e17da6123628bc0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LAPTOP-S9HJSOEB=5C=E6=98=8A=E5=A4=A9?= Date: Sun, 8 Dec 2024 14:58:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E4=B8=BA=E5=8F=AA=E6=9C=89rfid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zhehekeji/web/service/PlcService.java | 127 +++--------------- .../web/service/RFID/RFIDSocket.java | 13 +- .../web/service/RFID/RFIDSocketOld.java | 4 +- 3 files changed, 26 insertions(+), 118 deletions(-) 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 73cd150..f82817e 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -638,81 +638,14 @@ public class PlcService { HikControlSocket.openLight(lightSource.getIp(), lightSource.getPort(), configProperties.getLightSource().getIndex(), 1); });*/ log.info("盘点摄像头变化参数:" + plcCmdInfo.toString()); - Integer cameraId = getCameraByPlcCmdE(plcCmdInfo, plcCmdInfo.getLeftRight1()); - if (plcCmdInfo.getSeparation1() == 1 && configProperties.getScanCodeMode().getTray() == 2) { - //内测 - String c = cmdCode + "-" + plcCmdInfo.getLeftRightStr(1) + "-IN"; - log.info("camera ptz" + c); - gyrateCameraByCode(cameraId, c); - } else { - String c = cmdCode + "1"; - gyrateCameraByCode(cameraId, c); - try { - Thread.sleep(configProperties.getCameraConfig().getDelayCaptureTime()); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - - String path = PathUtil.createFileNameByRowColumn("jpg", cameraId, plcCmdInfo.getRow1(), plcCmdInfo.getColumn1()); - try { - - cameraCapture(cameraId, false, null, path); - } catch (NullPointerException e) { - log.error("相机{}未连接无法拍照", cameraId); - } //托盘码 String trayCode = null; Boolean trayCheck = Boolean.FALSE; //如果是用扫码枪 扫 托盘码,就直接扫 //if(configProperties.getScanCodeMode().getTray() == 2){ - log.info("扫码类型:" + configProperties.getScanCodeMode().getTray()); //托盘使用sick扫码枪 // SensorGun sensorGun = sensorService.getSensorByPlc(street.getId(), plcCmdInfo.getLeftRight1()); - SensorGun sensorGun = sensorService.getSensorByPlc(street.getId(), plcCmdInfo.getLeftRight1()); - Future sickFuture = executor.submit(() -> { - - long startsickTime = System.currentTimeMillis(); - String code = ""; - if (sensorGun == null) { - code = "扫码枪未配置"; - log.error("no sensor gun config in database ,street id:{},direction:{}", street.getId(), plcCmdInfo.getLeftRight1()); - } else { - try { - code = SickSocket.readOCR(sensorGun.getIp(), sensorGun.getPort(), configProperties.getScanCodeMode().getSickScanTime()); - } catch (Exception e) { - - } - log.info("sensor tray code:{}", code); - if ("".equals(wmsTrayCode)) { - //托盘码为空,无货物 - //只要扫码枪未识别出条码,即认为盘点正确 - if (StringUtils.isEmpty(code) || code.equals("NoRead")) { - code = ""; - } else { - code = "扫码枪识别异常"; - log.warn("sick ocr error:{}", code); - } - } else { - if (StringUtils.isEmpty(code) || code.equals("NoRead")) { - code = "扫码枪识别异常"; - log.warn("sick ocr error:{}", code); - } else { - - log.info("sick ocr:{}", code); - //扫到就认为正常 - code = ""; - } - } - } - - long endsickTime = System.currentTimeMillis(); - - log.info("sick time:{}millisecond", startsickTime - endsickTime); - return code; - - }); // RFID // RFID rfid = rfidService.getRFIDByPlc(street.getId(),plcCmdInfo.getLeftRight1()); @@ -720,10 +653,10 @@ public class PlcService { Boolean trayRFIDCheck = Boolean.FALSE; - Future rfidFuture = executor.submit(() -> { + Future rfidFuture = executor.submit(() -> { long startRfidTime = System.currentTimeMillis(); - String code = ""; + Boolean flag = Boolean.FALSE;; Set tags = new HashSet<>(); try { @@ -736,26 +669,14 @@ public class PlcService { log.info("盘点rfid扫描结果:" + tags); } if (tags != null && tags.size() > 0) { - - if (wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()) != null - && tags.containsAll(wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()))) { + + if ( wmsTrayCode != null + && tags.contains(wmsTrayCode)) { log.info("扫描成功"); - + flag = Boolean.TRUE; } else { - if (wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()) != null) { - wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()).removeAll(tags); - - log.info("未扫到数据为:{}", wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum())); - for (String str : wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum())) { - if (str.length() == 14) { - code = "RFID扫描失败"; - log.info("未扫描到箱体" + str); - } - } - if (wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()).size() > configProperties.getRfid().getGraceNumber()) { - code = "RFID扫描失败"; - } - } + + flag = Boolean.FALSE;; } RFID rfid = rfidMapper.selectOne(new QueryWrapper().eq("street_id", street.getId())); if (!rfidLiveService.getRfidLive(plcCmdInfo, street, wmsTrayCode)) { @@ -767,29 +688,17 @@ public class PlcService { long endRfidTime = System.currentTimeMillis(); log.info("rfid time:{}millisecond", startRfidTime - endRfidTime); - return code; + return flag; }); try { - String sickCode = sickFuture.get(); // get()会阻塞直到结果可用 - String rfid = rfidFuture.get(); // get()会阻塞直到结果可用 - log.info("sickCode:{}", sickCode); +// String sickCode = sickFuture.get(); // get()会阻塞直到结果可用 + Boolean rfid = rfidFuture.get(); // get()会阻塞直到结果可用 log.info("rfid:{}", rfid); - trayCode = sickCode; - if (sickCode != null && !"".equals(sickCode)) { - trayCode = trayCode + ";"; - } else { - trayCheck = Boolean.TRUE; - } + trayRFIDCheck = rfid; + - if (rfid == null || "".equals(rfid)) { - trayRFIDCheck = Boolean.TRUE; - } - trayCode += rfid; - if ("".equals(trayCode)) { - trayCode = "盘点正确"; - } } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); } @@ -803,8 +712,11 @@ public class PlcService { //核对异常 Integer status = 1; //托盘和货物都正确 - if (trayCheck && trayRFIDCheck) { + if ( trayRFIDCheck) { status = 2; + trayCode=wmsTrayCode; + }else { + trayCode="盘点失败"; } if (stock == null) { stock = Stock.builder() @@ -820,14 +732,12 @@ public class PlcService { .row(orderInfo.getRow()) .column(orderInfo.getColumn()) .status(status) - .checkPic(path) .exportTime(LocalDateTime.now()).build(); stockMapper.insert(stock); } else { stock.setStatus(status); stock.setLotnum(plcCmdInfo.getLotnum()); stock.setExportTime(LocalDateTime.now()); - stock.setCheckPic(path); stock.setCheckNum(plcCmdInfo.getOrderNum()); stock.setTrayCode(trayCode); stock.setWmsTrayCode(wmsTrayCode); @@ -839,7 +749,6 @@ public class PlcService { // StockCheckRunnable stockCheckRunnable = new StockCheckRunnable(street,plcCmdInfo,cmdCode,stockMapper,path,checkLogMapper,configProperties.getScanCodeMode().getGoods(),wmsCode,wmsTrayCode,trayCode,trayCheck,configProperties,sensorGun); // threadPoolExecutor.execute(stockCheckRunnable); //还原相机 - gyrateCameraByCode(cameraId, "C5"); long end = System.currentTimeMillis(); long s = end - startTime; log.info("time:{}millisecond", s); @@ -904,7 +813,7 @@ public class PlcService { public void RFIDStart(String ip, Integer port, Integer streetId, Integer direction) { RFIDSocket rfidSocket = new RFIDSocket(ip, port); log.info("rfid调用,ip:" + ip + ";port:" + port); - rfidSocket.startCheck(direction, true); + rfidSocket.startCheck(direction, false); RFIDMap.put(streetId, rfidSocket); } diff --git a/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocket.java b/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocket.java index 60f476b..6412465 100644 --- a/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocket.java +++ b/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocket.java @@ -57,6 +57,11 @@ public class RFIDSocket { } + /**识别 + * + * @param direction 左右 + * @param foreach 是否循环切换天线 + */ public void startCheck(Integer direction,boolean foreach) { // Reader mReader = ReaderImpl.create(AntennaCount.SIXTEEN_CHANNELS); // Reader mReader = ReaderImpl.create(AntennaCount.EIGHT_CHANNELS); @@ -86,13 +91,7 @@ public class RFIDSocket { public void accept(InventoryTag tag) throws Exception { System.out.println("reader1 inventory tag :" + tag.getEpc()); String tagStr = tag.getEpc().replace(" ",""); - System.out.println("tag: " + tag.getEpc()); - // 去除头为0 - tagStr = tagStr.replace("0000000000",""); - //去除尾巴为0 - if(tagStr.startsWith("363000") &&tagStr.endsWith("00")){ - tagStr = tagStr.substring(0, tagStr.length() - 2); - } + tagStr = tagStr.substring(tagStr.length() - 8); tags.add(tagStr); if (ToolUtil.isNotEmpty(tagsCount.get(tagStr))) { tagsCount.put(tagStr, tagsCount.get(tagStr) + 1); diff --git a/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocketOld.java b/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocketOld.java index b623de8..8da2cff 100644 --- a/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocketOld.java +++ b/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocketOld.java @@ -120,8 +120,8 @@ public class RFIDSocketOld { ((RFIDReaderHelper) mReaderHelper).setWorkAntenna((byte) 0xFF, (byte) 0x01); } //开始盘存180006B - //((RFIDReaderHelper) mReaderHelper).iso180006BInventory((byte) 0xFF); - ((RFIDReaderHelper) mReaderHelper).inventory((byte) 0xFF, (byte) 0x0A); + ((RFIDReaderHelper) mReaderHelper).iso180006BInventory((byte) 0xFF); + //((RFIDReaderHelper) mReaderHelper).inventory((byte) 0xFF, (byte) 0x0A); // i++; Thread.sleep(70); }