#
whycq
2025-01-08 00fd3eb5037f07763d4e8d3e5729066d3dc097ea
app/src/main/java/com/example/agvcontroller/MainActivity.java
@@ -18,13 +18,19 @@
import android.widget.Button;
import android.widget.RelativeLayout;
import com.example.agvcontroller.action.AllResetAction;
import com.example.agvcontroller.action.BackPaddle;
import com.example.agvcontroller.action.CameraResetAction;
import com.example.agvcontroller.action.ForkResetAction;
import com.example.agvcontroller.action.ForwardBackAction;
import com.example.agvcontroller.action.FrontPaddle;
import com.example.agvcontroller.action.GyroResetAction;
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.LiftResetAction;
import com.example.agvcontroller.action.LoadResetAction;
import com.example.agvcontroller.action.RotatopnLeftRight;
import com.example.agvcontroller.protocol.AgvAction;
import com.example.agvcontroller.action.HandOutAction;
@@ -67,17 +73,25 @@
    private Button turnLeftBtn;
    private Button turnRightBtn;
    private Button cameraResetBtn;
    private Button loadResetBtn;
    private Button forkResetBtn;
    private Button gyroResetBtn;
    private Button liftResetBtn;
    private Button allResetBtn;
    private Button bodySwitchBtn; // 底盘/货叉切换
    private Socket socket;
    private String AgvNo = "12";
    private String AgvNo = "1";
    private RelativeLayout layout_bottom;
    private RelativeLayout layout_top;
    private RelativeLayout layout_single;
    private RelativeLayout layout_reset;
    int liftHeight = 400;
    int extendWidth = 0;
    int extendWidth = -450;
    int angle = -91;  // 7 度
    SocketManager socketManager;
@@ -107,6 +121,7 @@
    // 底盘前进、后退、左旋转、右旋转
    private Handler handler = new Handler(new Handler.Callback() {
        @Override
        public boolean handleMessage(Message msg) {
@@ -116,9 +131,9 @@
                        .setAgvNo(AgvNo)
                        .setSerialNo(substring)
                        .setVal(1)
                        .bodySync((action) -> action.setPwd((short) 10));
                        .bodySync((action) -> action.setPwd((short) 50));
                nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
                handler.sendEmptyMessageDelayed(0, 100);
                handler.sendEmptyMessageDelayed(0, 100);  //  100ms 后发送下一条消息
            }
            if (isGoBackward) {
                String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16);
@@ -126,7 +141,7 @@
                        .setAgvNo(AgvNo)
                        .setSerialNo(substring)
                        .setVal(1)
                        .bodySync((action) -> action.setPwd((short) -10));
                        .bodySync((action) -> action.setPwd((short) -50));
                nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
                handler.sendEmptyMessageDelayed(0, 100);
            }
@@ -136,7 +151,7 @@
                        .setAgvNo(AgvNo)
                        .setSerialNo(substring)
                        .setVal(1)
                        .bodySync((action) -> action.setPwd((short) 10));
                        .bodySync((action) -> action.setPwd((short) 50));
                nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
                handler.sendEmptyMessageDelayed(0, 100);
            }
@@ -146,7 +161,7 @@
                        .setAgvNo(AgvNo)
                        .setSerialNo(substring)
                        .setVal(1)
                        .bodySync((action) -> action.setPwd((short) -10));
                        .bodySync((action) -> action.setPwd((short) -50 ));
                nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
                handler.sendEmptyMessageDelayed(0, 100);
            }
@@ -301,6 +316,16 @@
        layout_single = findViewById(R.id.layout_single);
        layout_reset = findViewById(R.id.layout_reset);
        cameraResetBtn = findViewById(R.id.btn_camera_reset);
        loadResetBtn = findViewById(R.id.btn_load_reset);
        forkResetBtn = findViewById(R.id.btn_fork_reset);
        gyroResetBtn = findViewById(R.id.btn_gyro_reset);
        liftResetBtn = findViewById(R.id.btn_lift_reset);
        allResetBtn = findViewById(R.id.btn_all_reset);
        Intent intent = getIntent();
        clientId = intent.getStringExtra("message");
        Log.i("message1",clientId);
@@ -380,7 +405,7 @@
                if (vibrator != null && vibrator.hasVibrator()) {
                    vibrator.vibrate(500);
                }
                if (liftHeight >= 3200) {
                if (liftHeight <= 3200) {
                    String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16);
                    AgvAction agvAction = new AgvAction<>(HandLift.class)
                            .setAgvNo(AgvNo)
@@ -426,7 +451,7 @@
                if (vibrator != null && vibrator.hasVibrator()) {
                    vibrator.vibrate(500);
                }
                if (liftHeight >= 3200) {
                if (extendWidth <= 450) {
                    String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16);
                    AgvAction agvAction = new AgvAction<>(HandExtendCollect.class)
                            .setAgvNo(AgvNo)
@@ -434,7 +459,7 @@
                            .setVal(1)
                            .bodySync((action) -> action.setPwd((short) 21));
                    nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
                    liftHeight += 100;
                    extendWidth += 50;
                } else {
                    DialogUtil.showAlertDialog(MainActivity.this, "提示", "已超最大值!");
                }
@@ -442,53 +467,171 @@
            }
        });
        // 收起
        frontPaddleExtendBtn.setOnClickListener(new View.OnClickListener() {
        // 收叉
        collectForkBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (vibrator != null && vibrator.hasVibrator()) {
                    vibrator.vibrate(500);
                }
                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) 21));
                nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
                if (extendWidth >= -450) {
                    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) 21));
                    nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端户端
                    extendWidth -= 50;
                } else {
                    DialogUtil.showAlertDialog(MainActivity.this, "提示", "已超最大值!");
                }
            }
        });
        // 左旋
        frontPaddleExtendBtn.setOnClickListener(new View.OnClickListener() {
        turnLeftBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (vibrator != null && vibrator.hasVibrator()) {
                    vibrator.vibrate(500);
                }
                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) 21));
                nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
                if (angle <= 91) {
                    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) 21));
                    nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
                    angle += 7;
                } else {
                    DialogUtil.showAlertDialog(MainActivity.this, "提示", "已超最大值!");
                }
            }
        });
        // 右旋
        frontPaddleExtendBtn.setOnClickListener(new View.OnClickListener() {
        turnRightBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (vibrator != null && vibrator.hasVibrator()) {
                    vibrator.vibrate(500);
                }
                if (angle >= -91) {
                    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) 21));
                    nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
                    angle -= 7;
                } else {
                    DialogUtil.showAlertDialog(MainActivity.this, "提示", "已超最小值!");
                }
            }
        });
        // 相机复位按钮
        cameraResetBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (vibrator != null && vibrator.hasVibrator()) {
                    vibrator.vibrate(500);
                }
                String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16);
                AgvAction agvAction = new AgvAction<>(HandForkRotatopn.class)
                AgvAction agvAction = new AgvAction<>(CameraResetAction.class)
                        .setAgvNo(AgvNo)
                        .setSerialNo(substring)
                        .setVal(1)
                        .bodySync((action) -> action.setPwd((short) 21));
                        .bodySync((action) -> action.setPwd((short) 1));
                nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
            }
        });
        // 路径清除按钮
        loadResetBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (vibrator != null && vibrator.hasVibrator()) {
                    vibrator.vibrate(500);
                }
                String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16);
                AgvAction agvAction = new AgvAction<>(LoadResetAction.class)
                        .setAgvNo(AgvNo)
                        .setSerialNo(substring)
                        .setVal(1)
                        .bodySync((action) -> action.setPwd((short) 1));
                nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
            }
        });
        // 货叉归零按钮
        forkResetBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (vibrator != null && vibrator.hasVibrator()) {
                    vibrator.vibrate(500);
                }
                String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16);
                AgvAction agvAction = new AgvAction<>(ForkResetAction.class)
                        .setAgvNo(AgvNo)
                        .setSerialNo(substring)
                        .setVal(1)
                        .bodySync((action) -> action.setPwd((short) 1));
                nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
            }
        });
        // 陀螺仪复位按钮
        gyroResetBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (vibrator != null && vibrator.hasVibrator()) {
                    vibrator.vibrate(500);
                }
                String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16);
                AgvAction agvAction = new AgvAction<>(GyroResetAction.class)
                        .setAgvNo(AgvNo)
                        .setSerialNo(substring)
                        .setVal(1)
                        .bodySync((action) -> action.setPwd((short) 1));
                nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
            }
        });
        // 升降归零按钮
        liftResetBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (vibrator != null && vibrator.hasVibrator()) {
                    vibrator.vibrate(500);
                }
                String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16);
                AgvAction agvAction = new AgvAction<>(LiftResetAction.class)
                        .setAgvNo(AgvNo)
                        .setSerialNo(substring)
                        .setVal(1)
                        .bodySync((action) -> action.setPwd((short) 1));
                nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
            }
        });
        // 整机复位按钮
        allResetBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (vibrator != null && vibrator.hasVibrator()) {
                    vibrator.vibrate(500);
                }
                String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16);
                AgvAction agvAction = new AgvAction<>(AllResetAction.class)
                        .setAgvNo(AgvNo)
                        .setSerialNo(substring)
                        .setVal(1)
                        .bodySync((action) -> action.setPwd((short) 1));
                nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
            }
        });
@@ -610,87 +753,7 @@
                    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;