parent
2b0bf803f3
commit
9f0435dbc7
@ -1,175 +1,10 @@
|
||||
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.zhehekeji.web.util.ToolUtil;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
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 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");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
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(" ","");
|
||||
System.out.println("tag: " + tag.getEpc());
|
||||
tagStr = tagStr.replace("0000000000","");
|
||||
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 "";
|
||||
}
|
||||
|
||||
|
||||
public interface RFIDSocket {
|
||||
public void startCheck(Integer direction,boolean foreach);
|
||||
public void stopCheck();
|
||||
public String getTag();
|
||||
public Set<String> getTags();
|
||||
}
|
||||
|
||||
@ -0,0 +1,14 @@
|
||||
package com.zhehekeji.web.service.RFID;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class RFIDSocketFactory {
|
||||
public static RFIDSocket getRFIDSocket(String ip, Integer port, String codeType){
|
||||
if("ISO18000_6C".equals(codeType)){
|
||||
return new RFIDSocketISO6C(ip, port);
|
||||
}else{
|
||||
return new RFIDSocketOld(ip, port);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,199 @@
|
||||
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.zhehekeji.web.util.ToolUtil;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class RFIDSocketISO6C implements RFIDSocket{
|
||||
String ip = "";
|
||||
int port= 2001;
|
||||
|
||||
private boolean running;
|
||||
Reader mReader;
|
||||
|
||||
private Set<String> tags = new HashSet<>();
|
||||
|
||||
private Map<String, Integer> tagsCount = new ConcurrentHashMap<>();
|
||||
|
||||
public Set<String> getTags() {
|
||||
return tags;
|
||||
}
|
||||
public RFIDSocketISO6C(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");
|
||||
}
|
||||
|
||||
}
|
||||
public RFIDSocket getRFIDSocket(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");
|
||||
}
|
||||
return this;
|
||||
|
||||
}
|
||||
|
||||
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(" ","");
|
||||
System.out.println("tag: " + tag.getEpc());
|
||||
tagStr = tagStr.replace("0000000000","");
|
||||
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