rfid采用tcp模拟
parent
2293fb5f70
commit
f5803e276f
@ -1,9 +1,18 @@
|
|||||||
package com.zhehekeji.web.entity;
|
package com.zhehekeji.web.entity;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class CheckInfo {
|
public class CheckInfo {
|
||||||
private String trayCode;
|
private String trayCode;
|
||||||
|
private String wmsTrayCode;
|
||||||
|
private String[] wmsTrayCodes;
|
||||||
|
private String orderNum;
|
||||||
|
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||||
|
private LocalDateTime exportTime;
|
||||||
private int checkRlt;
|
private int checkRlt;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,19 @@
|
|||||||
|
package com.zhehekeji.web.service.RFID;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class RFIDData {
|
||||||
|
|
||||||
|
private String pc;
|
||||||
|
private String epc;
|
||||||
|
private String crc;
|
||||||
|
private String tid;
|
||||||
|
|
||||||
|
public RFIDData(String pc, String epc, String crc, String tid) {
|
||||||
|
this.pc = pc;
|
||||||
|
this.epc = epc;
|
||||||
|
this.crc = crc;
|
||||||
|
this.tid = tid;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,186 +0,0 @@
|
|||||||
package com.zhehekeji.web.service.RFID;
|
|
||||||
|
|
||||||
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.*;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
|
|
||||||
public class RFIDSocket {
|
|
||||||
private String ip;
|
|
||||||
private int port;
|
|
||||||
private boolean running;
|
|
||||||
Reader mReader;
|
|
||||||
|
|
||||||
private Set<String> tags = new HashSet<>();
|
|
||||||
|
|
||||||
private Map<String, Integer> tagsCount = new ConcurrentHashMap<>();
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
String tagStr = "363000145224505289907900";
|
|
||||||
if(tagStr.startsWith("363000") &&tagStr.endsWith("00")){
|
|
||||||
tagStr = tagStr.substring(0, tagStr.length() - 2);
|
|
||||||
}
|
|
||||||
System.out.println(tagStr);
|
|
||||||
}
|
|
||||||
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);
|
|
||||||
|
|
||||||
boolean linkSuccess =false;
|
|
||||||
try {
|
|
||||||
linkSuccess = mReader.connect(handle);
|
|
||||||
|
|
||||||
}catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
if (linkSuccess) {
|
|
||||||
System.out.println("reader1 connect success");
|
|
||||||
} else {
|
|
||||||
throw new RuntimeException("reader1 connect fail");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**识别
|
|
||||||
*
|
|
||||||
* @param direction 左右
|
|
||||||
* @param foreach 是否循环切换天线
|
|
||||||
*/
|
|
||||||
public void startCheck(Integer direction,boolean foreach) {
|
|
||||||
// Reader mReader = ReaderImpl.create(AntennaCount.SIXTEEN_CHANNELS);
|
|
||||||
// Reader mReader = ReaderImpl.create(AntennaCount.EIGHT_CHANNELS);
|
|
||||||
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 {
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
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(" ","");
|
|
||||||
tagStr = tagStr.substring(tagStr.length() - 8);
|
|
||||||
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 {
|
|
||||||
//切换天线
|
|
||||||
//处理成功
|
|
||||||
}
|
|
||||||
}, new Consumer<Failure>() {
|
|
||||||
@Override
|
|
||||||
public void accept(Failure failure) throws Exception {
|
|
||||||
//处理失败情况
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
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) {
|
|
||||||
e.printStackTrace();
|
|
||||||
stopCheck();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
thread.start();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void stopCheck() {
|
|
||||||
running = false;
|
|
||||||
System.out.println("reader1 stop");
|
|
||||||
if (mReader != null) {
|
|
||||||
mReader.stopInventory();
|
|
||||||
mReader.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 "";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue