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.action.ForceSwitchAction;
|
import com.example.agvcontroller.action.HandOutAction;
|
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<Item> 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;
|
|
String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16);
|
|
|
private Handler handler = new Handler(new Handler.Callback() {
|
@Override
|
public boolean handleMessage(Message msg) {
|
if (isDowm) {
|
AgvAction agvAction = new AgvAction<>(ForceSwitchAction.class)
|
.setAgvNo("1")
|
.setSerialNo(substring)
|
.setVal(1)
|
.bodySync((action) -> action.setPwd((short) 21));
|
nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端
|
handler.sendEmptyMessageDelayed(0, 100);
|
}
|
if (isOpen) {
|
AgvAction agvAction = new AgvAction<>(ForceSwitchAction.class)
|
.setAgvNo("12")
|
.setSerialNo(substring)
|
.setVal(1)
|
.bodySync((action) -> action.setPwd((short) 21));
|
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);
|
}
|
|
AgvAction agvAction = new AgvAction<>(HandOutAction.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) {
|
if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
|
isDowm = true;
|
handler.sendEmptyMessage(0);
|
} else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
|
isDowm = false;
|
}
|
} else if (view.getId() == R.id.btn_go_backward) {
|
if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
|
isOpen = true;
|
handler.sendEmptyMessage(0);
|
} else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
|
isOpen = false;
|
}
|
}
|
return false;
|
}
|
}
|
|
@Override
|
protected void onDestroy() {
|
super.onDestroy();
|
//SocketManager.getInstance().disconnect();
|
//SocketManager.getInstance().stopServer();
|
//socketManager.stopServer(); // 停止服务器
|
}
|
}
|