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