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