From d5722c5a50829df634f96bff131fb8cc01f6a17c Mon Sep 17 00:00:00 2001 From: whycq <913841844@qq.com> Date: 星期六, 17 八月 2024 16:27:57 +0800 Subject: [PATCH] # --- app/src/main/java/com/example/agvcontroller/MainActivity.java | 193 +++++++++++++++++++++++++++++++++++------------ 1 files changed, 143 insertions(+), 50 deletions(-) diff --git a/app/src/main/java/com/example/agvcontroller/MainActivity.java b/app/src/main/java/com/example/agvcontroller/MainActivity.java index b08e87c..b77dcb1 100644 --- a/app/src/main/java/com/example/agvcontroller/MainActivity.java +++ b/app/src/main/java/com/example/agvcontroller/MainActivity.java @@ -5,6 +5,8 @@ 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; @@ -15,41 +17,49 @@ import android.view.View; import android.widget.Button; +import com.example.agvcontroller.action.ForwardBackAction; +import com.example.agvcontroller.action.HandInAction; +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; +import com.example.agvcontroller.utils.DialogUtil; import com.example.agvcontroller.utils.SnowflakeIdWorker; import java.net.Socket; -import java.sql.Time; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeoutException; 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 stopBtn; // 鎬ュ仠鎸夐挳 - private Button forceSwitchBtn; // 鎵嬭嚜鍔ㄥ己鍒跺紑鍏� - private Button rotatopnRightBtn; // 鍙虫棆杞� +// private Button forceSwitchBtn; // 鎵嬭嚜鍔ㄥ己鍒跺紑鍏� private Button rotatopnLeftBtn; // 宸︽棆杞� + private Button rotatopnRightBtn; // 鍙虫棆杞� private Button goForwardBtn; // 鍓嶈繘 private Button goBackwardBtn; // 鍚庨�� + private Button modelSwitchBtn; // 杩涘叆銆侀��鍑� 鎵嬪姩 private Socket socket; - + private String AgvNo = "12"; SocketManager socketManager; - private boolean isDowm = false; - private boolean isOpen = false; + private int autoVal = 1; + private boolean isAuto = true; + private boolean isGoForward = false; + private boolean isGoBackward = false; + private boolean isRotatopnRight = false; + private boolean isRotatopnLeft = false; @@ -57,45 +67,43 @@ private Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { - if (isDowm) { + if (isGoForward) { String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16); - AgvAction agvAction = new AgvAction<>(ForceSwitchAction.class) - .setAgvNo("1") + AgvAction agvAction = new AgvAction<>(ForwardBackAction.class) + .setAgvNo(AgvNo) .setSerialNo(substring) .setVal(1) - .bodySync((action) -> action.setPwd((short) 21)); - + .bodySync((action) -> action.setPwd((short) 10)); nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔� handler.sendEmptyMessageDelayed(0, 100); - - boolean result = false; - long timestamp = System.currentTimeMillis(); - - while (System.currentTimeMillis() - timestamp < 5000) { - - Object o = map.get(substring); - - if (null != o) { - result = true; - map.remove(o); - break; - } - } - - if (result) { - // alert ok - } else { - throw new TimeoutException("瓒呮椂"); - } - } - if (isOpen) { + if (isGoBackward) { String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16); - AgvAction agvAction = new AgvAction<>(ForceSwitchAction.class) - .setAgvNo("12") + AgvAction agvAction = new AgvAction<>(ForwardBackAction.class) + .setAgvNo(AgvNo) .setSerialNo(substring) .setVal(1) - .bodySync((action) -> action.setPwd((short) 21)); + .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); } @@ -114,33 +122,100 @@ // 鎸夐挳闇囧姩 vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); stopBtn = findViewById(R.id.btn_stop); - forceSwitchBtn = findViewById(R.id.btn_force_switch); +// 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_go_backward); + rotatopnRightBtn = findViewById(R.id.btn_go_forward); + modelSwitchBtn = findViewById(R.id.btn_model_switch); Intent intent = getIntent(); clientId = intent.getStringExtra("message"); Log.i("message1",clientId); - // 杩涘嚭鎵嬪姩妯″紡 - forceSwitchBtn.setOnClickListener(new View.OnClickListener() { + // 寮哄埗妯″紡寮�鍏� +// 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,16); +// AgvAction agvAction = new AgvAction<>(HandOutAction.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); - AgvAction agvAction = new AgvAction<>(HandOutAction.class) - .setAgvNo("12") - .setSerialNo(substring) - .setVal(1) - .bodySync((action) -> action.setPwd((short) 21)); - nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔� + 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(); + + Log.i("substring",substring); + 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()); } @@ -149,18 +224,36 @@ @Override public boolean onTouch(View view, MotionEvent motionEvent) { if (view.getId() == R.id.btn_go_forward) { + // 鍓嶈繘 if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) { - isDowm = true; + isGoForward = true; handler.sendEmptyMessage(0); } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) { - isDowm = false; + isGoForward = false; } } else if (view.getId() == R.id.btn_go_backward) { + // 鍚庨�� if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) { - isOpen = true; + isGoBackward = true; handler.sendEmptyMessage(0); } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) { - isOpen = false; + 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; } } return false; -- Gitblit v1.9.1