diff --git a/src/main/java/com/casic/missiles/service/impl/BusinessReadWriterServiceImpl.java b/src/main/java/com/casic/missiles/service/impl/BusinessReadWriterServiceImpl.java index 3f89edf..d895095 100644 --- a/src/main/java/com/casic/missiles/service/impl/BusinessReadWriterServiceImpl.java +++ b/src/main/java/com/casic/missiles/service/impl/BusinessReadWriterServiceImpl.java @@ -69,13 +69,13 @@ reader.setProtocol(ProtocolVersion.GRP); reader.setReaderProtocol(ProtocolVersion.GRP); reader.setPortSum(4);//只对LRP的有效 - reader.connect(false, new BaseReader.IConnectListener() { + boolean connect = reader.connect(false, new BaseReader.IConnectListener() { @Override public void callback(boolean b) { log.info("大读写器设备连接状态:" + b); } }); - if (reader.getIsConnected() == false) { + if (!connect || reader.getIsConnected() == false) { continue; } break; @@ -91,8 +91,10 @@ } else { return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); } - } catch (InterruptedException e) { + } catch (Exception e) { log.error("大读写器读取标签异常:{}", e.getMessage()); + log.info("关闭reader------------------------------------------------------"); + reader.disconnect(); return ReturnUtil.failed(BusinessExceptionEnum.FAIL_READ_EPC_TID.getCode(), BusinessExceptionEnum.FAIL_READ_EPC_TID.getMessage()); } finally { //不断开连接,读写器会每秒发送心跳 @@ -149,6 +151,7 @@ //监听器接收指定时间的数据 TimeUnit.SECONDS.sleep(readWriterConfig.getReceiveDuration()); resultSet.addAll(CodeGunDataListener.dataSet); + resultSet.remove(""); CodeGunDataListener.dataSet = new HashSet<>(); } catch (Exception e) { log.error("有线扫码枪识别失败,异常:", e.getMessage()); @@ -157,6 +160,7 @@ if (Objects.nonNull(serialPortUtil) && Objects.nonNull(serialPort)) { //删除监听器 serialPortUtil.removeListener(serialPort, new CodeGunDataListener()); + log.info("有线扫码枪关闭串口连接=========================================="); serialPortUtil.closePort(serialPort); } } @@ -208,33 +212,41 @@ } @Override - public ReturnDTO> tIdAndMiniAndGunReadList() throws ExecutionException, InterruptedException { - //异步请求大读写器 - ForkJoinTask>> taskResponse = forkJoinPool.submit(new RecursiveTask>>() { - @SneakyThrows - @Override - protected ReturnDTO> compute() { - return tIdNewReadList(); - } - }); - //异步请求小读写器 - ForkJoinTask>> miniTaskResponse = forkJoinPool.submit(new RecursiveTask>>() { - @SneakyThrows - @Override - protected ReturnDTO> compute() { - return tIdMiniReadList(); - } - }); - //有线扫码枪(二维码)识别设备id列表 - Set gunSet = queryGunReturnDTO(codeGunReadList()); - //大读写器识别tId列表 - Set tIdsSet = queryGunReturnDTO(taskResponse.get()); - //小读写器识别tId列表 - Set minTIdsSet = queryGunReturnDTO(miniTaskResponse.get()); + public ReturnDTO> tIdAndMiniAndGunReadList() { Set resultSet = new HashSet<>(); - resultSet.addAll(gunSet); - resultSet.addAll(tIdsSet); - resultSet.addAll(minTIdsSet); + try { + //异步请求大读写器 + ForkJoinTask>> taskResponse = forkJoinPool.submit(new RecursiveTask>>() { + @SneakyThrows + @Override + protected ReturnDTO> compute() { + return tIdNewReadList(); + } + }); + //异步请求小读写器 + ForkJoinTask>> miniTaskResponse = forkJoinPool.submit(new RecursiveTask>>() { + @SneakyThrows + @Override + protected ReturnDTO> compute() { + return tIdMiniReadList(); + } + }); + //有线扫码枪(二维码)识别设备id列表 + Set gunSet = queryGunReturnDTO(codeGunReadList()); + //大读写器识别tId列表 + Set tIdsSet = null; + if (CollectionUtils.isEmpty(gunSet)) { + tIdsSet = queryGunReturnDTO(taskResponse.get()); + resultSet.addAll(tIdsSet); + } + + //小读写器识别tId列表 + Set minTIdsSet = queryGunReturnDTO(miniTaskResponse.get()); + resultSet.addAll(gunSet); + resultSet.addAll(minTIdsSet); + } catch (Exception e) { + log.info("识别出现异常:{}", e.getMessage()); + } return ReturnUtil.success(resultSet); } @@ -246,7 +258,7 @@ ScanTagParameter param = new ScanTagParameter(); param.antenna = readWriterConfig.getAntenna(); param.isLoop = true; - param.tidParameter = new byte[]{0,8}; + param.tidParameter = new byte[]{0, 8}; param.writePower = readWriterConfig.getWritePower(); param.readPower = readWriterConfig.getReadPower(); boolean b = reader.reader_Inventory(param, (byte) 0x01);