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; 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
} 
 |