1.盘点信息接口修改(数据类型修改,任务号修改)

2.开机未连接昆船重连昆船
3.rfid采用最新的
4.盘点返回增加ackstatus
5.全新rfid连接
changchun-医药
LAPTOP-S9HJSOEB\昊天 2 years ago
parent 04d70dc542
commit afe22452e3

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -96,6 +96,27 @@
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/libs/rxtx-2.1.7.jar</systemPath>
</dependency>
<dependency>
<groupId>com.payne.connect</groupId>
<artifactId>payne</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/libs/connect-lib.jar</systemPath>
</dependency>
<dependency>
<groupId>com.payne.reader</groupId>
<artifactId>payneReader</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/libs/lib_reader.jar</systemPath>
</dependency>
<dependency>
<groupId>gnu.io</groupId>
<artifactId>rxtxcomm</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/libs/RXTXcomm.jar</systemPath>
</dependency>
</dependencies>
<build>

@ -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();
}
}

@ -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<String> 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<CheckLog>().eq("check_Num",videocc.getJobNum()).orderByDesc("create_time"));
RfidLog rfidLog = rfidLogService.getOne(new QueryWrapper<RfidLog>().eq("task_id",videocc.getJobNum()).orderByDesc("create_time"));
videoccResponse.setIsSuccess(0);RfidLog rfidLog = rfidLogService.getOne(new QueryWrapper<RfidLog>().eq("task_id",videocc.getJobNum()).orderByDesc("create_time"));
Street street = streetMapper.selectById(rfidLog.getStreet_id());
CheckLog checkLog = checkLogMapper.selectOne(new QueryWrapper<CheckLog>().eq("check_Num",street.getPlcId()+"_"+videocc.getJobNum()).orderByDesc("create_time"));
if(rfidLog!=null){
Set<String> codes = rfidLog.getRfidTrayCode().split(",").length>0?new HashSet<>(Arrays.asList(rfidLog.getRfidTrayCode().split(","))):new HashSet<>();
if(codes.containsAll(list)){

@ -13,6 +13,7 @@ import java.time.LocalDateTime;
public class CheckLog {
@TableId(type = IdType.AUTO)
private Integer id;
private Integer streetId;

@ -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<CameraIO> cameraIOList;
}

@ -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<Detail> details;
@Data
public static class Detail {
private String boxCode;
@JsonProperty("equipCode")
private List<String> equipCodes;
private Map<String,List<String>> details;
}
}

@ -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);
}
}

@ -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 {

@ -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;
}

@ -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<Failure> var1);
/**
*
*
* @param var1
* @param var2
* @param var3
*/
void setBaudRate(BaudRate var1, Consumer<Success> var2, Consumer<Failure> var3);
/**
*
*
* @param var1
* @param var2
* @param var3
* @param var4
*/
void setBaudRate(BaudRate var1, Consumer<Success> var2, Consumer<Failure> var3, Consumer<Throwable> var4);
/**
*
*
* @param var1
* @param var2
* @param var3
*/
void setReaderAddress(byte var1, Consumer<Success> var2, Consumer<Failure> var3);
/**
*
*
* @param var1
* @param var2
*/
void getFirmwareVersion(Consumer<Version> var1, Consumer<Failure> var2);
/**
*
*
* @param var1
* @param var2
* @param var3
*/
void setBeeperMode(Beeper var1, Consumer<Success> var2, Consumer<Failure> var3);
/**
*
*
* @param var1
* @param var2
*/
void getReaderTemperature(Consumer<ReaderTemperature> var1, Consumer<Failure> var2);
/**
* GPIO
*
* @param var1 GPIO
* @param var2
*/
void readGpio(Consumer<GpioOut> var1, Consumer<Failure> var2);
/**
* GPIO
*
* @param var1 GPIO
* @param var2
* @param var3
* @param var4
*/
void writeGpio(GpioInType var1, boolean var2, Consumer<Success> var3, Consumer<Failure> var4);
/**
* 线
*
* @param var1
* @param var2
* @param var3
*/
void setAntConnectionDetector(byte var1, Consumer<Success> var2, Consumer<Failure> var3);
/**
* 线
*
* @param var1
* @param var2
*/
void getAntConnectionDetector(Consumer<AntConnectionDetector> var1, Consumer<Failure> var2);
/**
* 线
*
* @param var1 线
* @param var2
* @param var3
* @throws InvalidParameterException
*/
void setWorkAntenna(int var1, Consumer<Success> var2, Consumer<Failure> var3) throws InvalidParameterException;
/**
* 线
*
* @param var1 线
* @param var2
*/
void getWorkAntenna(Consumer<WorkAntenna> var1, Consumer<Failure> var2);
/**
* 线
*
* @return 线
*/
int getCacheWorkAntenna();
/**
* 线
*
* @return 线
*/
int getCacheAntennaGroup();
/**
*
*
* @param var1
* @param var2
* @param var3
* @throws InvalidParameterException
*/
void setOutputPower(OutputPowerConfig var1, Consumer<Success> var2, Consumer<Failure> var3) throws InvalidParameterException;
/**
*
*
* @param var1
* @param var2
*/
void getOutputPower(Consumer<OutputPower> var1, Consumer<Failure> var2);
/**
*
*
* @param var1
* @param var2
* @param var3
*/
void setOutputPowerUniformly(byte var1, boolean var2, Consumer<Success> var3, Consumer<Failure> var4);
/**
*
*
* @param var1
* @param var2
* @param var3
*/
void setFrequencyRegion(FreqNormal var1, Consumer<Success> var2, Consumer<Failure> var3);
/**
*
*
* @param var1
* @param var2
* @param var3
*/
void setUserDefineFrequency(FreqUserDefine var1, Consumer<Success> var2, Consumer<Failure> var3);
/**
*
*
* @param var1
* @param var2
*/
void getFrequencyRegion(Consumer<FreqRegionResult> var1, Consumer<Failure> var2);
/**
*
*
* @param var1
* @param var2
* @param var3
*/
void setReaderIdentifier(Identifier var1, Consumer<Success> var2, Consumer<Failure> var3);
/**
*
*
* @param var1
* @param var2
*/
void getReaderIdentifier(Consumer<ReaderIdentifier> var1, Consumer<Failure> var2);
/**
* RF
*
* @param var1
* @param var2
* @param var3
*/
void setRfLinkProfile(ProfileId var1, Consumer<Success> var2, Consumer<Failure> var3);
/**
* RF
*
* @param var1 RF
* @param var2
*/
void getRfLinkProfile(Consumer<RfLinkProfile> var1, Consumer<Failure> var2);
/**
* E710
*
* @param var1
* @param var2
* @param var3
* @param var4
*/
void setE710LinkProfile(ProfileId var1, byte var2, Consumer<Success> var3, Consumer<Failure> var4);
/**
* E710
*
* @param var1 E710
* @param var2
*/
void getE710LinkProfile(Consumer<E710LinkProfile> var1, Consumer<Failure> var2);
/**
* RF
*
* @param var1
* @param var2
* @param var3
*/
void getRfPortReturnLoss(byte var1, Consumer<RfPortReturnLoss> var2, Consumer<Failure> 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<OperationTag> var2, Consumer<Failure> var3);
/**
*
*
* @param var1 CustomSessionReadConfig
* @param var2
* @param var3
*/
void readTag(CustomSessionReadConfig var1, Consumer<OperationTag> var2, Consumer<Failure> var3);
/**
*
*
* @param var1 WriteConfig
* @param var2
* @param var3
* @param var4
*/
void writeTag(WriteConfig var1, boolean var2, Consumer<OperationTag> var3, Consumer<Failure> var4);
/**
*
*
* @param var1 LockConfig
* @param var2
* @param var3
*/
void lockTag(LockConfig var1, Consumer<OperationTag> var2, Consumer<Failure> var3);
/**
*
*
* @param var1 KillConfig
* @param var2
* @param var3
*/
void killTag(KillConfig var1, Consumer<OperationTag> var2, Consumer<Failure> var3);
/**
* ImpinjFastTid
*
* @param var1 FastTidType
* @param var2
* @param var3
* @param var4
*/
void setImpinjFastTid(FastTidType var1, boolean var2, Consumer<Success> var3, Consumer<Failure> var4);
/**
* ImpinjFastTid
*
* @param var1
* @param var2
*/
void getImpinjFastTid(Consumer<ImpinjFastTid> var1, Consumer<Failure> var2);
/**
* EpcMatch
*
* @param var1 MatchConfig
* @param var2
* @param var3
*/
void setEpcMatch(MatchConfig var1, Consumer<Success> var2, Consumer<Failure> var3);
/**
* EpcMatch
*
* @param var1
* @param var2
*/
void getEpcMatch(Consumer<MatchInfo> var1, Consumer<Failure> var2);
/**
* EpcMatch
*
* @param var1
* @param var2
*/
void clearEpcMatch(Consumer<Success> var1, Consumer<Failure> var2);
/**
* TagMask
*
* @param var1 MaskConfig
* @param var2
* @param var3
*/
void setTagMask(MaskConfig var1, Consumer<Success> var2, Consumer<Failure> var3);
/**
* TagMask
*
* @param var1
* @param var2
*/
void getTagMask(Consumer<MaskInfo> var1, Consumer<Failure> var2);
/**
* TagMask
*
* @param var1 TagMaskID
* @param var2
* @param var3
*/
void clearTagMask(ClearMaskId var1, Consumer<Success> var2, Consumer<Failure> var3);
/**
* ReaderStatus
*
* @param var1
* @param var2
* @param var3
*/
void setReaderStatus(byte var1, Consumer<Success> var2, Consumer<Failure> var3);
/**
* ReaderStatus
*
* @param var1
* @param var2
*/
void getReaderStatus(Consumer<ReaderStatus> var1, Consumer<Failure> var2);
/**
* TempLabel2
*
* @param var1 TempLabel2
* @param var2
*/
void measTempLabel2(TempLabel2Config var1, Consumer<TempLabel2> var2, Consumer<Failure> var3);
/**
* CommandStatusCallback
*
* @param var1
*/
void setCommandStatusCallback(Consumer<CmdStatus> var1);
/**
* OriginalDataCallback
*
* @param var1
* @param var2
*/
void setOriginalDataCallback(Consumer<byte[]> var1, Consumer<byte[]> var2);
/**
* UndefinedResultCallback
*
* @param var1
*/
void setUndefinedResultCallback(Consumer<ReceiveData> 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";
}
}

@ -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<String> tags = new HashSet<>();
private Map<String,Integer> tagsCount = new ConcurrentHashMap<>();
public Set<String> getTags(){
private Map<String, Integer> tagsCount = new ConcurrentHashMap<>();
public Set<String> 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<byte[]>() {
@Override
public void accept(byte[] onSend) throws Exception {
//System.out.println("---reader 1 send :" + ArrayUtils.bytesToHexString(onSend, 0, onSend.length));
}
},
new Consumer<byte[]>() {
@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<InventoryTag>() {
@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<InventoryTagEnd>() {
@Override
public void accept(InventoryTagEnd arg0) throws Exception {
// System.out.println("reader1 InventoryTagEnd");
}
})
.setOnFailure(new Consumer<InventoryFailure>() {
@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<Success>() {
@Override
public void accept(Success success) throws Exception {
//切换天线
//处理成功
}
if (direction == 1) {
//切换天线 0x00天线10x01天线2
((RFIDReaderHelper) mReaderHelper).setWorkAntenna((byte) 0xFF, (byte) 0x00);
} else {
((RFIDReaderHelper) mReaderHelper).setWorkAntenna((byte) 0xFF, (byte) 0x01);
}, new Consumer<Failure>() {
@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<tagsCount.get(t)) {
String tag = "";
for (String t : tagsCount.keySet()) {
if (i < tagsCount.get(t)) {
tag = t;
i = tagsCount.get(t);
}
}
return tag;
}return "";
}
return "";
}
public static void main(String[] args) throws InterruptedException {
RFIDSocket rfidSocket = new RFIDSocket("10.43.26.132", 4001);
rfidSocket.startCheck(1);
Thread.sleep(1000*10);
rfidSocket.stopCheck();
System.out.println(rfidSocket.getTags());
}
}

@ -0,0 +1,162 @@
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.bean.RXInventoryTag;
import com.rfid.bean.MessageTran;
import com.util.StringTool;
import com.zhehekeji.web.util.ToolUtil;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
public class RFIDSocketOld {
private String ip;
private int port;
private ReaderHelper mReaderHelper;
private ReaderConnector mReaderConnector;
private boolean running;
private Set<String> tags = new HashSet<>();
private Map<String,Integer> tagsCount = new ConcurrentHashMap<>();
public Set<String> 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天线10x01天线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<tagsCount.get(t)) {
tag = t;
i = tagsCount.get(t);
}
}
return tag;
}return "";
}
}

@ -220,6 +220,7 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
String code = dataInfo.getCmdName();
log.info("盘点指令:{}", ksecInfo);
plcService.check(plcCmdInfo,ksecInfo.getType(),dataInfo.getCode(),dataInfo.getTrayCode());
ksecInfo.getData().setAckStatus(1);
/*
if("E1".equals(code)){

@ -68,6 +68,7 @@ public class KsecNettyClient {
} catch (Exception e) {
//没连上 继续
log.error("reconnect error num:{}", num);
if(channel!= null)
channel.close();
num++;
try {

@ -92,4 +92,12 @@ deleteFileDays: 365
#rfid
rfid:
#rfid连续扫描时间默认5s 单位s
scanTime: 1
scanTime: 1
asyncExecutorThread:
corePoolSize: 5
maxPoolSize: 70
queueCapacity: 99999
namePrefix: "Thread_Pool_Task_Executor"
Loading…
Cancel
Save