From 8ce9ce72d3e32427d01ebe4bf8bef6aa863979ca Mon Sep 17 00:00:00 2001
From: whycq <913841844@qq.com>
Date: 星期五, 17 一月 2025 15:48:36 +0800
Subject: [PATCH] #
---
app/src/main/java/com/example/agvcontroller/MainActivity.java | 669 +++++++++++++++++++++++---------------------
app/src/main/java/com/example/agvcontroller/Item.java | 48 ++
app/src/main/java/com/example/agvcontroller/StartActivity.java | 34 +
app/src/main/java/com/example/agvcontroller/socket/NettyServerHandler.java | 67 ++++
app/src/main/res/layout/item_view_linear.xml | 12
app/src/main/java/com/example/agvcontroller/ItemAdapter.java | 27 +
6 files changed, 503 insertions(+), 354 deletions(-)
diff --git a/app/src/main/java/com/example/agvcontroller/Item.java b/app/src/main/java/com/example/agvcontroller/Item.java
index e21f97b..dfa7a7a 100644
--- a/app/src/main/java/com/example/agvcontroller/Item.java
+++ b/app/src/main/java/com/example/agvcontroller/Item.java
@@ -1,31 +1,57 @@
package com.example.agvcontroller;
public class Item {
-
- private String text;
+ private String clientId;
private String ip;
+ private int port;
private String agvNo;
- private int id;
+ private int status;
- public Item(String text,String ip,String agvNo) {
- this.text = text;
+ public Item(String clientId,String ip,int port,String agvNo,int status) {
+ this.clientId = clientId;
this.ip = ip;
+ this.port = port;
this.agvNo = agvNo;
+ this.status = status;
}
-
- public String getText() {
- return text;
- }
+ public String getClientId() {return clientId; }
public String getIp() {
return ip;
}
+ public int getPort() {
+ return port;
+ }
+
+
public String getAgvNo() {
return agvNo;
}
- public int getId() {
- return id;
+ public int getStatus() {
+ return status;
+ }
+
+
+ public void setClientId(String clientId) {
+ this.clientId = clientId;
+ }
+
+ public void setIp(String ip) {
+ this.ip = ip;
+ }
+
+ public void setPort(int port) {
+ this.port = port;
+ }
+
+
+ public void setAgvNo(String agvNo) {
+ this.agvNo = agvNo;
+ }
+
+ public void setStatus(int status) {
+ this.status = status;
}
}
diff --git a/app/src/main/java/com/example/agvcontroller/ItemAdapter.java b/app/src/main/java/com/example/agvcontroller/ItemAdapter.java
index db65138..e644a97 100644
--- a/app/src/main/java/com/example/agvcontroller/ItemAdapter.java
+++ b/app/src/main/java/com/example/agvcontroller/ItemAdapter.java
@@ -3,6 +3,7 @@
import static androidx.core.content.ContextCompat.startActivity;
import android.content.Intent;
+import android.graphics.Color;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -23,13 +24,15 @@
}
public static class ViewHolder extends RecyclerView.ViewHolder {
- TextView title;
+ TextView agvNo;
TextView ip;
+ TextView port;
public ViewHolder(@NonNull View itemView) {
super(itemView);
- title = itemView.findViewById(R.id.item_title);
+ agvNo = itemView.findViewById(R.id.item_agvNo);
ip = itemView.findViewById(R.id.item_ip);
+ port = itemView.findViewById(R.id.item_port);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
@@ -79,17 +82,24 @@
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
- //Item item = itemList.get(position);
- //holder.ip.setText("璁惧IP锛� " + item.getIp());
- //holder.title.setText("璁惧缂栧彿锛� " + item.getText());
if (itemList == null || itemList.isEmpty()) {
// 榛樿鏄剧ず椤甸潰
//return 1;
} else {
- // 鏁版嵁鏄剧ず椤甸潰
Item item = itemList.get(position);
- holder.ip.setText("璁惧IP锛� " + item.getIp());
- holder.title.setText("璁惧缂栧彿锛� " + item.getAgvNo());
+ int status = item.getStatus();
+ switch (status) {
+ case 0:
+ holder.itemView.setBackgroundColor(Color.GRAY);
+ break;
+ default:
+ holder.itemView.setBackgroundColor(Color.GREEN);
+ break;
+ }
+ holder.agvNo.setText("AGV_NO锛� " + item.getAgvNo());
+ holder.ip.setText("AGV_IP锛� " + item.getIp());
+ holder.port.setText("AGV_PORT锛� " + item.getPort());
+
holder.itemView.setTag(position);
}
@@ -97,7 +107,6 @@
@Override
public int getItemCount() {
- //return itemList.size();
if (itemList == null || itemList.isEmpty()) {
return 1;
} else {
diff --git a/app/src/main/java/com/example/agvcontroller/MainActivity.java b/app/src/main/java/com/example/agvcontroller/MainActivity.java
index 5e68826..9503614 100644
--- a/app/src/main/java/com/example/agvcontroller/MainActivity.java
+++ b/app/src/main/java/com/example/agvcontroller/MainActivity.java
@@ -7,8 +7,6 @@
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;
@@ -168,13 +166,14 @@
@Override
public boolean handleMessage(Message msg) {
String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16);
- short pwd = 0;
if (isGoForward) {
+ Log.d(TAG, "isGoForward: " + isGoForward);
AgvAction agvAction = new AgvAction<>(ForwardBackAction.class)
.setAgvNo(AgvNo)
.setSerialNo(substring)
.setVal(1)
.bodySync((action) -> action.setPwd((short) 50));
+ Log.d(TAG, "isGoForward: " + clientId);
nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
handler.sendEmptyMessageDelayed(0, 100); // 100ms 鍚庡彂閫佷笅涓�鏉℃秷鎭�
}
@@ -206,21 +205,165 @@
handler.sendEmptyMessageDelayed(0, 100);
}
- if (isRotatopnRight) {
- AgvAction agvAction = new AgvAction<>(RotatopnLeftRight.class)
+ if (isFront1) {
+ AgvAction agvAction = new AgvAction<>(SingleSwitchRunAction.class)
.setAgvNo(AgvNo)
.setSerialNo(substring)
.setVal(1)
- .bodySync((action) -> action.setPwd((short) 50));
+ .bodySync((action) -> action.setPwd((short) 99));
nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
handler.sendEmptyMessageDelayed(0, 100);
}
- if (isRotatopnLeft) {
- AgvAction agvAction = new AgvAction<>(RotatopnLeftRight.class)
+ if (isBack1) {
+ AgvAction agvAction = new AgvAction<>(SingleSwitchRunAction.class)
.setAgvNo(AgvNo)
.setSerialNo(substring)
.setVal(1)
- .bodySync((action) -> action.setPwd((short) -50 ));
+ .bodySync((action) -> action.setPwd((short) -99));
+ nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ handler.sendEmptyMessageDelayed(0, 100);
+ }
+ if (isFront2) {
+ AgvAction agvAction = new AgvAction<>(SingleSwitchRunAction.class)
+ .setAgvNo(AgvNo)
+ .setSerialNo(substring)
+ .setVal(2)
+ .bodySync((action) -> action.setPwd((short) 99));
+ nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ handler.sendEmptyMessageDelayed(0, 100);
+ }
+ if (isBack2) {
+ AgvAction agvAction = new AgvAction<>(SingleSwitchRunAction.class)
+ .setAgvNo(AgvNo)
+ .setSerialNo(substring)
+ .setVal(2)
+ .bodySync((action) -> action.setPwd((short) -99));
+ nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ handler.sendEmptyMessageDelayed(0, 100);
+ }
+ if (isFront3) {
+ AgvAction agvAction = new AgvAction<>(SingleSwitchRunAction.class)
+ .setAgvNo(AgvNo)
+ .setSerialNo(substring)
+ .setVal(3)
+ .bodySync((action) -> action.setPwd((short) 99));
+ nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ handler.sendEmptyMessageDelayed(0, 100);
+ }
+ if (isBack3) {
+ AgvAction agvAction = new AgvAction<>(SingleSwitchRunAction.class)
+ .setAgvNo(AgvNo)
+ .setSerialNo(substring)
+ .setVal(3)
+ .bodySync((action) -> action.setPwd((short) -99));
+ nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ handler.sendEmptyMessageDelayed(0, 100);
+ }
+ if (isFront4) {
+ AgvAction agvAction = new AgvAction<>(SingleSwitchRunAction.class)
+ .setAgvNo(AgvNo)
+ .setSerialNo(substring)
+ .setVal(4)
+ .bodySync((action) -> action.setPwd((short) 99));
+ nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ handler.sendEmptyMessageDelayed(0, 100);
+ }
+ if (isBack4) {
+ AgvAction agvAction = new AgvAction<>(SingleSwitchRunAction.class)
+ .setAgvNo(AgvNo)
+ .setSerialNo(substring)
+ .setVal(4)
+ .bodySync((action) -> action.setPwd((short) -99));
+ nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ handler.sendEmptyMessageDelayed(0, 100);
+ }
+ if (isFront5) {
+ AgvAction agvAction = new AgvAction<>(SingleSwitchRunAction.class)
+ .setAgvNo(AgvNo)
+ .setSerialNo(substring)
+ .setVal(5)
+ .bodySync((action) -> action.setPwd((short) 99));
+ nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ handler.sendEmptyMessageDelayed(0, 100);
+ }
+ if (isBack5) {
+ AgvAction agvAction = new AgvAction<>(SingleSwitchRunAction.class)
+ .setAgvNo(AgvNo)
+ .setSerialNo(substring)
+ .setVal(5)
+ .bodySync((action) -> action.setPwd((short) -99));
+ nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ handler.sendEmptyMessageDelayed(0, 100);
+ }
+ if (isFront6) {
+ AgvAction agvAction = new AgvAction<>(SingleSwitchRunAction.class)
+ .setAgvNo(AgvNo)
+ .setSerialNo(substring)
+ .setVal(6)
+ .bodySync((action) -> action.setPwd((short) 99));
+ nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ handler.sendEmptyMessageDelayed(0, 100);
+ }
+ if (isBack6) {
+ AgvAction agvAction = new AgvAction<>(SingleSwitchRunAction.class)
+ .setAgvNo(AgvNo)
+ .setSerialNo(substring)
+ .setVal(6)
+ .bodySync((action) -> action.setPwd((short) -99));
+ nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ handler.sendEmptyMessageDelayed(0, 100);
+ }
+ if (isFront7) {
+ AgvAction agvAction = new AgvAction<>(SingleSwitchRunAction.class)
+ .setAgvNo(AgvNo)
+ .setSerialNo(substring)
+ .setVal(7)
+ .bodySync((action) -> action.setPwd((short) 99));
+ nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ handler.sendEmptyMessageDelayed(0, 100);
+ }
+ if (isBack7) {
+ AgvAction agvAction = new AgvAction<>(SingleSwitchRunAction.class)
+ .setAgvNo(AgvNo)
+ .setSerialNo(substring)
+ .setVal(7)
+ .bodySync((action) -> action.setPwd((short) -99));
+ nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ handler.sendEmptyMessageDelayed(0, 100);
+ }
+ if (isFront8) {
+ AgvAction agvAction = new AgvAction<>(SingleSwitchRunAction.class)
+ .setAgvNo(AgvNo)
+ .setSerialNo(substring)
+ .setVal(8)
+ .bodySync((action) -> action.setPwd((short) 99));
+ nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ handler.sendEmptyMessageDelayed(0, 100);
+ }
+ if (isBack8) {
+ AgvAction agvAction = new AgvAction<>(SingleSwitchRunAction.class)
+ .setAgvNo(AgvNo)
+ .setSerialNo(substring)
+ .setVal(8)
+ .bodySync((action) -> action.setPwd((short) -99));
+ nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ handler.sendEmptyMessageDelayed(0, 100);
+ }
+ if (isFront9) {
+ AgvAction agvAction = new AgvAction<>(SingleSwitchRunAction.class)
+ .setAgvNo(AgvNo)
+ .setSerialNo(substring)
+ .setVal(9)
+ .bodySync((action) -> action.setPwd((short) 99));
+ nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ handler.sendEmptyMessageDelayed(0, 100);
+ }
+ if (isBack9) {
+ AgvAction agvAction = new AgvAction<>(SingleSwitchRunAction.class)
+ .setAgvNo(AgvNo)
+ .setSerialNo(substring)
+ .setVal(9)
+ .bodySync((action) -> action.setPwd((short) -99));
nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
handler.sendEmptyMessageDelayed(0, 100);
}
@@ -228,13 +371,14 @@
}
});
- String clientId;
+ static String clientId;
NettyServerHandler nettyServerHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
+
// 鎸夐挳闇囧姩
vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
@@ -306,8 +450,14 @@
Intent intent = getIntent();
- clientId = intent.getStringExtra("ip");
- AgvNo = intent.getStringExtra("agvNo");
+ if (intent != null) {
+ String newClientId = intent.getStringExtra("clientId");
+ if (newClientId != null) {
+ clientId = newClientId;
+ AgvNo = intent.getStringExtra("agvNo");
+ }
+ }
+
Log.i("message1",clientId);
// 鍓嶆嫧鏉嗕几鍑�
@@ -690,7 +840,7 @@
.setAgvNo(AgvNo)
.setSerialNo(substring)
.setVal(1)
- .bodySync((action) -> action.setPwd((short) 0));
+ .bodySync((action) -> action.setPwd((short) 1));
nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
axleFrontBtn1.setVisibility(View.VISIBLE);
axleBackBtn1.setVisibility(View.VISIBLE);
@@ -699,7 +849,7 @@
.setAgvNo(AgvNo)
.setSerialNo(substring)
.setVal(1)
- .bodySync((action) -> action.setPwd((short) 1));
+ .bodySync((action) -> action.setPwd((short) 0));
nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
axleFrontBtn1.setVisibility(View.GONE);
axleBackBtn1.setVisibility(View.GONE);
@@ -720,15 +870,19 @@
.setAgvNo(AgvNo)
.setSerialNo(substring)
.setVal(2)
- .bodySync((action) -> action.setPwd((short) 0));
+ .bodySync((action) -> action.setPwd((short) 1));
nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ axleFrontBtn2.setVisibility(View.VISIBLE);
+ axleBackBtn2.setVisibility(View.VISIBLE);
} else {
AgvAction agvAction = new AgvAction<>(SingleSwitchAction.class)
.setAgvNo(AgvNo)
.setSerialNo(substring)
.setVal(2)
- .bodySync((action) -> action.setPwd((short) 1));
+ .bodySync((action) -> action.setPwd((short) 0));
nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ axleFrontBtn2.setVisibility(View.GONE);
+ axleBackBtn2.setVisibility(View.GONE);
}
}
});
@@ -746,15 +900,19 @@
.setAgvNo(AgvNo)
.setSerialNo(substring)
.setVal(3)
- .bodySync((action) -> action.setPwd((short) 0));
+ .bodySync((action) -> action.setPwd((short) 1));
nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ axleFrontBtn3.setVisibility(View.VISIBLE);
+ axleBackBtn3.setVisibility(View.VISIBLE);
} else {
AgvAction agvAction = new AgvAction<>(SingleSwitchAction.class)
.setAgvNo(AgvNo)
.setSerialNo(substring)
.setVal(3)
- .bodySync((action) -> action.setPwd((short) 1));
+ .bodySync((action) -> action.setPwd((short) 0));
nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ axleFrontBtn3.setVisibility(View.GONE);
+ axleBackBtn3.setVisibility(View.GONE);
}
}
});
@@ -772,15 +930,19 @@
.setAgvNo(AgvNo)
.setSerialNo(substring)
.setVal(4)
- .bodySync((action) -> action.setPwd((short) 0));
+ .bodySync((action) -> action.setPwd((short) 1));
nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ axleFrontBtn4.setVisibility(View.VISIBLE);
+ axleBackBtn4.setVisibility(View.VISIBLE);
} else {
AgvAction agvAction = new AgvAction<>(SingleSwitchAction.class)
.setAgvNo(AgvNo)
.setSerialNo(substring)
.setVal(4)
- .bodySync((action) -> action.setPwd((short) 1));
+ .bodySync((action) -> action.setPwd((short) 0));
nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ axleFrontBtn4.setVisibility(View.GONE);
+ axleBackBtn4.setVisibility(View.GONE);
}
}
});
@@ -828,15 +990,19 @@
.setAgvNo(AgvNo)
.setSerialNo(substring)
.setVal(6)
- .bodySync((action) -> action.setPwd((short) 0));
+ .bodySync((action) -> action.setPwd((short) 1));
nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ axleFrontBtn6.setVisibility(View.VISIBLE);
+ axleBackBtn6.setVisibility(View.VISIBLE);
} else {
AgvAction agvAction = new AgvAction<>(SingleSwitchAction.class)
.setAgvNo(AgvNo)
.setSerialNo(substring)
.setVal(6)
- .bodySync((action) -> action.setPwd((short) 1));
+ .bodySync((action) -> action.setPwd((short) 0));
nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ axleFrontBtn6.setVisibility(View.GONE);
+ axleBackBtn6.setVisibility(View.GONE);
}
}
});
@@ -854,15 +1020,19 @@
.setAgvNo(AgvNo)
.setSerialNo(substring)
.setVal(7)
- .bodySync((action) -> action.setPwd((short) 0));
+ .bodySync((action) -> action.setPwd((short) 1));
nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ axleFrontBtn7.setVisibility(View.VISIBLE);
+ axleBackBtn7.setVisibility(View.VISIBLE);
} else {
AgvAction agvAction = new AgvAction<>(SingleSwitchAction.class)
.setAgvNo(AgvNo)
.setSerialNo(substring)
.setVal(7)
- .bodySync((action) -> action.setPwd((short) 1));
+ .bodySync((action) -> action.setPwd((short) 0));
nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ axleFrontBtn7.setVisibility(View.GONE);
+ axleBackBtn7.setVisibility(View.GONE);
}
}
});
@@ -880,15 +1050,19 @@
.setAgvNo(AgvNo)
.setSerialNo(substring)
.setVal(8)
- .bodySync((action) -> action.setPwd((short) 0));
+ .bodySync((action) -> action.setPwd((short) 1));
nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ axleFrontBtn8.setVisibility(View.VISIBLE);
+ axleBackBtn8.setVisibility(View.VISIBLE);
} else {
AgvAction agvAction = new AgvAction<>(SingleSwitchAction.class)
.setAgvNo(AgvNo)
.setSerialNo(substring)
.setVal(8)
- .bodySync((action) -> action.setPwd((short) 1));
+ .bodySync((action) -> action.setPwd((short) 0));
nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ axleFrontBtn8.setVisibility(View.GONE);
+ axleBackBtn8.setVisibility(View.GONE);
}
}
});
@@ -906,307 +1080,23 @@
.setAgvNo(AgvNo)
.setSerialNo(substring)
.setVal(9)
- .bodySync((action) -> action.setPwd((short) 0));
+ .bodySync((action) -> action.setPwd((short) 1));
nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ axleFrontBtn9.setVisibility(View.VISIBLE);
+ axleBackBtn9.setVisibility(View.VISIBLE);
} else {
AgvAction agvAction = new AgvAction<>(SingleSwitchAction.class)
.setAgvNo(AgvNo)
.setSerialNo(substring)
.setVal(9)
- .bodySync((action) -> action.setPwd((short) 1));
+ .bodySync((action) -> action.setPwd((short) 0));
nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
+ axleFrontBtn9.setVisibility(View.GONE);
+ axleBackBtn9.setVisibility(View.GONE);
}
}
});
-
- axleFrontBtn1.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<>(SingleSwitchRunAction.class)
- .setAgvNo(AgvNo)
- .setSerialNo(substring)
- .setVal(1)
- .bodySync((action) -> action.setPwd((short) 100));
- nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
- }
- });
-
- axleBackBtn1.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<>(SingleSwitchRunAction.class)
- .setAgvNo(AgvNo)
- .setSerialNo(substring)
- .setVal(1)
- .bodySync((action) -> action.setPwd((short) -100));
- nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
- }
- });
-
- axleFrontBtn2.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<>(SingleSwitchRunAction.class)
- .setAgvNo(AgvNo)
- .setSerialNo(substring)
- .setVal(2)
- .bodySync((action) -> action.setPwd((short) 100));
- nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
- }
- });
-
- axleBackBtn2.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<>(SingleSwitchRunAction.class)
- .setAgvNo(AgvNo)
- .setSerialNo(substring)
- .setVal(2)
- .bodySync((action) -> action.setPwd((short) -100));
- nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
- }
- });
-
- axleFrontBtn3.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<>(SingleSwitchRunAction.class)
- .setAgvNo(AgvNo)
- .setSerialNo(substring)
- .setVal(3)
- .bodySync((action) -> action.setPwd((short) 100));
- nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
- }
- });
-
- axleBackBtn3.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<>(SingleSwitchRunAction.class)
- .setAgvNo(AgvNo)
- .setSerialNo(substring)
- .setVal(3)
- .bodySync((action) -> action.setPwd((short) -100));
- nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
- }
- });
-
- axleFrontBtn4.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<>(SingleSwitchRunAction.class)
- .setAgvNo(AgvNo)
- .setSerialNo(substring)
- .setVal(4)
- .bodySync((action) -> action.setPwd((short) 100));
- nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
- }
- });
-
- axleBackBtn4.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<>(SingleSwitchRunAction.class)
- .setAgvNo(AgvNo)
- .setSerialNo(substring)
- .setVal(4)
- .bodySync((action) -> action.setPwd((short) -100));
- nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
- }
- });
-
- axleFrontBtn5.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<>(SingleSwitchRunAction.class)
- .setAgvNo(AgvNo)
- .setSerialNo(substring)
- .setVal(5)
- .bodySync((action) -> action.setPwd((short) 99));
- nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
- }
- });
-
- axleBackBtn5.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<>(SingleSwitchRunAction.class)
- .setAgvNo(AgvNo)
- .setSerialNo(substring)
- .setVal(5)
- .bodySync((action) -> action.setPwd((short) -99));
- nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
- }
- });
-
- axleFrontBtn6.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<>(SingleSwitchRunAction.class)
- .setAgvNo(AgvNo)
- .setSerialNo(substring)
- .setVal(6)
- .bodySync((action) -> action.setPwd((short) 100));
- nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
- }
- });
-
- axleBackBtn6.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<>(SingleSwitchRunAction.class)
- .setAgvNo(AgvNo)
- .setSerialNo(substring)
- .setVal(6)
- .bodySync((action) -> action.setPwd((short) -100));
- nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
- }
- });
-
- axleFrontBtn7.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<>(SingleSwitchRunAction.class)
- .setAgvNo(AgvNo)
- .setSerialNo(substring)
- .setVal(7)
- .bodySync((action) -> action.setPwd((short) 100));
- nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
- }
- });
-
- axleBackBtn7.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<>(SingleSwitchRunAction.class)
- .setAgvNo(AgvNo)
- .setSerialNo(substring)
- .setVal(7)
- .bodySync((action) -> action.setPwd((short) -100));
- nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
- }
- });
-
- axleFrontBtn8.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<>(SingleSwitchRunAction.class)
- .setAgvNo(AgvNo)
- .setSerialNo(substring)
- .setVal(8)
- .bodySync((action) -> action.setPwd((short) 100));
- nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
- }
- });
-
- axleBackBtn8.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<>(SingleSwitchRunAction.class)
- .setAgvNo(AgvNo)
- .setSerialNo(substring)
- .setVal(8)
- .bodySync((action) -> action.setPwd((short) -100));
- nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
- }
- });
-
- axleFrontBtn9.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<>(SingleSwitchRunAction.class)
- .setAgvNo(AgvNo)
- .setSerialNo(substring)
- .setVal(9)
- .bodySync((action) -> action.setPwd((short) 100));
- nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
- }
- });
-
- axleBackBtn9.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<>(SingleSwitchRunAction.class)
- .setAgvNo(AgvNo)
- .setSerialNo(substring)
- .setVal(9)
- .bodySync((action) -> action.setPwd((short) -100));
- nettyServerHandler.sendMessageToClient(clientId, agvAction); // 鍙戦�佹秷鎭埌瀹㈡埛绔�
- }
- });
// 鐐瑰姩鎸夐挳
stopBtn.setOnTouchListener(new CarTouchButton());
@@ -1275,15 +1165,152 @@
} else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
isRotatopnRight = false;
}
- } else if (view.getId() == R.id.btn_rotatopn_right) {
+ } else if (view.getId() == R.id.btn_axle_1_front) {
// 杞村姩鎸夐挳
if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
- isRotatopnRight = true;
+ isFront1 = true;
handler.sendEmptyMessage(0);
} else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
- isRotatopnRight = false;
+ isFront1 = false;
+ }
+ } else if (view.getId() == R.id.btn_axle_1_back) {
+ // 杞村姩鎸夐挳
+ if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
+ isBack1 = true;
+ handler.sendEmptyMessage(0);
+ } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
+ isBack1 = false;
+ }
+ } else if (view.getId() == R.id.btn_axle_2_front) {
+ // 杞村姩鎸夐挳
+ if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
+ isFront2 = true;
+ handler.sendEmptyMessage(0);
+ } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
+ isFront2 = false;
+ }
+ } else if (view.getId() == R.id.btn_axle_2_back) {
+ // 杞村姩鎸夐挳
+ if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
+ isBack2 = true;
+ handler.sendEmptyMessage(0);
+ } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
+ isBack2 = false;
+ }
+ } else if (view.getId() == R.id.btn_axle_3_front) {
+ // 杞村姩鎸夐挳
+ if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
+ isFront3 = true;
+ handler.sendEmptyMessage(0);
+ } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
+ isFront3 = false;
+ }
+ } else if (view.getId() == R.id.btn_axle_3_back) {
+ // 杞村姩鎸夐挳
+ if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
+ isBack3 = true;
+ handler.sendEmptyMessage(0);
+ } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
+ isBack3 = false;
+ }
+ } else if (view.getId() == R.id.btn_axle_4_front) {
+ // 杞村姩鎸夐挳
+ if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
+ isFront4 = true;
+ handler.sendEmptyMessage(0);
+ } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
+ isFront4 = false;
+ }
+ } else if (view.getId() == R.id.btn_axle_4_back) {
+ // 杞村姩鎸夐挳
+ if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
+ isBack4 = true;
+ handler.sendEmptyMessage(0);
+ } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
+ isBack4 = false;
+ }
+ } else if (view.getId() == R.id.btn_axle_5_front) {
+ // 杞村姩鎸夐挳
+ if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
+ isFront5 = true;
+ handler.sendEmptyMessage(0);
+ } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
+ isFront5 = false;
+ }
+ } else if (view.getId() == R.id.btn_axle_5_back) {
+ // 杞村姩鎸夐挳
+ if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
+ isBack5 = true;
+ handler.sendEmptyMessage(0);
+ } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
+ isBack5 = false;
+ }
+ } else if (view.getId() == R.id.btn_axle_6_front) {
+ // 杞村姩鎸夐挳
+ if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
+ isFront6 = true;
+ handler.sendEmptyMessage(0);
+ } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
+ isFront6 = false;
+ }
+ } else if (view.getId() == R.id.btn_axle_6_back) {
+ // 杞村姩鎸夐挳
+ if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
+ isBack6 = true;
+ handler.sendEmptyMessage(0);
+ } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
+ isBack6 = false;
+ }
+ } else if (view.getId() == R.id.btn_axle_7_front) {
+ // 杞村姩鎸夐挳
+ if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
+ isFront7 = true;
+ handler.sendEmptyMessage(0);
+ } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
+ isFront7 = false;
+ }
+ } else if (view.getId() == R.id.btn_axle_7_back) {
+ // 杞村姩鎸夐挳
+ if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
+ isBack7 = true;
+ handler.sendEmptyMessage(0);
+ } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
+ isBack7 = false;
+ }
+ } else if (view.getId() == R.id.btn_axle_8_front) {
+ // 杞村姩鎸夐挳
+ if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
+ isFront8 = true;
+ handler.sendEmptyMessage(0);
+ } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
+ isFront8 = false;
+ }
+ } else if (view.getId() == R.id.btn_axle_8_back) {
+ // 杞村姩鎸夐挳
+ if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
+ isBack8 = true;
+ handler.sendEmptyMessage(0);
+ } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
+ isBack8 = false;
+ }
+ } else if (view.getId() == R.id.btn_axle_9_front) {
+ // 杞村姩鎸夐挳
+ if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
+ isFront9 = true;
+ handler.sendEmptyMessage(0);
+ } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
+ isFront9 = false;
+ }
+ } else if (view.getId() == R.id.btn_axle_9_back) {
+ // 杞村姩鎸夐挳
+ if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) {
+ isBack9 = true;
+ handler.sendEmptyMessage(0);
+ } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) {
+ isBack9 = false;
}
}
+
return false;
@@ -1334,4 +1361,8 @@
//SocketManager.getInstance().stopServer();
//socketManager.stopServer(); // 鍋滄鏈嶅姟鍣�
}
+
+ public static void upClient(String newClientId) {
+ clientId = newClientId;
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/agvcontroller/StartActivity.java b/app/src/main/java/com/example/agvcontroller/StartActivity.java
index d8d5a29..e6592be 100644
--- a/app/src/main/java/com/example/agvcontroller/StartActivity.java
+++ b/app/src/main/java/com/example/agvcontroller/StartActivity.java
@@ -2,6 +2,7 @@
import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
@@ -25,11 +26,13 @@
private List<Item> items;
private ItemAdapter adapter;
SocketManager socketManager;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
+
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
@@ -47,8 +50,14 @@
public void onItemClick(View view, int position) {
Context context = view.getContext();
Intent intent = new Intent(context,MainActivity.class);
- intent.putExtra("ip", items.get(position).getIp());
- intent.putExtra("agvNo", items.get(position).getAgvNo());
+ String ip = items.get(position).getIp();
+ String clientId = items.get(position).getClientId();
+ String agvNo = items.get(position).getAgvNo();
+
+
+ intent.putExtra("ip", ip);
+ intent.putExtra("agvNo", agvNo);
+ intent.putExtra("clientId", clientId);
startActivityForResult(intent,1);
}
});
@@ -61,19 +70,34 @@
Log.i("EventBus", "Received device connected: " + deviceAddress);
- if (items.size() > 0) {
+ if (!items.isEmpty()) {
int sameIp = 0;
for (Item item : items) {
if (item.getIp().equals(deviceAddress.getIp())) {
+ item.setAgvNo(deviceAddress.getAgvNo());
+ item.setPort(deviceAddress.getPort());
+ item.setClientId(deviceAddress.getClientId());
+ item.setStatus(deviceAddress.getStatus());
+ adapter.notifyItemChanged(items.indexOf(item));
+ MainActivity.upClient(deviceAddress.getClientId());
sameIp++;
}
Log.i("Item",item.getIp());
+ Log.i("Item",item.getClientId());
}
if (sameIp == 0) {
- items.add(new Item(deviceAddress.getText(),deviceAddress.getIp(),deviceAddress.getAgvNo()));
+ items.add(new Item(deviceAddress.getClientId()
+ ,deviceAddress.getIp()
+ ,deviceAddress.getPort()
+ ,deviceAddress.getAgvNo()
+ ,deviceAddress.getStatus()));
}
} else {
- items.add(new Item(deviceAddress.getText(),deviceAddress.getIp(),deviceAddress.getAgvNo()));
+ items.add(new Item(deviceAddress.getClientId()
+ ,deviceAddress.getIp()
+ ,deviceAddress.getPort()
+ ,deviceAddress.getAgvNo()
+ ,deviceAddress.getStatus()));
}
adapter.notifyDataSetChanged();
}
diff --git a/app/src/main/java/com/example/agvcontroller/socket/NettyServerHandler.java b/app/src/main/java/com/example/agvcontroller/socket/NettyServerHandler.java
index 5df8f0e..6496e59 100644
--- a/app/src/main/java/com/example/agvcontroller/socket/NettyServerHandler.java
+++ b/app/src/main/java/com/example/agvcontroller/socket/NettyServerHandler.java
@@ -7,6 +7,10 @@
import io.netty.buffer.Unpooled;
import io.netty.channel.Channel;
import io.netty.channel.ChannelHandlerContext;
+
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
import android.util.Log;
import com.example.agvcontroller.Item;
@@ -27,28 +31,74 @@
import org.greenrobot.eventbus.EventBus;
+import java.net.InetSocketAddress;
+import java.util.HashMap;
+import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class NettyServerHandler extends AbstractInboundHandler<AgvPackage> {
private static final String TAG = "NettyServerHandler";
private static ConcurrentHashMap<String, Channel> channelMap = new ConcurrentHashMap<>();
+ private Map<String, Runnable> pendingRemovals = new HashMap<>();
+ private Handler handler = new Handler(Looper.getMainLooper()) {
+ @Override
+ public void handleMessage(Message msg) {
+ super.handleMessage(msg);
+ String clientId = (String) msg.obj;
+ removeItem(clientId);
+ }
+ };
@Override
public void channelActive(ChannelHandlerContext ctx) throws Exception {
-// String clientId = ctx.channel().remoteAddress().toString();
-// channelMap.put(clientId, ctx.channel());
-// EventBus.getDefault().post(new Item("",clientId,"3"));
-// Log.d(TAG, "Client connected: " + clientId);
+ String clientId = ctx.channel().remoteAddress().toString();
+ InetSocketAddress remoteAddress = (InetSocketAddress) ctx.channel().remoteAddress();
+ String ip = remoteAddress.getAddress().getHostAddress();
+ int port = remoteAddress.getPort();
+ channelMap.put(clientId, ctx.channel());
+ EventBus.getDefault().post(new Item(clientId,ip,port,"--",0));
+ Log.d(TAG, "Client connected: " + clientId);
+
+ // 鍙栨秷寤惰繜鍒犻櫎鎿嶄綔
+ if (pendingRemovals.containsKey(clientId)) {
+ handler.removeCallbacks(pendingRemovals.get(clientId));
+ pendingRemovals.remove(clientId);
+ }
+
}
@Override
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
String clientId = ctx.channel().remoteAddress().toString();
+ InetSocketAddress remoteAddress = (InetSocketAddress) ctx.channel().remoteAddress();
+ String ip = remoteAddress.getAddress().getHostAddress();
+ int port = remoteAddress.getPort();
channelMap.remove(clientId);
EventBus.getDefault().post(clientId);
Log.d(TAG, "Client disconnected: " + clientId);
+
+ // 鍚姩寤惰繜鍒犻櫎鎿嶄綔
+ Runnable removalRunnable = new Runnable() {
+ @Override
+ public void run() {
+ removeItem(clientId);
+ }
+ };
+ pendingRemovals.put(clientId, removalRunnable);
+ handler.postDelayed(removalRunnable, 20000); // 20绉掑悗鎵ц鍒犻櫎鎿嶄綔
+
+ }
+
+
+ private void removeItem(String clientId) {
+ if (channelMap.remove(clientId) != null) {
+ Log.d(TAG, "Client removed after 20 seconds: " + clientId);
+ EventBus.getDefault().post(clientId);
+ } else {
+ Log.d(TAG, "Client already reconnected or not found: " + clientId);
+ }
}
// @Override
@@ -72,6 +122,9 @@
@Override
protected boolean channelRead0(ChannelHandlerContext ctx, AgvPackage pac) throws Exception {
String clientId = ctx.channel().remoteAddress().toString();
+ InetSocketAddress remoteAddress = (InetSocketAddress) ctx.channel().remoteAddress();
+ String ip = remoteAddress.getAddress().getHostAddress();
+ int port = remoteAddress.getPort();
Log.i("clientId--->",clientId);
Log.i("substring",pac.toString());
String serialNum = pac.getBody().getMessageBody().getSerialNo();
@@ -97,13 +150,13 @@
AGV_12_UP agv_12_up = (AGV_12_UP) pac.getBody().getMessageBody();
agvNo = pac.getHeader().getUniqueNo();
channelMap.put(clientId, ctx.channel());
- EventBus.getDefault().post(new Item("",clientId,agvNo));
+ EventBus.getDefault().post(new Item(clientId,ip,port,agvNo,1));
break label;
case DATA_WITHOUT_CODE_REPORT:
AGV_13_UP agv_13_up = (AGV_13_UP) pac.getBody().getMessageBody();
agvNo = pac.getHeader().getUniqueNo();
channelMap.put(clientId, ctx.channel());
- EventBus.getDefault().post(new Item("",clientId,agvNo));
+ EventBus.getDefault().post(new Item(clientId,ip,port,agvNo,1));
break label;
case LOGIN_REPORT:
AGV_F0_UP agv_f0_up = (AGV_F0_UP) pac.getBody().getMessageBody();
@@ -114,7 +167,7 @@
}
agvNo = pac.getHeader().getUniqueNo();
channelMap.put(clientId, ctx.channel());
- EventBus.getDefault().post(new Item("",clientId,agvNo));
+ EventBus.getDefault().post(new Item(clientId,ip,port,agvNo,1));
break label;
}
diff --git a/app/src/main/res/layout/item_view_linear.xml b/app/src/main/res/layout/item_view_linear.xml
index 94489f4..ab0a0c8 100644
--- a/app/src/main/res/layout/item_view_linear.xml
+++ b/app/src/main/res/layout/item_view_linear.xml
@@ -15,19 +15,25 @@
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="9"
+ android:padding="10dp"
android:orientation="vertical">
+ <TextView
+ android:id="@+id/item_agvNo"
+ android:layout_width="match_parent"
+ android:layout_height="25dp"
+ android:text="agvNo" />
<TextView
android:id="@+id/item_ip"
android:layout_width="match_parent"
android:layout_height="25dp"
- android:text="matnr1" />
+ android:text="ip" />
<TextView
- android:id="@+id/item_title"
+ android:id="@+id/item_port"
android:layout_width="match_parent"
android:layout_height="25dp"
- android:text="matnr" />
+ android:text="port" />
</LinearLayout>
--
Gitblit v1.9.1