package com.example.agvcontroller; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.RecyclerView; import android.content.Context; import android.content.Intent; 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 com.example.agvcontroller.protocol.AgvAction; import com.example.agvcontroller.protocol.ForceSwitchAction; import com.example.agvcontroller.protocol2.PackagePart; import com.example.agvcontroller.socket.NettyServerHandler; import com.example.agvcontroller.socket.SocketManager; import com.example.agvcontroller.utils.SnowflakeIdWorker; import java.net.Socket; import java.util.List; public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private ItemAdapter itemAdapter; private List itemList; private Vibrator vibrator; private Button stopBtn; // 急停按钮 private Button forceSwitchBtn; // 手自动强制开关 private Button rotatopnRightBtn; // 右旋转 private Button rotatopnLeftBtn; // 左旋转 private Button goForwardBtn; // 前进 private Button goBackwardBtn; // 后退 private Socket socket; SocketManager socketManager; private boolean isDowm = false; private boolean isOpen = false; private Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,15); AgvAction agvAction = new AgvAction<>(ForceSwitchAction.class) .setAgvNo("1") .setSerialNo(substring) .setVal(1) .bodySync((action) -> action.setPwd((short) 21)); if (isDowm) { System.out.println(agvAction); 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); // 按钮震动 vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 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); Intent intent = getIntent(); clientId = intent.getStringExtra("message"); Log.i("message1",clientId); forceSwitchBtn.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,15); AgvAction agvAction = new AgvAction<>(ForceSwitchAction.class) .setAgvNo("12") .setSerialNo(substring) .setVal(1) .bodySync((action) -> action.setPwd((short) 21)); nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 } }); stopBtn.setOnTouchListener(new CarTouchButton()); goForwardBtn.setOnTouchListener(new CarTouchButton()); goBackwardBtn.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) { Log.i("message1","1111"); } else if (view.getId() == R.id.btn_go_backward) { Log.i("message1","22222"); if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) { isDowm = true; handler.sendEmptyMessage(0); } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) { isDowm = false; } } return false; } } @Override protected void onDestroy() { super.onDestroy(); //SocketManager.getInstance().disconnect(); //SocketManager.getInstance().stopServer(); //socketManager.stopServer(); // 停止服务器 } }