#
whycq
2024-08-12 6d13023b5737f331a541ed00de66f774a5315b4a
#
6个文件已修改
94 ■■■■ 已修改文件
app/src/main/java/com/example/agvcontroller/Item.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/example/agvcontroller/ItemAdapter.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/example/agvcontroller/MainActivity.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/example/agvcontroller/StartActivity.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/example/agvcontroller/socket/NettyServerHandler.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/example/agvcontroller/socket/SocketManager.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/example/agvcontroller/Item.java
@@ -5,6 +5,7 @@
    private String text;
    private String ip;
    private String agvNo;
    private int id;
    public Item(String text,String ip,String agvNo) {
        this.text = text;
@@ -23,4 +24,8 @@
    public String getAgvNo() {
        return agvNo;
    }
    public int getId() {
        return id;
    }
}
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.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -29,8 +30,18 @@
            super(itemView);
            title = itemView.findViewById(R.id.item_title);
            ip = itemView.findViewById(R.id.item_ip);
            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Log.i("List","123");
                }
            });
        }
    }
    @Override
    public int getItemViewType(int position) {
@@ -45,7 +56,25 @@
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(viewType, parent, false);
        return new ViewHolder(view);
        ViewHolder viewHolder = new ItemAdapter.ViewHolder(view);
        view.setOnClickListener(this::onClick);
        return viewHolder;
    }
    private void onClick(View view) {
        if (mOnItemClickListener != null) {
            mOnItemClickListener.onItemClick(view,(int)view.getTag());
        }
    }
    private OnItemClickListener mOnItemClickListener = null;
    public static interface OnItemClickListener {
        void onItemClick(View view,int position);
    }
    public void setmOnItemClickListener(OnItemClickListener listener) {
        this.mOnItemClickListener = listener;
    }
    @Override
@@ -61,6 +90,8 @@
            Item item = itemList.get(position);
            holder.ip.setText("设备IP: " + item.getIp());
            holder.title.setText("设备编号: " + item.getText());
            holder.itemView.setTag(position);
        }
    }
app/src/main/java/com/example/agvcontroller/MainActivity.java
@@ -4,16 +4,19 @@
import androidx.recyclerview.widget.RecyclerView;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Vibrator;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import com.example.agvcontroller.socket.NettyServerHandler;
import com.example.agvcontroller.socket.SocketManager;
import com.example.agvcontroller.socket.SocketTask;
import java.net.Socket;
import java.util.Arrays;
import java.util.List;
import io.netty.buffer.ByteBuf;
@@ -29,6 +32,7 @@
    private Button vibrateButton;
    private Socket socket;
    SocketManager socketManager;
    NettyServerHandler nettyServerHandler;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
@@ -43,8 +47,8 @@
        // 设置端口号并启动服务端
        //SocketManager.getInstance().setPort(8080);
        socketManager = new SocketManager();
        socketManager.startServer(8080);
        //socketManager = new SocketManager();
        //socketManager.startServer(8080);
        // 启动服务端
        //new Thread(() -> {
@@ -54,21 +58,23 @@
        vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
        vibrateButton = findViewById(R.id.btn_stop);
        Intent intent = getIntent();
        String clientId = intent.getStringExtra("message");
        Log.i("message1",clientId);
        vibrateButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (vibrator != null && vibrator.hasVibrator()) {
                    vibrator.vibrate(500);
                    //vibrator.vibrate(500);
                }
                //socket = new Socket();
                //new SocketTask().execute("192.168.4.188", 802);
                //ByteBuf message = Unpooled.copiedBuffer("Hello, Netty!", CharsetUtil.UTF_8);
                //SocketManager.getInstance().sendMessage(message);
                //String clientId = "/192.168.4.188:63160";
                byte[] message1 = new byte[]{0x01, 0x02, 0x03, 0x04}; // 示例消息
                Log.i("message2",clientId);
                Log.i("message3", Arrays.toString(message1));
                String clientId = "/192.168.4.188:63160";
                byte[] message = new byte[]{0x01, 0x02, 0x03, 0x04}; // 示例消息
                socketManager.sendMessage(clientId, message); // 发送消息到客户端
                nettyServerHandler.sendMessageToClient(clientId, message1); // 发送消息到客户端
            }
        });
@@ -80,6 +86,6 @@
        //SocketManager.getInstance().disconnect();
        //SocketManager.getInstance().stopServer();
        socketManager.stopServer(); // 停止服务器
        //socketManager.stopServer(); // 停止服务器
    }
}
app/src/main/java/com/example/agvcontroller/StartActivity.java
@@ -1,7 +1,10 @@
package com.example.agvcontroller;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
@@ -24,6 +27,7 @@
    SocketManager socketManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_start);
@@ -37,8 +41,18 @@
        EventBus.getDefault().register(this);
        adapter.setmOnItemClickListener(new ItemAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                Context context = view.getContext();
                Intent intent = new Intent(context,MainActivity.class);
                intent.putExtra("message", items.get(position).getIp());
                startActivityForResult(intent,1);
            }
        });
        socketManager = new SocketManager();
        socketManager.startServer(8080);
        socketManager.startServer(8022);
    }
    @Subscribe(threadMode = ThreadMode.MAIN)
app/src/main/java/com/example/agvcontroller/socket/NettyServerHandler.java
@@ -16,6 +16,7 @@
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.Arrays;
import java.util.concurrent.ConcurrentHashMap;
public class NettyServerHandler extends ChannelInboundHandlerAdapter {
@@ -89,13 +90,7 @@
    }
    public static void sendMessageToClient(String clientId, byte[] message) {
        Channel channel = channelMap.get(clientId);
        if (channel != null && channel.isActive()) {
            ByteBuf buf = Unpooled.wrappedBuffer(message);
            channel.writeAndFlush(buf);
        } else {
            Log.d(TAG, "Client " + clientId + " is not connected");
        }
    }
    @Override
app/src/main/java/com/example/agvcontroller/socket/SocketManager.java
@@ -1,6 +1,10 @@
package com.example.agvcontroller.socket;
import android.util.Log;
import java.io.Serializable;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.Channel;
import io.netty.channel.ChannelInitializer;
@@ -44,6 +48,7 @@
    }
    public void sendMessage(String clientId, byte[] message) {
        Log.i("Socket Manager",clientId);
        NettyServerHandler.sendMessageToClient(clientId, message);
    }