客户端通讯协议
parent
5d988e092d
commit
62bcc185b0
@ -0,0 +1,46 @@
|
||||
package com.zhehekeji.web.service;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 空货位检测的存储map
|
||||
*/
|
||||
public class GoodsEmptyMap {
|
||||
|
||||
private static Map<String, Set<String>> shelveEmptyMap = new HashMap<>();
|
||||
|
||||
public void startEmptyCheck(String SRMNumber){
|
||||
shelveEmptyMap.put(SRMNumber,new HashSet<>());
|
||||
}
|
||||
|
||||
public Set<String> getEmptyCheck(String SRMNumber){
|
||||
return shelveEmptyMap.get(SRMNumber);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public void Position(){
|
||||
|
||||
}
|
||||
|
||||
// @Data
|
||||
// public static class ShelveEmptyMap{
|
||||
//
|
||||
// /**
|
||||
// * {左右}{深浅}{行}{列}
|
||||
// * L 01 0001 0002
|
||||
// */
|
||||
// private String position;
|
||||
// /**
|
||||
// * true: 空
|
||||
// * false: 非空
|
||||
// */
|
||||
// private Boolean isEmpty;
|
||||
// }
|
||||
}
|
||||
@ -0,0 +1,71 @@
|
||||
package com.zhehekeji.web.service.client;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.handler.codec.DelimiterBasedFrameDecoder;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.nio.charset.Charset;
|
||||
|
||||
/**
|
||||
* 客户端解码器 连接用
|
||||
*/
|
||||
@Slf4j
|
||||
public class Decoder extends DelimiterBasedFrameDecoder {
|
||||
|
||||
private static final Logger tcpLogger = LoggerFactory.getLogger("client_tcp");
|
||||
|
||||
|
||||
public Decoder() {
|
||||
super(200,true,false, Unpooled.copiedBuffer(";".getBytes()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Object decode(ChannelHandlerContext ctx, ByteBuf in) throws Exception {
|
||||
in = (ByteBuf) super.decode(ctx, in);
|
||||
if(in == null){
|
||||
log.debug("no data");
|
||||
return null;
|
||||
}
|
||||
String body = in.toString(Charset.forName("UTF-8"));
|
||||
if(body.startsWith(HBTransmission.getHEADER())) {
|
||||
//心跳
|
||||
HBTransmission hbTransmission = new HBTransmission(body);
|
||||
//回复客户端心跳
|
||||
|
||||
ctx.channel().writeAndFlush(hbTransmission.toString());
|
||||
tcpLogger.info("client:{} heart", hbTransmission.getSRMNumber());
|
||||
in.release();
|
||||
} else if(body.startsWith(TMTransmission.getHeader())){
|
||||
//盘点与空货位扫描相关的指令
|
||||
TMTransmission tmTransmission = new TMTransmission(body);
|
||||
if(tmTransmission.getType() == 1){
|
||||
//空货位扫描
|
||||
|
||||
}else {
|
||||
//盘点
|
||||
}
|
||||
in.release();
|
||||
}else if(body.startsWith(CETransmission.getHEADER())){
|
||||
//建立连接
|
||||
CETransmission ceTransmission = new CETransmission(body);
|
||||
//回复客户端,建立连接完成
|
||||
ctx.channel().writeAndFlush(ceTransmission.toString());
|
||||
ClientChanel.connect(ceTransmission.getSRMNumber(), ctx.channel());
|
||||
tcpLogger.info("client:{} connect", ceTransmission.getSRMNumber());
|
||||
in.release();
|
||||
}else if(body.startsWith("DC")){
|
||||
//客户端断开连接
|
||||
String [] strings = body.split(",");
|
||||
if(strings != null && strings.length == 2){
|
||||
tcpLogger.info("client:{} disConnect", strings[1]);
|
||||
ClientChanel.disConnect(strings[1]);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
package com.zhehekeji.web.service.client;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
/**
|
||||
* 空托盘检测
|
||||
*/
|
||||
public class EmptyTrayCheckTransmission {
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,30 @@
|
||||
package com.zhehekeji.web.service.client;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
/**
|
||||
* 与客户端的心跳
|
||||
*/
|
||||
public class HBTransmission {
|
||||
|
||||
private static String HEADER = "HB";
|
||||
|
||||
private String SRMNumber;
|
||||
|
||||
public String toString(){
|
||||
return HEADER + "," + SRMNumber;
|
||||
}
|
||||
|
||||
public static String getHEADER(){
|
||||
return HEADER;
|
||||
}
|
||||
|
||||
public HBTransmission(String body){
|
||||
String [] strings = body.split(",");
|
||||
if(strings != null && strings.length == 2 && HEADER.equals(strings[0])){
|
||||
SRMNumber = strings[1];
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue