diff --git a/lib/RXTXcomm.jar b/lib/RXTXcomm.jar new file mode 100644 index 0000000..e1e7503 Binary files /dev/null and b/lib/RXTXcomm.jar differ diff --git a/lib/connect-lib.jar b/lib/connect-lib.jar new file mode 100644 index 0000000..19180d6 Binary files /dev/null and b/lib/connect-lib.jar differ diff --git a/lib/lib_reader.jar b/lib/lib_reader.jar new file mode 100644 index 0000000..cb23ff1 Binary files /dev/null and b/lib/lib_reader.jar differ diff --git a/libs/rxtxSerial.dll b/libs/rxtxSerial.dll new file mode 100644 index 0000000..211e006 Binary files /dev/null and b/libs/rxtxSerial.dll differ diff --git a/web/pom.xml b/web/pom.xml index 2c465f2..a3533ec 100644 --- a/web/pom.xml +++ b/web/pom.xml @@ -96,6 +96,27 @@ system ${project.basedir}/src/main/resources/libs/rxtx-2.1.7.jar + + com.payne.connect + payne + 1.0 + system + ${project.basedir}/src/main/resources/libs/connect-lib.jar + + + com.payne.reader + payneReader + 1.0 + system + ${project.basedir}/src/main/resources/libs/lib_reader.jar + + + gnu.io + rxtxcomm + 1.0 + system + ${project.basedir}/src/main/resources/libs/RXTXcomm.jar + diff --git a/web/src/main/java/com/zhehekeji/web/controller/TestController.java b/web/src/main/java/com/zhehekeji/web/controller/TestController.java index ec8c8ed..458960d 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/TestController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/TestController.java @@ -1,6 +1,7 @@ package com.zhehekeji.web.controller; import com.zhehekeji.core.pojo.Result; +import com.zhehekeji.web.service.RFID.RFIDSocket; import com.zhehekeji.web.service.TestService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -30,5 +31,20 @@ public class TestController { return Result.success(); } + @ApiOperation("自动盘点") + @GetMapping("/1") + public Result test(){ + + RFIDSocket rfidSocket = new RFIDSocket("127.0.0.1", 4001); + rfidSocket.startCheck(1,true); + try { + Thread.sleep(1000*15); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + rfidSocket.stopCheck(); + System.out.println(rfidSocket.getTags()); + return Result.success(); + } } diff --git a/web/src/main/java/com/zhehekeji/web/controller/VideoccController.java b/web/src/main/java/com/zhehekeji/web/controller/VideoccController.java index 59149d2..6ff590e 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/VideoccController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/VideoccController.java @@ -1,12 +1,10 @@ package com.zhehekeji.web.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.zhehekeji.web.entity.CheckLog; -import com.zhehekeji.web.entity.RfidLog; -import com.zhehekeji.web.entity.Videocc; -import com.zhehekeji.web.entity.VideoccResponse; +import com.zhehekeji.web.entity.*; import com.zhehekeji.web.mapper.CheckLogMapper; import com.zhehekeji.web.mapper.RFIDMapper; +import com.zhehekeji.web.mapper.StreetMapper; import com.zhehekeji.web.service.CheckLogService; import com.zhehekeji.web.service.interfaces.RfidLogService; import io.swagger.annotations.Api; @@ -27,24 +25,27 @@ public class VideoccController { private RfidLogService rfidLogService; @Resource private CheckLogMapper checkLogMapper; + @Resource + private StreetMapper streetMapper; @PostMapping("/xiddata") @ApiOperation(value = "库存信息") public VideoccResponse xiddata(@RequestBody Videocc videocc ){ Set list = new HashSet<>(); - if(videocc.getDetails()!=null){ - for(Videocc.Detail detail:videocc.getDetails()){ - list.add(detail.getBoxCode()); - if(detail.getEquipCodes() != null) { - list.addAll(detail.getEquipCodes()); - } + if(videocc.getDetails()!=null && videocc.getDetails().size()>0){ + for(String detail:videocc.getDetails().keySet()){ + list.add(detail); + list.addAll(videocc.getDetails().get(detail)); } } VideoccResponse videoccResponse = new VideoccResponse(); videoccResponse.setMsg("失败"); - videoccResponse.setIsSuccess(0); - CheckLog checkLog = checkLogMapper.selectOne(new QueryWrapper().eq("check_Num",videocc.getJobNum()).orderByDesc("create_time")); - RfidLog rfidLog = rfidLogService.getOne(new QueryWrapper().eq("task_id",videocc.getJobNum()).orderByDesc("create_time")); + videoccResponse.setIsSuccess(0);RfidLog rfidLog = rfidLogService.getOne(new QueryWrapper().eq("task_id",videocc.getJobNum()).orderByDesc("create_time")); + + Street street = streetMapper.selectById(rfidLog.getStreet_id()); + + CheckLog checkLog = checkLogMapper.selectOne(new QueryWrapper().eq("check_Num",street.getPlcId()+"_"+videocc.getJobNum()).orderByDesc("create_time")); + if(rfidLog!=null){ Set codes = rfidLog.getRfidTrayCode().split(",").length>0?new HashSet<>(Arrays.asList(rfidLog.getRfidTrayCode().split(","))):new HashSet<>(); if(codes.containsAll(list)){ diff --git a/web/src/main/java/com/zhehekeji/web/entity/CheckLog.java b/web/src/main/java/com/zhehekeji/web/entity/CheckLog.java index ff635f7..460d1d2 100644 --- a/web/src/main/java/com/zhehekeji/web/entity/CheckLog.java +++ b/web/src/main/java/com/zhehekeji/web/entity/CheckLog.java @@ -13,6 +13,7 @@ import java.time.LocalDateTime; public class CheckLog { + @TableId(type = IdType.AUTO) private Integer id; private Integer streetId; diff --git a/web/src/main/java/com/zhehekeji/web/entity/Device.java b/web/src/main/java/com/zhehekeji/web/entity/Device.java new file mode 100644 index 0000000..9571d6f --- /dev/null +++ b/web/src/main/java/com/zhehekeji/web/entity/Device.java @@ -0,0 +1,16 @@ +package com.zhehekeji.web.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import java.util.List; + +@Data +public class Device { + private Integer id; + private String name; + private String note; + private String code; + @TableField(exist = false) + private List cameraIOList; +} diff --git a/web/src/main/java/com/zhehekeji/web/entity/Videocc.java b/web/src/main/java/com/zhehekeji/web/entity/Videocc.java index 1c03de7..e109d0e 100644 --- a/web/src/main/java/com/zhehekeji/web/entity/Videocc.java +++ b/web/src/main/java/com/zhehekeji/web/entity/Videocc.java @@ -1,9 +1,11 @@ package com.zhehekeji.web.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import java.util.List; +import java.util.Map; @Data public class Videocc { @@ -19,13 +21,8 @@ public class Videocc { private String sku; @JsonProperty(value = "QTY") private String qty; + @TableField(exist = false) @JsonProperty("DETAIL") - private List details; - @Data - public static class Detail { - private String boxCode; - @JsonProperty("equipCode") - private List equipCodes; + private Map> details; - } } diff --git a/web/src/main/java/com/zhehekeji/web/lib/hik/HikCameraControlModuleImpl.java b/web/src/main/java/com/zhehekeji/web/lib/hik/HikCameraControlModuleImpl.java index e330d10..68cafc2 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/hik/HikCameraControlModuleImpl.java +++ b/web/src/main/java/com/zhehekeji/web/lib/hik/HikCameraControlModuleImpl.java @@ -399,10 +399,15 @@ public class HikCameraControlModuleImpl implements CameraControlModule { */ public void toPtz(Integer ptzId, Integer cameraId) { - int dwPTZCommand = HCNetSDK.GOTO_PRESET; - Boolean ok = HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZPreset_Other(CameraConnMap.getConnId(cameraId).intValue(), 1, dwPTZCommand, ptzId); - if(!ok){ - log.error("toPtz error:{},cameraId:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(),cameraId); + try{ + + int dwPTZCommand = HCNetSDK.GOTO_PRESET; + Boolean ok = HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZPreset_Other(CameraConnMap.getConnId(cameraId).intValue(), 1, dwPTZCommand, ptzId); + if(!ok){ + log.error("toPtz error:{},cameraId:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(),cameraId); + } + }catch (Exception e){ + log.info("摄像头没有读取到 ,cameraId:{},ptId:{}", cameraId, ptzId); } } diff --git a/web/src/main/java/com/zhehekeji/web/service/InitService.java b/web/src/main/java/com/zhehekeji/web/service/InitService.java index 673b0fb..a115466 100644 --- a/web/src/main/java/com/zhehekeji/web/service/InitService.java +++ b/web/src/main/java/com/zhehekeji/web/service/InitService.java @@ -109,7 +109,7 @@ public class InitService implements ApplicationRunner { }catch (Exception e){ log.info(" reconnect......"); - nettyClient.reconnect(1); + ksecNettyClient.reconnect(0); log.error("kesc connect error,url:{},port:{}",ksec.getIp(),ksec.getPort()); } }else { 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 c640836..5b42882 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -387,7 +387,12 @@ public class PlcService { Integer ptzId = cameraService.getPtzIdByCodeAndCameraId(code, cameraId); if (ptzId != null && ptzId >= 0) { log.info("gyrate camera by code, code:{},cameraId:{},ptId:{}", code, cameraId, ptzId); - cameraControlModule.toPtz(ptzId, cameraId); + try{ + + cameraControlModule.toPtz(ptzId, cameraId); + }catch (Exception e){ + log.info("摄像头没有读取到 , code:{},cameraId:{},ptId:{}", code, cameraId, ptzId); + } } else { log.info("ptz not found , code:{},cameraId:{},ptId:{}", code, cameraId, ptzId); log.error("ptz not found ,code:{},cameraId:{}", code, cameraId); @@ -407,6 +412,7 @@ public class PlcService { Integer ptzId = cameraService.getPtzIdByCodeAndCameraId(code, cameraId); if (ptzId != null && ptzId >= 0) { log.info("gyrate camera by code, code:{},cameraId:{},ptId:{}", code, cameraId, ptzId); + TaskDelayExecutor.addGyrateCameraTask(cameraId, times, ptzId); //cameraControlModule.toPtz(ptzId,cameraId); } else { @@ -856,7 +862,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); + rfidSocket.startCheck(direction,true); RFIDMap.put(streetId, rfidSocket); } @@ -874,20 +880,6 @@ public class PlcService { } - public String RFIDStopGetRFID(PlcCmdInfo plcCmdInfo) { - - Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId()); - RFIDSocket rfidSocket = RFIDMap.get(street.getId()); - String tags = ""; - if (rfidSocket != null) { - log.info("tag:{}", tags); - rfidSocket.stopCheck(); - tags = rfidSocket.getTag(); - RFIDMap.remove(street.getId()); - } - return tags; - } - public ConfigProperties getConfigProperties() { return configProperties; } diff --git a/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDReader.java b/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDReader.java new file mode 100644 index 0000000..83812b5 --- /dev/null +++ b/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDReader.java @@ -0,0 +1,579 @@ +package com.zhehekeji.web.service.RFID; + +import com.payne.reader.Reader; +import com.payne.reader.base.Consumer; +import com.payne.reader.bean.config.AntennaCount; +import com.payne.reader.bean.config.BaudRate; +import com.payne.reader.bean.config.Beeper; +import com.payne.reader.bean.config.ClearMaskId; +import com.payne.reader.bean.config.CmdStatus; +import com.payne.reader.bean.config.FastTidType; +import com.payne.reader.bean.config.GpioInType; +import com.payne.reader.bean.config.ProfileId; +import com.payne.reader.bean.receive.AntConnectionDetector; +import com.payne.reader.bean.receive.E710LinkProfile; +import com.payne.reader.bean.receive.Failure; +import com.payne.reader.bean.receive.FreqRegionResult; +import com.payne.reader.bean.receive.GpioOut; +import com.payne.reader.bean.receive.ImpinjFastTid; +import com.payne.reader.bean.receive.MaskInfo; +import com.payne.reader.bean.receive.MatchInfo; +import com.payne.reader.bean.receive.OperationTag; +import com.payne.reader.bean.receive.OutputPower; +import com.payne.reader.bean.receive.ReaderIdentifier; +import com.payne.reader.bean.receive.ReaderStatus; +import com.payne.reader.bean.receive.ReaderTemperature; +import com.payne.reader.bean.receive.ReceiveData; +import com.payne.reader.bean.receive.RfLinkProfile; +import com.payne.reader.bean.receive.RfPortReturnLoss; +import com.payne.reader.bean.receive.Success; +import com.payne.reader.bean.receive.TempLabel2; +import com.payne.reader.bean.receive.Version; +import com.payne.reader.bean.receive.WorkAntenna; +import com.payne.reader.bean.send.CustomSessionReadConfig; +import com.payne.reader.bean.send.FreqNormal; +import com.payne.reader.bean.send.FreqUserDefine; +import com.payne.reader.bean.send.Identifier; +import com.payne.reader.bean.send.InventoryConfig; +import com.payne.reader.bean.send.KillConfig; +import com.payne.reader.bean.send.LockConfig; +import com.payne.reader.bean.send.MaskConfig; +import com.payne.reader.bean.send.MatchConfig; +import com.payne.reader.bean.send.MultiAntReadTagConfig; +import com.payne.reader.bean.send.OutputPowerConfig; +import com.payne.reader.bean.send.ReadConfig; +import com.payne.reader.bean.send.TempLabel2Config; +import com.payne.reader.bean.send.WriteConfig; +import com.payne.reader.communication.ConnectHandle; +import com.payne.reader.communication.DataPacket; +import java.security.InvalidParameterException; +/** + * 读取器接口 + */ +public interface RFIDReader extends Reader { + /** + * 连接读取器 + * + * @param var1 连接处理回调 + * @return 连接是否成功 + */ + boolean connect(ConnectHandle var1); + + /** + * 连接读取器,并设置回调线程 + * + * @param var1 连接处理回调 + * @param var2 回调线程 + * @return 连接是否成功 + */ + boolean connect(ConnectHandle var1, boolean var2); + + /** + * 判断是否已连接 + * + * @return 是否已连接 + */ + boolean isConnected(); + + /** + * 断开连接 + */ + void disconnect(); + + /** + * 获取读取器地址 + * + * @return 读取器地址 + */ + byte getReaderAddress(); + + /** + * 获取天线数量 + * + * @return 天线数量 + */ + AntennaCount getAntennaCount(); + + /** + * 切换天线数量 + * + * @param var1 天线数量 + */ + void switchAntennaCount(AntennaCount var1); + + /** + * 设置命令超时时间 + * + * @param var1 超时时间 + */ + void setCmdTimeout(long var1); + + /** + * 重置读取器 + * + * @param var1 失败处理回调 + */ + void reset(Consumer var1); + + /** + * 设置波特率 + * + * @param var1 波特率类型 + * @param var2 成功处理回调 + * @param var3 失败处理回调 + */ + void setBaudRate(BaudRate var1, Consumer var2, Consumer var3); + + /** + * 设置波特率 + * + * @param var1 波特率类型 + * @param var2 成功处理回调 + * @param var3 失败处理回调 + * @param var4 异常处理回调 + */ + void setBaudRate(BaudRate var1, Consumer var2, Consumer var3, Consumer var4); + + /** + * 设置读取器地址 + * + * @param var1 读取器地址 + * @param var2 成功处理回调 + * @param var3 失败处理回调 + */ + void setReaderAddress(byte var1, Consumer var2, Consumer var3); + + /** + * 获取固件版本 + * + * @param var1 版本获取成功处理回调 + * @param var2 失败处理回调 + */ + void getFirmwareVersion(Consumer var1, Consumer var2); + + /** + * 设置蜂鸣器模式 + * + * @param var1 蜂鸣器模式 + * @param var2 成功处理回调 + * @param var3 失败处理回调 + */ + void setBeeperMode(Beeper var1, Consumer var2, Consumer var3); + + /** + * 获取读取器温度 + * + * @param var1 读取器温度获取成功处理回调 + * @param var2 失败处理回调 + */ + void getReaderTemperature(Consumer var1, Consumer var2); + + /** + * 读取GPIO输出 + * + * @param var1 GPIO输出获取成功处理回调 + * @param var2 失败处理回调 + */ + void readGpio(Consumer var1, Consumer var2); + + /** + * 写入GPIO输入 + * + * @param var1 GPIO输入类型 + * @param var2 输入值 + * @param var3 成功处理回调 + * @param var4 失败处理回调 + */ + void writeGpio(GpioInType var1, boolean var2, Consumer var3, Consumer var4); + + /** + * 设置天线连接探测器地址 + * + * @param var1 探测器地址 + * @param var2 成功处理回调 + * @param var3 失败处理回调 + */ + void setAntConnectionDetector(byte var1, Consumer var2, Consumer var3); + + /** + * 获取天线连接探测器地址 + * + * @param var1 探测器地址获取成功处理回调 + * @param var2 失败处理回调 + */ + void getAntConnectionDetector(Consumer var1, Consumer var2); + + /** + * 设置工作天线 + * + * @param var1 工作天线 + * @param var2 成功处理回调 + * @param var3 失败处理回调 + * @throws InvalidParameterException 参数无效异常 + */ + void setWorkAntenna(int var1, Consumer var2, Consumer var3) throws InvalidParameterException; + + /** + * 获取工作天线 + * + * @param var1 工作天线获取成功处理回调 + * @param var2 失败处理回调 + */ + void getWorkAntenna(Consumer var1, Consumer var2); + + /** + * 获取缓存工作天线 + * + * @return 缓存工作天线 + */ + int getCacheWorkAntenna(); + + /** + * 获取缓存天线组 + * + * @return 缓存天线组 + */ + int getCacheAntennaGroup(); + + /** + * 设置输出功率 + * + * @param var1 输出功率配置 + * @param var2 成功处理回调 + * @param var3 失败处理回调 + * @throws InvalidParameterException 参数无效异常 + */ + void setOutputPower(OutputPowerConfig var1, Consumer var2, Consumer var3) throws InvalidParameterException; + + /** + * 获取输出功率 + * + * @param var1 输出功率获取成功处理回调 + * @param var2 失败处理回调 + */ + void getOutputPower(Consumer var1, Consumer var2); + + /** + * 设置均匀输出功率 + * + * @param var1 均匀输出功率 + * @param var2 设置成功处理回调 + * @param var3 失败处理回调 + */ + void setOutputPowerUniformly(byte var1, boolean var2, Consumer var3, Consumer var4); + + /** + * 设置频率区域 + * + * @param var1 频率区域类型 + * @param var2 成功处理回调 + * @param var3 失败处理回调 + */ + void setFrequencyRegion(FreqNormal var1, Consumer var2, Consumer var3); + + /** + * 设置用户定义频率 + * + * @param var1 用户定义频率类型 + * @param var2 成功处理回调 + * @param var3 失败处理回调 + */ + void setUserDefineFrequency(FreqUserDefine var1, Consumer var2, Consumer var3); + + /** + * 获取频率区域 + * + * @param var1 频率区域获取成功处理回调 + * @param var2 失败处理回调 + */ + void getFrequencyRegion(Consumer var1, Consumer var2); + + /** + * 设置读取器标识 + * + * @param var1 读取器标识 + * @param var2 成功处理回调 + * @param var3 失败处理回调 + */ + void setReaderIdentifier(Identifier var1, Consumer var2, Consumer var3); + + /** + * 获取读取器标识 + * + * @param var1 读取器标识获取成功处理回调 + * @param var2 失败处理回调 + */ + void getReaderIdentifier(Consumer var1, Consumer var2); + + /** + * 设置RF链接配置 + * + * @param var1 链接配置 + * @param var2 成功处理回调 + * @param var3 失败处理回调 + */ + void setRfLinkProfile(ProfileId var1, Consumer var2, Consumer var3); + + /** + * 获取RF链接配置 + * + * @param var1 RF链接配置获取成功处理回调 + * @param var2 失败处理回调 + */ + void getRfLinkProfile(Consumer var1, Consumer var2); + + /** + * 设置E710链接配置 + * + * @param var1 链接配置 + * @param var2 配置类型 + * @param var3 成功处理回调 + * @param var4 失败处理回调 + */ + void setE710LinkProfile(ProfileId var1, byte var2, Consumer var3, Consumer var4); + + /** + * 获取E710链接配置 + * + * @param var1 E710链接配置获取成功处理回调 + * @param var2 失败处理回调 + */ + void getE710LinkProfile(Consumer var1, Consumer var2); + + /** + * 获取RF端口返回损耗 + * + * @param var1 端口号 + * @param var2 返回损耗获取成功处理回调 + * @param var3 失败处理回调 + */ + void getRfPortReturnLoss(byte var1, Consumer var2, Consumer var3); + + /** + * 设置库存配置 + * + * @param var1 库存配置 + * @throws InvalidParameterException 参数无效异常 + */ + void setInventoryConfig(InventoryConfig var1) throws InvalidParameterException; + + /** + * 开始库存盘点 + * + * @param var1 是否开启多天线读取 + */ + void startInventory(boolean var1); + + /** + * 停止盘点。 + */ + void stopInventory(); + + /** + * 停止盘点,参数为一个布尔值。 + * + * @param var1 布尔值参数 + */ + void stopInventory(boolean var1); + + /** + * 设置MultiAntReadTagConfig配置。 + * + * @param var1 MultiAntReadTagConfig对象 + */ + void setMultiAntReadTagConfig(MultiAntReadTagConfig var1); + + /** + * 启动MultiAntReadTag。 + */ + void startMultiAntReadTag(); + + /** + * 停止MultiAntReadTag。 + */ + void stopMultiAntReadTag(); + + /** + * 读取标签。 + * + * @param var1 读取配置ReadConfig对象 + * @param var2 操作标签回调函数 + * @param var3 失败回调函数 + */ + void readTag(ReadConfig var1, Consumer var2, Consumer var3); + + /** + * 读取标签。 + * + * @param var1 自定义会话读取配置CustomSessionReadConfig对象 + * @param var2 操作标签回调函数 + * @param var3 失败回调函数 + */ + void readTag(CustomSessionReadConfig var1, Consumer var2, Consumer var3); + + /** + * 写入标签。 + * + * @param var1 写入配置WriteConfig对象 + * @param var2 布尔值参数 + * @param var3 操作标签回调函数 + * @param var4 失败回调函数 + */ + void writeTag(WriteConfig var1, boolean var2, Consumer var3, Consumer var4); + + /** + * 锁定标签。 + * + * @param var1 锁定配置LockConfig对象 + * @param var2 操作标签回调函数 + * @param var3 失败回调函数 + */ + void lockTag(LockConfig var1, Consumer var2, Consumer var3); + + /** + * 杀死标签。 + * + * @param var1 杀死配置KillConfig对象 + * @param var2 操作标签回调函数 + * @param var3 失败回调函数 + */ + void killTag(KillConfig var1, Consumer var2, Consumer var3); + + /** + * 设置ImpinjFastTid。 + * + * @param var1 FastTidType对象 + * @param var2 布尔值参数 + * @param var3 成功回调函数 + * @param var4 失败回调函数 + */ + void setImpinjFastTid(FastTidType var1, boolean var2, Consumer var3, Consumer var4); + + /** + * 获取ImpinjFastTid。 + * + * @param var1 成功回调函数 + * @param var2 失败回调函数 + */ + void getImpinjFastTid(Consumer var1, Consumer var2); + + /** + * 设置EpcMatch。 + * + * @param var1 匹配配置MatchConfig对象 + * @param var2 成功回调函数 + * @param var3 失败回调函数 + */ + void setEpcMatch(MatchConfig var1, Consumer var2, Consumer var3); + + /** + * 获取EpcMatch。 + * + * @param var1 成功回调函数 + * @param var2 失败回调函数 + */ + void getEpcMatch(Consumer var1, Consumer var2); + + /** + * 清除EpcMatch。 + * + * @param var1 成功回调函数 + * @param var2 失败回调函数 + */ + void clearEpcMatch(Consumer var1, Consumer var2); + + /** + * 设置TagMask。 + * + * @param var1 掩码配置MaskConfig对象 + * @param var2 成功回调函数 + * @param var3 失败回调函数 + */ + void setTagMask(MaskConfig var1, Consumer var2, Consumer var3); + + /** + * 获取TagMask。 + * + * @param var1 成功回调函数 + * @param var2 失败回调函数 + */ + void getTagMask(Consumer var1, Consumer var2); + + /** + * 清除TagMask。 + * + * @param var1 清除的TagMaskID + * @param var2 成功回调函数 + * @param var3 失败回调函数 + */ + void clearTagMask(ClearMaskId var1, Consumer var2, Consumer var3); + + /** + * 设置ReaderStatus。 + * + * @param var1 字节参数 + * @param var2 成功回调函数 + * @param var3 失败回调函数 + */ + void setReaderStatus(byte var1, Consumer var2, Consumer var3); + + /** + * 获取ReaderStatus。 + * + * @param var1 成功回调函数 + * @param var2 失败回调函数 + */ + void getReaderStatus(Consumer var1, Consumer var2); + + /** + * 获取TempLabel2。 + * + * @param var1 TempLabel2对象 + * @param var2 失败回调函数 + */ + void measTempLabel2(TempLabel2Config var1, Consumer var2, Consumer var3); + + /** + * 设置CommandStatusCallback。 + * + * @param var1 回调函数 + */ + void setCommandStatusCallback(Consumer var1); + + /** + * 设置OriginalDataCallback。 + * + * @param var1 原始数据回调函数 + * @param var2 失败回调函数 + */ + void setOriginalDataCallback(Consumer var1, Consumer var2); + + /** + * 设置UndefinedResultCallback。 + * + * @param var1 未定义结果回调函数 + */ + void setUndefinedResultCallback(Consumer var1); + + /** + * @deprecated 已过时,请勿使用 + */ + @Deprecated + void sendCustomRequest(byte var1, byte[] var2); + + /** + * 发送自定义请求。 + * + * @param var1 数据包对象 + */ + void sendCustomRequest(DataPacket var1); + + /** + * 获取SdkBuildInfo。 + * + * @return SdkBuildInfo信息 + */ + default String getSdkBuildInfo() { + return "add cmd:89, packaged at 2022-10-13 04.00"; + } +} \ No newline at end of file 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 6c84d7b..c3831c8 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 @@ -1,15 +1,15 @@ package com.zhehekeji.web.service.RFID; -import com.module.interaction.RXTXListener; -import com.module.interaction.ReaderHelper; -import com.rfid.RFIDReaderHelper; -import com.rfid.ReaderConnector; -import com.rfid.rxobserver.RXObserver; -import com.rfid.rxobserver.ReaderSetting; -import com.rfid.rxobserver.bean.RXInventoryTag; - -import com.rfid.bean.MessageTran; -import com.util.StringTool; +import com.payne.connect.net.NetworkHandle; +import com.payne.reader.Reader; +import com.payne.reader.base.Consumer; +import com.payne.reader.bean.config.AntennaCount; +import com.payne.reader.bean.receive.*; +import com.payne.reader.bean.send.FastSwitchFourAntennaInventory; +import com.payne.reader.bean.send.InventoryConfig; +import com.payne.reader.process.ReaderImpl; +import com.payne.reader.util.ArrayUtils; + import com.zhehekeji.web.util.ToolUtil; import java.util.*; @@ -18,151 +18,158 @@ import java.util.concurrent.ConcurrentHashMap; public class RFIDSocket { private String ip; private int port; - private ReaderHelper mReaderHelper; - private ReaderConnector mReaderConnector; private boolean running; + Reader mReader; private Set tags = new HashSet<>(); - private Map tagsCount = new ConcurrentHashMap<>(); - public Set getTags(){ + private Map tagsCount = new ConcurrentHashMap<>(); + + public Set getTags() { return tags; } + public RFIDSocket(String ip, Integer port) { + this.ip = ip; + this.port = port; + NetworkHandle handle = new NetworkHandle(ip, (port)); + mReader = ReaderImpl.create(AntennaCount.FOUR_CHANNELS); - private Observer mObserver = new RXObserver() { - @Override - protected void onInventoryTag(RXInventoryTag tag) { - System.out.println("EPC data:" + tag.strEPC); - } + boolean linkSuccess =false; + try { + linkSuccess = mReader.connect(handle); - @Override - protected void onInventoryTagEnd(RXInventoryTag.RXInventoryTagEnd endTag) { - System.out.println("inventory end:" + endTag.mTotalRead); - ((RFIDReaderHelper) mReaderHelper).realTimeInventory((byte) 0xff,(byte)0x01); + }catch (Exception e) { + e.printStackTrace(); } - - @Override - protected void onExeCMDStatus(byte cmd,byte status) { - System.out.format("CDM:%s Execute status:%S\n", - String.format("%02X",cmd),String.format("%02x", status)); - } - }; - private RXTXListener mListener = new RXTXListener() { - @Override - //获取接收器返回的数据 - public void reciveData(byte[] btAryReceiveData) { - // TODO Auto-generated method stub - System.out.println("reciveData: " + StringTool.byteArrayToString(btAryReceiveData, 0, btAryReceiveData.length)); - MessageTran messageTran = new MessageTran(btAryReceiveData); - if (messageTran != null){ - System.out.println("ary data length: " + messageTran.getAryData().length); - System.out.println("artData: " + StringTool.byteArrayToString(messageTran.getAryData(), 0, messageTran.getAryData().length)); - StringBuffer sb = new StringBuffer(); - int aryDataLength = messageTran.getAryData().length; - if (aryDataLength > 8){ - for (int i = 0; i < aryDataLength; ++i){ - sb.append(java.lang.String.format("%02X",messageTran.getAryData()[i])); - } - String st = sb.toString(); - int index = st.indexOf("E"); - String tag = st.substring(index, index+16); - System.out.println("tag: "+tag); - tags.add(tag); - if(ToolUtil.isNotEmpty(tagsCount.get(tag))){ - tagsCount.put(tag, tagsCount.get(tag)+1); - }else{ - tagsCount.put(tag, 1); - } - } - } + if (linkSuccess) { + System.out.println("reader1 connect success"); + } else { + throw new RuntimeException("reader1 connect fail"); } - @Override - public void sendData(byte[] btArySendData) { - // TODO Auto-generated method stub - System.out.println("sendData: " + StringTool.byteArrayToString(btArySendData, 0, btArySendData.length)); - } + } + + public void startCheck(Integer direction,boolean foreach) { +// Reader mReader = ReaderImpl.create(AntennaCount.SIXTEEN_CHANNELS); +// Reader mReader = ReaderImpl.create(AntennaCount.EIGHT_CHANNELS); - @Override - public void onLostConnect() { - // TODO Auto-generated method stub - } - }; - public RFIDSocket(String ip, Integer port){ - mReaderConnector = new ReaderConnector(); - mReaderHelper = mReaderConnector.connectNet(ip, port); - } - public void startCheck(Integer direction){ running = true; Thread thread = new Thread(new Runnable() { public void run() { + mReader.setOriginalDataCallback( + new Consumer() { + @Override + public void accept(byte[] onSend) throws Exception { + //System.out.println("---reader 1 send :" + ArrayUtils.bytesToHexString(onSend, 0, onSend.length)); + } + }, + new Consumer() { + @Override + public void accept(byte[] onReceive) throws Exception { - if (mReaderHelper != null) { - System.out.println("Connect success!"); - try { - mReaderHelper.registerObserver(mObserver); - mReaderHelper.setRXTXListener(mListener); - - Thread.sleep(500); - //start to find the tags -// ((RFIDReaderHelper) mReaderHelper).realTimeInventory((byte) 0xff,(byte)0x01); - while (true) { -// if (i%2==0){ - if (!running){ - break; + + } + }); + FastSwitchFourAntennaInventory inventory = new FastSwitchFourAntennaInventory.Builder().build(); + InventoryConfig config = new InventoryConfig.Builder() + .setInventory(inventory) + .setOnInventoryTagSuccess(new Consumer() { + + @Override + 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()); + tags.add(tagStr); + if (ToolUtil.isNotEmpty(tagsCount.get(tagStr))) { + tagsCount.put(tagStr, tagsCount.get(tagStr) + 1); + } else { + tagsCount.put(tagStr, 1); + } + } + }) + .setOnInventoryTagEndSuccess(new Consumer() { + + @Override + public void accept(InventoryTagEnd arg0) throws Exception { +// System.out.println("reader1 InventoryTagEnd"); + } + }) + .setOnFailure(new Consumer() { + + @Override + public void accept(InventoryFailure failure) throws Exception { + System.out.println("reader1 inventory fail :" + (failure.getErrorCode() & 0xFF)); + } + }) + .build(); + mReader.setInventoryConfig(config); + mReader.startInventory(true); + + mReader.setWorkAntenna(direction, + new Consumer() { + @Override + public void accept(Success success) throws Exception { + //切换天线 + //处理成功 } - if (direction == 1) { - //切换天线 0x00:天线1;0x01:天线2 - ((RFIDReaderHelper) mReaderHelper).setWorkAntenna((byte) 0xFF, (byte) 0x00); - } else { - ((RFIDReaderHelper) mReaderHelper).setWorkAntenna((byte) 0xFF, (byte) 0x01); + }, new Consumer() { + @Override + public void accept(Failure failure) throws Exception { + //处理失败情况 } - //开始盘存 - ((RFIDReaderHelper) mReaderHelper).iso180006BInventory((byte) 0xFF); -// i++; - Thread.sleep(70); + } + ); + byte[] bytes = new byte[1]; + bytes[0] = 0x01; + while (running) { + try { + bytes[0] = (byte) (bytes[0] == 0x01 ? 0x00 : 0x01); + Thread.sleep(1000); + if(foreach){ + mReader.setWorkAntenna(bytes[0],(v)->{ + System.out.println("reader1 setWorkAntenna success"); + },(v)->{ + System.out.println("reader1 setWorkAntenna fail"); + }); } } catch (Exception e) { - // TODO Auto-generated catch block e.printStackTrace(); + stopCheck(); } - } else { - System.out.println("Connect faild!"); - mReaderConnector.disConnect(); } } + }); thread.start(); } - public void stopCheck(){ + public void stopCheck() { running = false; - if (mReaderConnector.isConnected()){ - mReaderConnector.disConnect(); + System.out.println("reader1 stop"); + if (mReader != null) { + mReader.stopInventory(); + mReader.disconnect(); } + } - public String getTag(){ - if(ToolUtil.isNotEmpty(tagsCount)){ + + public String getTag() { + if (ToolUtil.isNotEmpty(tagsCount)) { int i = 0; - String tag = "" ; - for (String t : tagsCount.keySet()){ - if (i tags = new HashSet<>(); + + private Map tagsCount = new ConcurrentHashMap<>(); + public Set getTags(){ + return tags; + } + + + private Observer mObserver = new RXObserver() { + @Override + protected void onInventoryTag(RXInventoryTag tag) { + System.out.println("EPC data:" + tag.strEPC); + } + + @Override + protected void onInventoryTagEnd(RXInventoryTag.RXInventoryTagEnd endTag) { + System.out.println("inventory end:" + endTag.mTotalRead); + ((RFIDReaderHelper) mReaderHelper).realTimeInventory((byte) 0xff,(byte)0x01); + } + + @Override + protected void onExeCMDStatus(byte cmd,byte status) { + System.out.format("CDM:%s Execute status:%S\n", + String.format("%02X",cmd),String.format("%02x", status)); + } + }; + private RXTXListener mListener = new RXTXListener() { + @Override + //获取接收器返回的数据 + public void reciveData(byte[] btAryReceiveData) { + // TODO Auto-generated method stub + System.out.println("reciveData: " + StringTool.byteArrayToString(btAryReceiveData, 0, btAryReceiveData.length)); + MessageTran messageTran = new MessageTran(btAryReceiveData); + if (messageTran != null){ + System.out.println("ary data length: " + messageTran.getAryData().length); + System.out.println("artData: " + StringTool.byteArrayToString(messageTran.getAryData(), 0, messageTran.getAryData().length)); + StringBuffer sb = new StringBuffer(); + int aryDataLength = messageTran.getAryData().length; + if (aryDataLength > 8){ + for (int i = 0; i < aryDataLength; ++i){ + sb.append(java.lang.String.format("%02X",messageTran.getAryData()[i])); + } + + String tag = sb.toString(); + //int index = st.indexOf("E"); + //String tag = st.substring(index, index+16); + System.out.println("tag: "+tag); + tags.add(tag); + if(ToolUtil.isNotEmpty(tagsCount.get(tag))){ + tagsCount.put(tag, tagsCount.get(tag)+1); + }else{ + tagsCount.put(tag, 1); + } + } + } + } + + @Override + public void sendData(byte[] btArySendData) { + // TODO Auto-generated method stub + System.out.println("sendData: " + StringTool.byteArrayToString(btArySendData, 0, btArySendData.length)); + } + + @Override + public void onLostConnect() { + // TODO Auto-generated method stub + } + + }; + public RFIDSocketOld(String ip, Integer port){ + mReaderConnector = new ReaderConnector(); + mReaderHelper = mReaderConnector.connectNet(ip, port); + } + public void startCheck(Integer direction){ + running = true; + Thread thread = new Thread(new Runnable() { + public void run() { + + if (mReaderHelper != null) { + System.out.println("Connect success!"); + try { + mReaderHelper.registerObserver(mObserver); + mReaderHelper.setRXTXListener(mListener); + + Thread.sleep(500); + //start to find the tags +// ((RFIDReaderHelper) mReaderHelper).realTimeInventory((byte) 0xff,(byte)0x01); + while (true) { +// if (i%2==0){ + if (!running){ + break; + } + if (direction == 1) { + //切换天线 0x00:天线1;0x01:天线2 + ((RFIDReaderHelper) mReaderHelper).setWorkAntenna((byte) 0xFF, (byte) 0x00); + } else { + ((RFIDReaderHelper) mReaderHelper).setWorkAntenna((byte) 0xFF, (byte) 0x01); + } + //开始盘存180006B + //((RFIDReaderHelper) mReaderHelper).iso180006BInventory((byte) 0xFF); + ((RFIDReaderHelper) mReaderHelper).inventory((byte) 0xFF, (byte) 0x0A); +// i++; + Thread.sleep(70); + } + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } else { + System.out.println("Connect faild!"); + mReaderConnector.disConnect(); + } + } + }); + thread.start(); + } + + public void stopCheck(){ + running = false; + if (mReaderConnector.isConnected()){ + mReaderConnector.disConnect(); + } + } + public String getTag(){ + if(ToolUtil.isNotEmpty(tagsCount)){ + int i = 0; + String tag = "" ; + for (String t : tagsCount.keySet()){ + if (i