package com.zy.acs.gateway.utils;
|
|
import com.zy.acs.common.domain.AgvProtocol;
|
import com.zy.acs.common.domain.protocol.IMessageBody;
|
import com.zy.acs.gateway.constant.ProtocolPojoType;
|
import com.zy.acs.gateway.constant.ProtocolType;
|
import com.zy.acs.gateway.domain.AgvPackage;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
|
/**
|
* Created by vincent on 2019-04-03
|
*/
|
public class ProtocolUtils {
|
|
private static final Logger log = LoggerFactory.getLogger(ProtocolUtils.class);
|
|
// 下行协议报文组装
|
public static AgvPackage installDownProtocol(AgvProtocol protocol){
|
|
|
ProtocolPojoType protocolPojo = ProtocolPojoType.query(protocol.getMessageBody().getClass());
|
|
assert protocolPojo != null;
|
|
AgvPackage ackPackage = AgvPackage.valueOfEmpty();
|
ackPackage.getHeader()
|
.setStartSymbol((byte)0xEE)
|
.setContentLength(0)
|
.setUniqueNo(protocol.getAgvNo())
|
.setTimestamp(protocol.getTimestamp())
|
.setProtocolType(protocolPojo.protocolType)
|
;
|
|
ackPackage.getBody().setMessageBody(protocol.getMessageBody());
|
|
return ackPackage;
|
|
}
|
|
// 下行协议报文组装
|
public static AgvPackage installDownProtocol(String uniqueNo, ProtocolType protocolType){
|
|
|
AgvPackage ackPackage = AgvPackage.valueOfEmpty();
|
ackPackage.getHeader()
|
.setStartSymbol((byte)0xEE)
|
.setContentLength(0)
|
.setUniqueNo(uniqueNo)
|
.setTimestamp((int)System.currentTimeMillis()/1000)
|
.setProtocolType(protocolType)
|
;
|
|
ProtocolPojoType protocolPojo = ProtocolPojoType.query(protocolType);
|
|
|
assert protocolPojo != null;
|
|
|
IMessageBody iMessageBody = null;
|
|
try {
|
|
iMessageBody = protocolPojo.clazz.newInstance();
|
} catch (ReflectiveOperationException reflectiveOperationException) {
|
|
|
log.error("MessageBodyHandler ReflectiveOperationException", reflectiveOperationException);
|
|
log.error("java反射创建实例失败:{}", protocolPojo.clazz.getName());
|
|
return null;
|
}
|
|
|
|
ackPackage.getBody().setMessageBody(iMessageBody);
|
|
|
|
return ackPackage;
|
}
|
|
|
|
}
|