| | |
| | | import androidx.recyclerview.widget.RecyclerView; |
| | | |
| | | import android.content.Context; |
| | | import android.content.Intent; |
| | | import android.content.res.ColorStateList; |
| | | import android.graphics.Color; |
| | | import android.os.Bundle; |
| | | import android.os.Handler; |
| | | import android.os.Message; |
| | | import android.os.Vibrator; |
| | | import android.util.Log; |
| | | import android.view.KeyEvent; |
| | | 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.HandOutAction; |
| | | import com.example.agvcontroller.socket.NettyServerHandler; |
| | | import com.example.agvcontroller.socket.SocketManager; |
| | | import com.example.agvcontroller.socket.SocketTask; |
| | | import com.example.agvcontroller.utils.DialogUtil; |
| | | import com.example.agvcontroller.utils.SnowflakeIdWorker; |
| | | |
| | | import java.net.Socket; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | |
| | | import io.netty.buffer.ByteBuf; |
| | | import io.netty.buffer.Unpooled; |
| | | import io.netty.util.CharsetUtil; |
| | | |
| | | public class MainActivity extends AppCompatActivity { |
| | | |
| | | public static final Map<String, Object> map = new ConcurrentHashMap(); |
| | | public static final Map<String, Object> car_num = new ConcurrentHashMap(); |
| | | |
| | | private RecyclerView recyclerView; |
| | | private ItemAdapter itemAdapter; |
| | | private List<Item> itemList; |
| | | private Vibrator vibrator; |
| | | private Button vibrateButton; |
| | | private Button stopBtn; // 急停按钮 |
| | | // private Button forceSwitchBtn; // 手自动强制开关 |
| | | private Button rotatopnLeftBtn; // 左旋转 |
| | | private Button rotatopnRightBtn; // 右旋转 |
| | | 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; |
| | | |
| | | int liftHeight = 400; |
| | | int extendWidth = 0; |
| | | |
| | | |
| | | 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; |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | private Handler handler = new Handler(new Handler.Callback() { |
| | | @Override |
| | | public boolean handleMessage(Message msg) { |
| | | if (isGoForward) { |
| | | String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16); |
| | | AgvAction agvAction = new AgvAction<>(ForwardBackAction.class) |
| | | .setAgvNo(AgvNo) |
| | | .setSerialNo(substring) |
| | | .setVal(1) |
| | | .bodySync((action) -> action.setPwd((short) 10)); |
| | | nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 |
| | | handler.sendEmptyMessageDelayed(0, 100); |
| | | } |
| | | if (isGoBackward) { |
| | | String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16); |
| | | AgvAction agvAction = new AgvAction<>(ForwardBackAction.class) |
| | | .setAgvNo(AgvNo) |
| | | .setSerialNo(substring) |
| | | .setVal(1) |
| | | .bodySync((action) -> action.setPwd((short) -10)); |
| | | nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 |
| | | handler.sendEmptyMessageDelayed(0, 100); |
| | | } |
| | | if (isRotatopnRight) { |
| | | String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16); |
| | | AgvAction agvAction = new AgvAction<>(RotatopnLeftRight.class) |
| | | .setAgvNo(AgvNo) |
| | | .setSerialNo(substring) |
| | | .setVal(1) |
| | | .bodySync((action) -> action.setPwd((short) 10)); |
| | | nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 |
| | | handler.sendEmptyMessageDelayed(0, 100); |
| | | } |
| | | if (isRotatopnLeft) { |
| | | String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16); |
| | | AgvAction agvAction = new AgvAction<>(RotatopnLeftRight.class) |
| | | .setAgvNo(AgvNo) |
| | | .setSerialNo(substring) |
| | | .setVal(1) |
| | | .bodySync((action) -> action.setPwd((short) -10)); |
| | | 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) 1)); |
| | | // 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) 0)); |
| | | // 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) 1)); |
| | | // 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) 0)); |
| | | // 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; |
| | | } |
| | | }); |
| | | |
| | | String clientId; |
| | | NettyServerHandler nettyServerHandler; |
| | | |
| | | @Override |
| | | protected void onCreate(Bundle savedInstanceState) { |
| | | super.onCreate(savedInstanceState); |
| | | setContentView(R.layout.activity_main); |
| | | |
| | | // 作为客户端连接 |
| | | //SocketManager.getInstance().setHostAndPort("192.168.4.188", 802); |
| | | //SocketManager.getInstance().connect(); |
| | | |
| | | //SocketManager.getInstance().setPort(8080); |
| | | //SocketManager.getInstance().startServer(); |
| | | |
| | | // 设置端口号并启动服务端 |
| | | //SocketManager.getInstance().setPort(8080); |
| | | socketManager = new SocketManager(); |
| | | socketManager.startServer(8080); |
| | | |
| | | // 启动服务端 |
| | | //new Thread(() -> { |
| | | // SocketManager.getInstance().startServer(); |
| | | //}).start(); |
| | | |
| | | // 按钮震动 |
| | | vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); |
| | | vibrateButton = findViewById(R.id.btn_stop); |
| | | stopBtn = findViewById(R.id.btn_stop); |
| | | // forceSwitchBtn = findViewById(R.id.btn_force_switch); |
| | | goForwardBtn = findViewById(R.id.btn_go_forward); |
| | | goBackwardBtn = findViewById(R.id.btn_go_backward); |
| | | rotatopnLeftBtn = findViewById(R.id.btn_rotatopn_left); |
| | | rotatopnRightBtn = findViewById(R.id.btn_rotatopn_right); |
| | | modelSwitchBtn = findViewById(R.id.btn_model_switch); |
| | | |
| | | vibrateButton.setOnClickListener(new View.OnClickListener() { |
| | | 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"); |
| | | Log.i("message1",clientId); |
| | | |
| | | // 前拨杆伸出 |
| | | frontPaddleExtendBtn.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<>(FrontPaddle.class) |
| | | .setAgvNo(AgvNo) |
| | | .setSerialNo(substring) |
| | | .setVal(1) |
| | | .bodySync((action) -> action.setPwd((short) 1)); |
| | | nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 |
| | | } |
| | | }); |
| | | |
| | | // 前拨杆收起 |
| | | frontPaddleCollectBtn.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<>(FrontPaddle.class) |
| | | .setAgvNo(AgvNo) |
| | | .setSerialNo(substring) |
| | | .setVal(1) |
| | | .bodySync((action) -> action.setPwd((short) 0)); |
| | | nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 |
| | | } |
| | | }); |
| | | |
| | | // 后拨杆伸出 |
| | | backPaddleExtendBtn.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<>(BackPaddle.class) |
| | | .setAgvNo(AgvNo) |
| | | .setSerialNo(substring) |
| | | .setVal(1) |
| | | .bodySync((action) -> action.setPwd((short) 1)); |
| | | nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 |
| | | } |
| | | }); |
| | | |
| | | // 后拨杆收起 |
| | | backPaddleCollectBtn.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<>(BackPaddle.class) |
| | | .setAgvNo(AgvNo) |
| | | .setSerialNo(substring) |
| | | .setVal(1) |
| | | .bodySync((action) -> action.setPwd((short) 0)); |
| | | nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 |
| | | } |
| | | }); |
| | | |
| | | // 上升 |
| | | riseBtn.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | if (vibrator != null && vibrator.hasVibrator()) { |
| | | vibrator.vibrate(500); |
| | | } |
| | | if (liftHeight >= 3200) { |
| | | 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) liftHeight)); |
| | | nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 |
| | | liftHeight += 100; |
| | | } else { |
| | | DialogUtil.showAlertDialog(MainActivity.this, "提示", "已超最大值!"); |
| | | } |
| | | |
| | | } |
| | | }); |
| | | |
| | | // 下降 |
| | | dropBtn.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | if (vibrator != null && vibrator.hasVibrator()) { |
| | | vibrator.vibrate(500); |
| | | } |
| | | |
| | | //socket = new Socket(); |
| | | //new SocketTask().execute("192.168.4.188", 802); |
| | | //ByteBuf message = Unpooled.copiedBuffer("Hello, Netty!", CharsetUtil.UTF_8); |
| | | //SocketManager.getInstance().sendMessage(message); |
| | | |
| | | String clientId = "/192.168.4.188:63160"; |
| | | byte[] message = new byte[]{0x01, 0x02, 0x03, 0x04}; // 示例消息 |
| | | socketManager.sendMessage(clientId, message); // 发送消息到客户端 |
| | | if (liftHeight >= 400) { |
| | | 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) liftHeight)); |
| | | nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 |
| | | liftHeight -= 100; |
| | | } else { |
| | | DialogUtil.showAlertDialog(MainActivity.this, "提示", "已超最小值!"); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | // 伸出 |
| | | extendForkBtn.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | if (vibrator != null && vibrator.hasVibrator()) { |
| | | vibrator.vibrate(500); |
| | | } |
| | | if (liftHeight >= 3200) { |
| | | 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); // 发送消息到客户端 |
| | | liftHeight += 100; |
| | | } else { |
| | | DialogUtil.showAlertDialog(MainActivity.this, "提示", "已超最大值!"); |
| | | } |
| | | |
| | | } |
| | | }); |
| | | |
| | | // 收起 |
| | | frontPaddleExtendBtn.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); // 发送消息到客户端 |
| | | } |
| | | }); |
| | | |
| | | // 左旋 |
| | | frontPaddleExtendBtn.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); // 发送消息到客户端 |
| | | } |
| | | }); |
| | | |
| | | // 右旋 |
| | | frontPaddleExtendBtn.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); // 发送消息到客户端 |
| | | } |
| | | }); |
| | | |
| | | // 手自动模式开关 |
| | | modelSwitchBtn.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); |
| | | if (isAuto) { |
| | | AgvAction agvAction = new AgvAction<>(HandInAction.class) |
| | | .setAgvNo(AgvNo) |
| | | .setSerialNo(substring) |
| | | .setVal(autoVal) |
| | | .bodySync((action) -> action.setPwd((short) 21)); |
| | | nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 |
| | | } else { |
| | | AgvAction agvAction = new AgvAction<>(HandOutAction.class) |
| | | .setAgvNo(AgvNo) |
| | | .setSerialNo(substring) |
| | | .setVal(autoVal) |
| | | .bodySync((action) -> action.setPwd((short) 21)); |
| | | nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 |
| | | } |
| | | |
| | | boolean result = false; |
| | | long timestamp = System.currentTimeMillis(); |
| | | while (System.currentTimeMillis() - timestamp < 5000) { |
| | | |
| | | Object o = map.get(substring); |
| | | |
| | | if (null != o) { |
| | | result = true; |
| | | isAuto = !isAuto; |
| | | map.remove(o); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (result) { |
| | | // alert ok 修改按钮样式 名称 |
| | | if (isAuto) { |
| | | modelSwitchBtn.setText("自动模式"); |
| | | autoVal = 0; |
| | | // modelSwitchBtn.setBackgroundTintList(ColorStateList.valueOf(Color.RED)); |
| | | } else { |
| | | autoVal = 1; |
| | | modelSwitchBtn.setText("手动模式"); |
| | | } |
| | | |
| | | } else { |
| | | // throw new TimeoutException("超时"); |
| | | DialogUtil.showAlertDialog(MainActivity.this, "提示", "请求应答超时!"); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | // 点动按钮 |
| | | stopBtn.setOnTouchListener(new CarTouchButton()); |
| | | goForwardBtn.setOnTouchListener(new CarTouchButton()); |
| | | goBackwardBtn.setOnTouchListener(new CarTouchButton()); |
| | | 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) { |
| | | isGoForward = true; |
| | | handler.sendEmptyMessage(0); |
| | | } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) { |
| | | isGoForward = false; |
| | | } |
| | | |
| | | } else if (view.getId() == R.id.btn_go_backward) { |
| | | // 后退 |
| | | if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) { |
| | | isGoBackward = true; |
| | | handler.sendEmptyMessage(0); |
| | | } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) { |
| | | isGoBackward = false; |
| | | } |
| | | |
| | | } else if (view.getId() == R.id.btn_rotatopn_left) { |
| | | // 左旋转 |
| | | if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) { |
| | | isRotatopnLeft = true; |
| | | handler.sendEmptyMessage(0); |
| | | } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) { |
| | | isRotatopnLeft = false; |
| | | } |
| | | |
| | | } else if (view.getId() == R.id.btn_rotatopn_right) { |
| | | // 右旋转 |
| | | if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) { |
| | | isRotatopnRight = true; |
| | | handler.sendEmptyMessage(0); |
| | | } 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(); |
| | | //SocketManager.getInstance().disconnect(); |
| | | |
| | | //SocketManager.getInstance().stopServer(); |
| | | socketManager.stopServer(); // 停止服务器 |
| | | //socketManager.stopServer(); // 停止服务器 |
| | | } |
| | | } |