parent
2b0bf803f3
commit
9f0435dbc7
@ -1,175 +1,10 @@
|
|||||||
package com.zhehekeji.web.service.RFID;
|
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.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