#
whycq
2024-08-19 a5519c76cb177d22ed5d001410132e430664c877
app/src/main/java/com/example/agvcontroller/MainActivity.java
@@ -16,12 +16,17 @@
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
import com.example.agvcontroller.action.BackPaddle;
import com.example.agvcontroller.action.ForwardBackAction;
import com.example.agvcontroller.action.FrontPaddle;
import com.example.agvcontroller.action.HandExtendCollect;
import com.example.agvcontroller.action.HandForkRotatopn;
import com.example.agvcontroller.action.HandInAction;
import com.example.agvcontroller.action.HandLift;
import com.example.agvcontroller.action.RotatopnLeftRight;
import com.example.agvcontroller.protocol.AgvAction;
import com.example.agvcontroller.action.ForceSwitchAction;
import com.example.agvcontroller.action.HandOutAction;
import com.example.agvcontroller.socket.NettyServerHandler;
import com.example.agvcontroller.socket.SocketManager;
@@ -50,16 +55,50 @@
    private Button goForwardBtn;  // 前进
    private Button goBackwardBtn;  // 后退
    private Button modelSwitchBtn;  // 进入、退出 手动
    private Button frontPaddleExtendBtn;
    private Button frontPaddleCollectBtn;
    private Button backPaddleExtendBtn;
    private Button backPaddleCollectBtn;
    private Button riseBtn;
    private Button dropBtn;
    private Button extendForkBtn;
    private Button collectForkBtn;
    private Button turnLeftBtn;
    private Button turnRightBtn;
    private Button bodySwitchBtn; // 底盘/货叉切换
    private Socket socket;
    private String AgvNo = "12";
    private RelativeLayout layout_bottom;
    private RelativeLayout layout_top;
    private RelativeLayout layout_single;
    private RelativeLayout layout_reset;
    SocketManager socketManager;
    //    按钮长按事件
    private int autoVal = 1;
    private boolean isAuto = true;
    private boolean isGoForward = false;
    private boolean isGoBackward = false;
    private boolean isRotatopnRight = false;
    private boolean isRotatopnLeft = false;
    private boolean isFrontPaddleExtendBtn = false;
    private boolean isFrontPaddleCollectBtn = false;
    private boolean isBackPaddleExtendBtn = false;
    private boolean isBackPaddleCollectBtn = false;
    private boolean isRiseBtn = false;
    private boolean isDropBtn = false;
    private boolean isExtendForkBtn = false;
    private boolean isCollectForkBtn = false;
    private boolean isTurnLeftBtn = false;
    private boolean isTurnRightBtn = false;
@@ -107,6 +146,117 @@
                nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
                handler.sendEmptyMessageDelayed(0, 100);
            }
            // 前拨杆伸
            if (isFrontPaddleExtendBtn) {
                String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16);
                AgvAction agvAction = new AgvAction<>(FrontPaddle.class)
                        .setAgvNo(AgvNo)
                        .setSerialNo(substring)
                        .setVal(1)
                        .bodySync((action) -> action.setPwd((short) -10));
                nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
                handler.sendEmptyMessageDelayed(0, 100);
            }
            // 前拨杆收
            if (isFrontPaddleCollectBtn) {
                String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16);
                AgvAction agvAction = new AgvAction<>(FrontPaddle.class)
                        .setAgvNo(AgvNo)
                        .setSerialNo(substring)
                        .setVal(1)
                        .bodySync((action) -> action.setPwd((short) -10));
                nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
                handler.sendEmptyMessageDelayed(0, 100);
            }
            // 后拨杆伸
            if (isBackPaddleExtendBtn) {
                String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16);
                AgvAction agvAction = new AgvAction<>(BackPaddle.class)
                        .setAgvNo(AgvNo)
                        .setSerialNo(substring)
                        .setVal(1)
                        .bodySync((action) -> action.setPwd((short) -10));
                nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
                handler.sendEmptyMessageDelayed(0, 100);
            }
            // 后拨杆收
            if (isBackPaddleCollectBtn) {
                String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16);
                AgvAction agvAction = new AgvAction<>(BackPaddle.class)
                        .setAgvNo(AgvNo)
                        .setSerialNo(substring)
                        .setVal(1)
                        .bodySync((action) -> action.setPwd((short) -10));
                nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
                handler.sendEmptyMessageDelayed(0, 100);
            }
            // 上升
            if (isRiseBtn) {
                String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16);
                AgvAction agvAction = new AgvAction<>(HandLift.class)
                        .setAgvNo(AgvNo)
                        .setSerialNo(substring)
                        .setVal(1)
                        .bodySync((action) -> action.setPwd((short) -10));
                nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
                handler.sendEmptyMessageDelayed(0, 100);
            }
            // 下降
            if (isDropBtn) {
                String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16);
                AgvAction agvAction = new AgvAction<>(HandLift.class)
                        .setAgvNo(AgvNo)
                        .setSerialNo(substring)
                        .setVal(1)
                        .bodySync((action) -> action.setPwd((short) -10));
                nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
                handler.sendEmptyMessageDelayed(0, 100);
            }
            // 伸叉
            if (isExtendForkBtn) {
                String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16);
                AgvAction agvAction = new AgvAction<>(HandExtendCollect.class)
                        .setAgvNo(AgvNo)
                        .setSerialNo(substring)
                        .setVal(1)
                        .bodySync((action) -> action.setPwd((short) -10));
                nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
                handler.sendEmptyMessageDelayed(0, 100);
            }
            // 收叉
            if (isCollectForkBtn) {
                String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16);
                AgvAction agvAction = new AgvAction<>(HandExtendCollect.class)
                        .setAgvNo(AgvNo)
                        .setSerialNo(substring)
                        .setVal(1)
                        .bodySync((action) -> action.setPwd((short) -10));
                nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
                handler.sendEmptyMessageDelayed(0, 100);
            }
            // 货叉左旋
            if (isTurnLeftBtn) {
                String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16);
                AgvAction agvAction = new AgvAction<>(HandForkRotatopn.class)
                        .setAgvNo(AgvNo)
                        .setSerialNo(substring)
                        .setVal(1)
                        .bodySync((action) -> action.setPwd((short) -10));
                nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
                handler.sendEmptyMessageDelayed(0, 100);
            }
            // 货叉右旋
            if (isTurnRightBtn) {
                String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16);
                AgvAction agvAction = new AgvAction<>(HandForkRotatopn.class)
                        .setAgvNo(AgvNo)
                        .setSerialNo(substring)
                        .setVal(1)
                        .bodySync((action) -> action.setPwd((short) -10));
                nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
                handler.sendEmptyMessageDelayed(0, 100);
            }
            return false;
        }
    });
@@ -128,6 +278,24 @@
        rotatopnLeftBtn = findViewById(R.id.btn_rotatopn_left);
        rotatopnRightBtn = findViewById(R.id.btn_rotatopn_right);
        modelSwitchBtn = findViewById(R.id.btn_model_switch);
        frontPaddleExtendBtn = findViewById(R.id.btn_front_paddle_extend); // 前拨杆
        frontPaddleCollectBtn = findViewById(R.id.btn_front_paddle_collect); // 前拨杆
        backPaddleExtendBtn = findViewById(R.id.btn_back_paddle_extend); // 后拨杆
        backPaddleCollectBtn = findViewById(R.id.btn_back_paddle_collect); // 后拨杆
        riseBtn = findViewById(R.id.btn_rise);
        dropBtn = findViewById(R.id.btn_drop);
        extendForkBtn = findViewById(R.id.btn_extend_fork);
        collectForkBtn = findViewById(R.id.btn_collect_fork);
        turnLeftBtn = findViewById(R.id.btn_turn_left);
        turnRightBtn = findViewById(R.id.btn_turn_right);
        bodySwitchBtn = findViewById(R.id.btn_body_switch);
        layout_bottom = findViewById(R.id.layout_bottom);
        layout_top = findViewById(R.id.layout_top);
        layout_single = findViewById(R.id.layout_single);
        layout_reset = findViewById(R.id.layout_reset);
        Intent intent = getIntent();
        clientId = intent.getStringExtra("message");
@@ -217,12 +385,24 @@
        rotatopnLeftBtn.setOnTouchListener(new CarTouchButton());
        rotatopnRightBtn.setOnTouchListener(new CarTouchButton());
        frontPaddleExtendBtn.setOnTouchListener(new CarTouchButton());
        frontPaddleCollectBtn.setOnTouchListener(new CarTouchButton());
        backPaddleExtendBtn.setOnTouchListener(new CarTouchButton());
        backPaddleCollectBtn.setOnTouchListener(new CarTouchButton());
        riseBtn.setOnTouchListener(new CarTouchButton());
        dropBtn.setOnTouchListener(new CarTouchButton());
        extendForkBtn.setOnTouchListener(new CarTouchButton());
        collectForkBtn.setOnTouchListener(new CarTouchButton());
        turnLeftBtn.setOnTouchListener(new CarTouchButton());
        turnRightBtn.setOnTouchListener(new CarTouchButton());
    }
    private class CarTouchButton implements View.OnTouchListener {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            if (view.getId() == R.id.btn_go_forward) {
                // 前进
                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
@@ -231,6 +411,7 @@
                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
                    isGoForward = false;
                }
            } else if (view.getId() == R.id.btn_go_backward) {
                // 后退
                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
@@ -239,6 +420,7 @@
                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
                    isGoBackward = false;
                }
            } else if (view.getId() == R.id.btn_rotatopn_left) {
                // 左旋转
                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
@@ -247,6 +429,7 @@
                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
                    isRotatopnLeft = false;
                }
            } else if (view.getId() == R.id.btn_rotatopn_right) {
                // 右旋转
                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
@@ -255,12 +438,129 @@
                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
                    isRotatopnRight = false;
                }
            } else if (view.getId() == R.id.btn_front_paddle_extend) {
                // 前拨杆伸出
                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
                    isFrontPaddleExtendBtn = true;
                    handler.sendEmptyMessage(0);
                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
                    isFrontPaddleExtendBtn = false;
                }
            } else if (view.getId() == R.id.btn_front_paddle_collect) {
                // 前拨杆收起
                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
                    isFrontPaddleCollectBtn = true;
                    handler.sendEmptyMessage(0);
                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
                    isFrontPaddleCollectBtn = false;
                }
            } else if (view.getId() == R.id.btn_back_paddle_extend) {
                // 后拨杆伸出
                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
                    isBackPaddleExtendBtn = true;
                    handler.sendEmptyMessage(0);
                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
                    isBackPaddleExtendBtn = false;
                }
            } else if (view.getId() == R.id.btn_back_paddle_collect) {
                // 后拨杆收起
                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
                    isBackPaddleCollectBtn = true;
                    handler.sendEmptyMessage(0);
                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
                    isBackPaddleCollectBtn = false;
                }
            } else if (view.getId() == R.id.btn_rise) {
                // 上升
                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
                    isRiseBtn = true;
                    handler.sendEmptyMessage(0);
                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
                    isRiseBtn = false;
                }
            } else if (view.getId() == R.id.btn_drop) {
                // 下降
                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
                    isDropBtn = true;
                    handler.sendEmptyMessage(0);
                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
                    isDropBtn = false;
                }
            } else if (view.getId() == R.id.btn_extend_fork) {
                // 伸叉
                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
                    isExtendForkBtn = true;
                    handler.sendEmptyMessage(0);
                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
                    isExtendForkBtn = false;
                }
            } else if (view.getId() == R.id.btn_collect_fork) {
                // 收叉
                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
                    isCollectForkBtn = true;
                    handler.sendEmptyMessage(0);
                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
                    isCollectForkBtn = false;
                }
            } else if (view.getId() == R.id.btn_turn_left) {
                // 左旋转
                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
                    isTurnLeftBtn = true;
                    handler.sendEmptyMessage(0);
                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
                    isTurnLeftBtn = false;
                }
            } else if (view.getId() == R.id.btn_turn_right) {
                // 左旋转
                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
                    isTurnRightBtn = true;
                    handler.sendEmptyMessage(0);
                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
                    isTurnRightBtn = false;
                }
            }
            return false;
        }
    }
    private boolean isVisble = true;
    // 货叉等按钮
    public void switchover(View view) {
        if (isVisble) {
            layout_bottom.setVisibility(View.GONE);
            layout_top.setVisibility(View.VISIBLE);
            bodySwitchBtn.setText("货叉");
        } else {
            layout_bottom.setVisibility(View.VISIBLE);
            layout_top.setVisibility(View.GONE);
            bodySwitchBtn.setText("底盘");
        }
        isVisble = !isVisble;
        layout_single.setVisibility(View.GONE);
        layout_reset.setVisibility(View.GONE);
    }
    // 单轴使能按钮
    public void switchSingle(View view) {
        layout_bottom.setVisibility(View.GONE);
        layout_top.setVisibility(View.GONE);
        layout_single.setVisibility(View.VISIBLE);
        layout_reset.setVisibility(View.GONE);
    }
    // 复位按钮
    public void switchRest(View view) {
        layout_bottom.setVisibility(View.GONE);
        layout_top.setVisibility(View.GONE);
        layout_single.setVisibility(View.GONE);
        layout_reset.setVisibility(View.VISIBLE);
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();