#
whycq
2025-02-06 318bd727e2fe02e4f541dfe943f77606af41d509
app/src/main/java/com/example/agvcontroller/socket/NettyServerHandler.java
@@ -21,6 +21,7 @@
import com.example.agvcontroller.action.AGV_11_UP;
import com.example.agvcontroller.action.AckMsgBuilder;
import com.example.agvcontroller.met.AbstractInboundHandler;
import com.example.agvcontroller.protocol.AGV_03_UP;
import com.example.agvcontroller.protocol.AGV_12_UP;
import com.example.agvcontroller.protocol.AGV_13_UP;
import com.example.agvcontroller.protocol.AGV_A1_DOWN;
@@ -45,6 +46,18 @@
    private static final String TAG = "NettyServerHandler";
    private static ConcurrentHashMap<String, Channel> channelMap = new ConcurrentHashMap<>();
    private Map<String, Runnable> pendingRemovals = new HashMap<>();
    int battery = 0;
    int status = 0;
    int agvStatus = 0;
    String positionID = "--";
    int positionX = 0;
    int positionY = 0;
    float agvAngle = 0;
    float gyroAngle = 0;
    int forkHeight = 0;
    int forkExtend = 0;
    int forkAngle = 0;
    int agvError = 0;
    private Handler handler = new Handler(Looper.getMainLooper()) {
        @Override
        public void handleMessage(Message msg) {
@@ -138,6 +151,10 @@
        ProtocolType ackType = isNeedAck(pac);
        final String uniqueNo = pac.getHeader().getUniqueNo();
        String agvNo;
        AGVCar agvCar;
        String log;
        label : switch (pac.getHeader().getProtocolType()){
            case ACTION_COMPLETE:   // 动作完成数据包
                AGV_11_UP agv_11_up = (AGV_11_UP) pac.getBody().getMessageBody();
@@ -154,20 +171,50 @@
                AGV_12_UP agv_12_up = (AGV_12_UP) pac.getBody().getMessageBody();
                agvNo = pac.getHeader().getUniqueNo();
                channelMap.put(clientId, ctx.channel());
                EventBus.getDefault().post(new AGVCar(clientId,ip,port,agvNo,1));
                agvStatus = agv_12_up.getStatus();
                positionID = agv_12_up.getQrCode();
                positionX = agv_12_up.getOffsetX();
                positionY = agv_12_up.getOffsetY();
                agvAngle = agv_12_up.getAGVCurrentAngle();
                gyroAngle = agv_12_up.getGyroAngle();
                forkHeight = agv_12_up.getCurrentAltitude();
                forkExtend = agv_12_up.getForkLength();
                forkAngle = agv_12_up.getLoaderTheta();
                agvCar = new AGVCar(clientId, ip, port, agvNo, 1, battery,agvStatus,positionID,positionX,positionY,agvAngle,gyroAngle,forkHeight,forkExtend,forkAngle,agvError);
                EventBus.getDefault().post(agvCar);
                log = formatDate(new Date(), "yyyy-MM-dd HH:mm:ss.SSS") + " 上行: " + ip + "[有码实时数据包]>>>" + pac.getSourceHexStr();
                Log.d("updown", log);
                AGVApplication.addLog(log);
                break label;
            case DATA_WITHOUT_CODE_REPORT:
                AGV_13_UP agv_13_up = (AGV_13_UP) pac.getBody().getMessageBody();
                agvNo = pac.getHeader().getUniqueNo();
                channelMap.put(clientId, ctx.channel());
                EventBus.getDefault().post(new AGVCar(clientId,ip,port,agvNo,1));
                agvCar = new AGVCar(clientId, ip, port, agvNo, 1, battery,agvStatus,positionID,positionX,positionY,agvAngle,gyroAngle,forkHeight,forkExtend,forkAngle,agvError);
                EventBus.getDefault().post(agvCar);
                log = formatDate(new Date(), "yyyy-MM-dd HH:mm:ss:SSS") + " 上行: " + ip + "[无码实时数据包]>>>" + pac.getSourceHexStr();
                Log.d("updown", log);
                AGVApplication.addLog(log);
                break label;
            case HEARTBEAT_REPORT:
                AGV_03_UP agv_03_up = (AGV_03_UP) pac.getBody().getMessageBody();
                battery = agv_03_up.getBattery();
                agvError = agv_03_up.getError();
//                pac.getBody().getMessageBody()
                agvNo = pac.getHeader().getUniqueNo();
                channelMap.put(clientId, ctx.channel());
                agvCar = new AGVCar(clientId, ip, port, agvNo, 1, battery,agvStatus,positionID,positionX,positionY,agvAngle,gyroAngle,forkHeight,forkExtend,forkAngle,agvError);
                EventBus.getDefault().post(agvCar);
                log = formatDate(new Date(), "yyyy-MM-dd HH:mm:ss.SSS") + " 上行: " + ip + "[心跳包]>>>" + pac.getSourceHexStr();
                Log.d("updown", log);
                AGVApplication.addLog(log);
                break label;
            case LOGIN_REPORT:
                AGV_F0_UP agv_f0_up = (AGV_F0_UP) pac.getBody().getMessageBody();
                if (null != ackType) {
                    AgvPackage ackPac = AckMsgBuilder.ofSuccess(pac, ackType);
                    AGV_F0_DOWN agv_f0_down = (AGV_F0_DOWN) ackPac.getBody().getMessageBody();
                    String log = formatDate(new Date(), "yyyy-MM-dd HH:mm:ss") + " 上行: " + ip + "[登录包]>>>" + pac.getSourceHexStr();
                    log = formatDate(new Date(), "yyyy-MM-dd HH:mm:ss.SSS") + " 上行: " + ip + "[登录包]>>>" + pac.getSourceHexStr();
                    Log.d("updown", log);
                    AGVApplication.addLog(log);
@@ -175,11 +222,11 @@
                    ctx.writeAndFlush(ackPac);
                }
                final int battery = agv_f0_up.getBattery();
                battery = agv_f0_up.getBattery();
//                pac.getBody().getMessageBody()
                agvNo = pac.getHeader().getUniqueNo();
                channelMap.put(clientId, ctx.channel());
                 AGVCar agvCar = new AGVCar(clientId, ip, port, agvNo, 1, battery,0,0,0,0,0,0,0,0,0,0);
                agvCar = new AGVCar(clientId, ip, port, agvNo, 1, battery,agvStatus,positionID,positionX,positionY,agvAngle,gyroAngle,forkHeight,forkExtend,forkAngle,agvError);
                EventBus.getDefault().post(agvCar);
                break label;