【开源视频联动物联网平台】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",你可能需要根据你的系统配置更改串口。确保你有足够的权限访问该串口。
相关推荐
码流子9 小时前
AI稽核精灵-Agent落地
大数据·人工智能·物联网·算法·系统架构
刚及格的陆拾伍9 小时前
Wi-Fi核心知识精要:从频段到帧结构全解析
网络·物联网·网络协议·信息与通信·iot
会议咨询10 小时前
2026年物联网、电气与信息经济国际会议(ITEIE 2026)
物联网·电气·信息经济
Hespethorn12 小时前
洪泛、路由、网络栈:LoRa 自组网三条路线的设计取舍与量化对比
物联网·嵌入式
科技重器12 小时前
京东方中央研究院推出高灵敏度电化学生物传感器芯片,为疾病早筛提供“芯”守护
人工智能·物联网
乐讯通物联网服务商15 小时前
智能心电监护仪接入物联网:低功耗远程监测方案设计与实践
物联网·物联网卡·智能心电监护仪
魔猴疯猿1 天前
香橙派(Orange Pi)入门使用教程:从开箱到跑通第一个项目
单片机·嵌入式硬件·物联网
温柔章鱼哥1 天前
端边云协同物联网开发平台有哪些供应商?完整平台方案梳理
物联网
智鸟科技GemeOpen开发者智能设备1 天前
智能插座二次开发如何接入Home Assistant,从零开始完整工程实现(Python+React)
开发语言·python·物联网·react.js·智能家居
TDengine (老段)1 天前
TDengine TSDB 实战排障四(升级与兼容)
android·java·大数据·数据库·物联网·时序数据库·tdengine