杰瑞科技汇

Java如何实现Modbus数据采集?

Modbus协议简介

在开始编码前,简单理解Modbus有助于更好地实现它。

Java如何实现Modbus数据采集?-图1
(图片来源网络,侵删)
  • Modbus 是一种串行通信协议,由Modicon公司(现为施耐德电气)于1979年发明,它是一种主从式协议。

  • 主站:主动发起请求的设备,如PLC、SCADA服务器、我们的Java程序。

  • 从站:被动响应请求的设备,如传感器、变频器、智能仪表等,每个从站都有一个唯一的地址 (Slave ID, 通常是1-247)。

  • 功能码:主站通过功能码告诉从站要执行什么操作,最常用的功能码是:

    Java如何实现Modbus数据采集?-图2
    (图片来源网络,侵删)
    • 0x01 (Read Coils): 读取单个或多个线圈(开关量,0或1)。
    • 0x02 (Read Discrete Inputs): 读取单个或多个离散输入(通常是外部开关的状态)。
    • 0x03 (Read Holding Registers): 读取单个或多个保持寄存器(通常用于读写模拟量、配置参数)。
    • 0x04 (Read Input Registers): 读取单个或多个输入寄存器(通常用于只读的模拟量,如传感器值)。
    • 0x05, 0x06, 0x0F, 0x10: 用于写入单个/多个线圈/寄存器。
  • 传输介质:Modbus可以通过多种物理介质传输:

    • 串口 (RTU):使用RS-232, RS-485等,在相同波特率、数据位、停止位和校验位下,RTU模式比ASCII模式传输效率更高,抗干扰能力更强,是目前工业领域最主流的方式。
    • TCP/IP (TCP):将Modbus报文封装在TCP报文中,通过以太网传输,这是现代自动化系统的首选,易于与现有IT网络集成。

Java Modbus库选择

Java生态中有几个成熟的库可以实现Modbus通信,这里推荐最主流的两个:

a. Jamod (Java Modbus Library)

  • 特点:一个非常经典、轻量级的开源库,专门为Modbus设计,支持RTU和TCP模式。
  • 优点:API相对简单,学习曲线平缓,非常适合初学者和小型项目。
  • 缺点:维护频率不高,一些高级功能(如连接池、更强大的异步支持)不如其他库完善。
  • Maven依赖:
    <dependency>
        <groupId>com.ghgande</groupId>
        <artifactId>j2mod</artifactId>
        <version>3.2.1</version>
    </dependency>

    注意:j2modjamod 的一个积极维护的分支,现在更推荐使用 j2mod

b. Eclipse Milos (基于Netty)

  • 特点:一个功能更强大、性能更高的现代化Modbus库,它基于高性能的网络框架Netty构建。
  • 优点
    • 高性能:异步非阻塞I/O,适合需要处理大量并发连接或高频数据采集的场景。
    • 功能全面:支持RTU over TCP, RTU Serial, TCP等多种模式,功能丰富。
    • 活跃维护:由Eclipse基金会维护,社区活跃。
  • 缺点:API相对复杂,学习成本稍高。
  • Maven依赖:
    <dependency>
        <groupId>org.eclipse.milo</groupId>
        <artifactId>stack-core</artifactId>
        <version>0.6.7</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.milo</groupId>
        <artifactId>stack-client</artifactId>
        <version>0.6.7</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.milo</groupId>
        <artifactId>server-core</artifactId>
        <version>0.6.7</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.milo</groupId>
        <artifactId>server-tcp</artifactId>
        <version>0.6.7</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.milo</groupId>
        <artifactId>server-serial</artifactId>
        <version>0.6.7</version>
    </dependency>

实践示例:使用 Jamod (j2mod) 进行数据采集

我们先用 j2mod 实现一个简单的客户端,分别从Modbus TCP和Modbus RTU设备读取数据。

Java如何实现Modbus数据采集?-图3
(图片来源网络,侵删)

a. Modbus TCP 读取 (功能码 0x03)

假设有一个Modbus TCP设备,IP为 168.1.10,端口为 502,从站地址为 1,我们要读取保持寄存器地址 0 开始的10个寄存器。

import com.ghgande.j2mod.modbus.Modbus;
import com.ghgande.j2mod.modbus.io.ModbusTCPTransaction;
import com.ghgande.j2mod.modbus.msg.ReadMultipleRegistersRequest;
import com.ghgande.j2mod.modbus.msg.ReadMultipleRegistersResponse;
import com.ghgande.j2mod.modbus.net.TCPMasterConnection;
import java.net.InetAddress;
public class JamodTcpExample {
    public static void main(String[] args) {
        String ipAddress = "192.168.1.10"; // Modbus TCP设备的IP
        int port = Modbus.DEFAULT_PORT;    // Modbus TCP默认端口502
        int slaveId = 1;                   // 从站地址
        int startAddr = 0;                 // 起始寄存器地址
        int numRegs = 10;                  // 读取的寄存器数量
        TCPMasterConnection connection = null;
        ModbusTCPTransaction transaction = null;
        try {
            // 1. 创建TCP连接
            InetAddress addr = InetAddress.getByName(ipAddress);
            connection = new TCPMasterConnection(addr);
            connection.setPort(port);
            connection.connect(); // 建立连接
            // 2. 创建请求
            ReadMultipleRegistersRequest request = new ReadMultipleRegistersRequest(startAddr, numRegs);
            request.setUnitID(slaveId); // 设置从站地址
            // 3. 创建事务
            transaction = new ModbusTCPTransaction(connection);
            transaction.setRequest(request);
            transaction.setReconnecting(true); // 设置为重连模式,连接断开会尝试重连
            // 4. 执行事务(同步发送请求并等待响应)
            System.out.println("Sending request to " + ipAddress + ", slave " + slaveId);
            transaction.execute();
            // 5. 处理响应
            ReadMultipleRegistersResponse response = (ReadMultipleRegistersResponse) transaction.getResponse();
            if (response.isException()) {
                System.err.println("Received exception response: " + response.getExceptionCode());
            } else {
                System.out.println("Successfully read " + response.getWordCount() + " registers.");
                // 打印读取到的寄存器值
                for (int i = 0; i < response.getWordCount(); i++) {
                    System.out.println("Register [" + (startAddr + i) + "] = " + response.getRegisterValue(i));
                }
            }
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
            e.printStackTrace();
        } finally {
            // 6. 关闭连接
            if (connection != null && connection.isConnected()) {
                connection.close();
            }
        }
    }
}

b. Modbus RTU 读取 (功能码 0x03)

假设有一个Modbus RTU设备连接在串口 COM3 (Windows) 或 /dev/ttyUSB0 (Linux) 上,波特率 9600,从站地址 1

import com.ghgande.j2mod.modbus.Modbus;
import com.ghgande.j2mod.modbus.io.ModbusSerialTransaction;
import com.ghgande.j2mod.modbus.msg.ReadMultipleRegistersRequest;
import com.ghgande.j2mod.modbus.msg.ReadMultipleRegistersResponse;
import com.ghgande.j2mod.modbus.net.SerialConnection;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import java.util.Enumeration;
public class JamodRtuExample {
    public static void main(String[] args) {
        String portName = "COM3"; // Windows: "COM3", Linux: "/dev/ttyUSB0"
        int baudRate = 9600;
        int dataBits = SerialPort.DATABITS_8;
        int stopBits = SerialPort.STOPBITS_1;
        int parity = SerialPort.PARITY_NONE;
        int slaveId = 1;
        int startAddr = 0;
        int numRegs = 10;
        SerialConnection connection = null;
        ModbusSerialTransaction transaction = null;
        try {
            // 1. 获取串口标识符
            Enumeration<CommPortIdentifier> portList = CommPortIdentifier.getPortIdentifiers();
            CommPortIdentifier portId = null;
            while (portList.hasMoreElements()) {
                CommPortIdentifier currentPortId = portList.nextElement();
                if (currentPortId.getName().equals(portName)) {
                    portId = currentPortId;
                    break;
                }
            }
            if (portId == null) {
                throw new Exception("Port " + portName + " not found.");
            }
            // 2. 打开串口
            connection = new SerialConnection(portId);
            connection.setSerialPortParams(baudRate, dataBits, stopBits, parity);
            connection.open();
            // 3. 创建请求
            ReadMultipleRegistersRequest request = new ReadMultipleRegistersRequest(startAddr, numRegs);
            request.setUnitID(slaveId);
            // 4. 创建事务
            transaction = new ModbusSerialTransaction(connection);
            transaction.setRequest(request);
            // 5. 执行事务
            System.out.println("Sending request to " + portName + ", slave " + slaveId);
            transaction.execute();
            // 6. 处理响应
            ReadMultipleRegistersResponse response = (ReadMultipleRegistersResponse) transaction.getResponse();
            if (response.isException()) {
                System.err.println("Received exception response: " + response.getExceptionCode());
            } else {
                System.out.println("Successfully read " + response.getWordCount() + " registers.");
                for (int i = 0; i < response.getWordCount(); i++) {
                    System.out.println("Register [" + (startAddr + i) + "] = " + response.getRegisterValue(i));
                }
            }
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
            e.printStackTrace();
        } finally {
            // 7. 关闭连接
            if (connection != null) {
                connection.close();
            }
        }
    }
}

注意:使用RTU需要 gnu.io (RXTX) 库,你需要下载对应你操作系统的 .dll.so 文件,并将其放在Java的 library path 中(System.setProperty("java.library.path", "path_to_rxtx_bin");),这通常是RTU开发中最容易出错的地方。


实践示例:使用 Eclipse Milo 进行数据采集

Milo的API更面向对象,但概念类似,我们同样实现一个TCP读取的例子。

a. Modbus TCP 读取 (功能码 0x03)

import org.eclipse.milo.opcua.stack.core.types.builtin.DataValue;
import org.eclipse.milo.opcua.stack.core.types.builtin.StatusCode;
import org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.UShort;
import org.eclipse.milo.opcua.stack.core.types.enumerated.TimestampsToReturn;
import org.eclipse.milo.opcua.stack.core.util.Unit;
import org.eclipse.milo.opcua.stack.server.transport.tcp.UaTcpStackServer;
import org.eclipse.milo.opcua.stack.server.transport.tcp.UaTcpStackServerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServer;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransport;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManager;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener;
import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter;
import org.eclipse
分享:
扫描分享到社交APP
上一篇
下一篇