【开源视频联动物联网平台】j2mod 库写一个Modbus RTU 服务器

J2Mod是一个Java编写的Modbus通信库,可以用于实现Modbus RTU服务器。以下是一个简单的示例,演示如何使用J2Mod库创建一个Modbus RTU服务器:

  1. 添加J2Mod库依赖项: 首先,确保在项目中包含J2Mod库。你可以将J2Mod库添加到项目中,方法取决于你使用的构建工具(比如Maven或Gradle)。

如果使用Maven,可以在pom.xml文件中添加以下依赖项:

复制代码
<dependency>
    <groupId>com.ghgande.j2mod</groupId>
    <artifactId>j2mod</artifactId>
    <version>3.1.3</version> <!-- 使用最新版本 -->
</dependency>

如果使用Gradle,可以在build.gradle文件中添加以下依赖项:

复制代码
implementation 'com.ghgande.j2mod:j2mod:3.1.3' // 使用最新版本

创建Modbus RTU服务器

下面是一个简单的Modbus RTU服务器示例,监听在COM3串口上,地址为1:

复制代码
import com.ghgande.j2mod.modbus.Modbus;
import com.ghgande.j2mod.modbus.procimg.SimpleDigitalIn;
import com.ghgande.j2mod.modbus.procimg.SimpleDigitalOut;
import com.ghgande.j2mod.modbus.procimg.SimpleProcessImage;
import com.ghgande.j2mod.modbus.serial.SerialParameters;
import com.ghgande.j2mod.modbus.serial.SerialPort;
import com.ghgande.j2mod.modbus.serial.SerialUtils;
import com.ghgande.j2mod.modbus.serial.SerialPortException;
import com.ghgande.j2mod.modbus.serial.SerialPortFactory;
import com.ghgande.j2mod.modbus.ModbusCoupler;

public class ModbusRTUServerExample {

    public static void main(String[] args) {
        try {
            // Create a process image with a single coil at address 0
            SimpleProcessImage spi = new SimpleProcessImage();
            spi.addDigitalOut(new SimpleDigitalOut(true)); // Coil at address 0
            spi.addDigitalIn(new SimpleDigitalIn(false)); // Input at address 1

            // Set up the serial parameters
            SerialParameters serialParameters = new SerialParameters();
            serialParameters.setCommPortId("COM3");
            serialParameters.setBaudRate(SerialPort.BAUD_9600);
            serialParameters.setDatabits(8);
            serialParameters.setParity(SerialPort.PARITY_NONE);
            serialParameters.setStopbits(1);
            serialParameters.setEncoding(Modbus.SERIAL_ENCODING_RTU);
            serialParameters.setEcho(false);

            // Create the Modbus RTU serial port
            SerialPort serialPort = SerialPortFactory.create(serialParameters);
            serialPort.open();

            // Set the serial port for ModbusCoupler
            ModbusCoupler.getReference().setMaster(false);
            ModbusCoupler.getReference().setUnitID(1);
            ModbusCoupler.getReference().setProcessImage(spi);
            ModbusCoupler.getReference().setSerialPort(serialPort);

            // Start the Modbus RTU server
            ModbusCoupler.getReference().start();

            System.out.println("Modbus RTU server is running...");

            // Wait forever (you can add your own logic here)
            while (true) {
                Thread.sleep(1000);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  1. 请注意,此示例中使用的串口是"COM3",你可能需要根据你的系统配置更改串口。确保你有足够的权限访问该串口。
相关推荐
数字新视界39 分钟前
动环监控信创适配助力机房管理智能化转型
物联网·数据中心·动环监控·微模块机房·模块化机房
乐橙开放平台5 小时前
物业 SaaS 笔记:子账号 Policy 按通道隔离,At_ 管控面 / St_ 数据面治理 accessToken
后端·物联网·音视频
DoLovya5 小时前
从零实现 ESP8266 + MQTT 智能门禁:公网一键开门、舵机控制、在线监控完整方案
python·物联网·mqtt·嵌入式·esp8266·门禁系统
悟天特斯6 小时前
智慧楼宇自控系统重构:从传统BA到AI自适应控制的架构演进
人工智能·物联网·重构·架构
绿智校园9 小时前
一套基座替代五类系统:DeepBasic Folar与传统BA/SCADA/IoT平台的架构对比
物联网·架构
钒星物联网10 小时前
自组网+Ku宽带卫星图传,为野保监测搭建空天地一体化高速通道
数码相机·物联网·卫星通信·红外相机·自组网·野外监测
MuMuMu122310 小时前
末端低碳物联网终端数据设计:越华环保集团碳惠小屋数据合规与适配方案
物联网
longxingiot11 小时前
智慧园区全域管控物联网主机应用
网络·物联网
研华科技Advantech11 小时前
Windows Server IoT 2025深度技术解析:功能、安全与AI性能突破
人工智能·物联网·安全
会周易的程序员21 小时前
aiDgePLC iec61131 虚拟机 完整使用文档
c++·物联网·架构·st·iec61131