Windows下libmodbus 支持upd库的编译与Qt里的调用

一. libmodbus 支持udp版库下载
https://github.com/systemmonkey42/libmodbus/tree/udp_support
二. MSYS2编译工具安装
(1)下载MSYS2并安装
下载地址:https://www.msys2.org/Windows下libmodbus 支持upd库的编译与Qt里的调用_第1张图片
Windows下libmodbus 支持upd库的编译与Qt里的调用_第2张图片
双击该exe,安装msys2
Windows下libmodbus 支持upd库的编译与Qt里的调用_第3张图片
(2) 安装编译所需库
在软件安装后所在位置,找到MINGW64.exe并打开
Windows下libmodbus 支持upd库的编译与Qt里的调用_第4张图片
更新msys2,在命令行里输入pacman -Syu

pacman -Syu

Windows下libmodbus 支持upd库的编译与Qt里的调用_第5张图片
之后会提示更新完成,需要关闭MSYS2方可成功,如下图输入Y后按下回车键,MSYS2会自动关闭

重新打开MSYS2,输入如下命令安装gcc

pacman -S mingw-w64-x86_64-gcc

Windows下libmodbus 支持upd库的编译与Qt里的调用_第6张图片输入如下代码安装automake

pacman -S automake

Windows下libmodbus 支持upd库的编译与Qt里的调用_第7张图片
输入如下代码,安装libtool

pacman -S libtool

Windows下libmodbus 支持upd库的编译与Qt里的调用_第8张图片
autoconf-wrapper 所需库安装

pacman -S autoconf-wrapper

Windows下libmodbus 支持upd库的编译与Qt里的调用_第9张图片
三. 编译libmodbus库
(1) 打开libmodbus的解压文件,注意到里面的autogen.sh文件
Windows下libmodbus 支持upd库的编译与Qt里的调用_第10张图片
(2) 进入autogen.sh 所在目录后,输入如下命令

./autogen.sh

(3) 继续输入命令

./configure

在这里插入图片描述
(4)至此完成了对libmodbus在Windows下的编译过程

四.libmodbus导入Qt Creator中使用的方式
(1) 新建一个mymodbusTest工程,同时在工程目录下创建libmodbus目录名
(2) 将modbus编译后生成的config.h 以及src目录下所有的.c .h 文件,全部复制到libmodbus目录中
Windows下libmodbus 支持upd库的编译与Qt里的调用_第11张图片
Windows下libmodbus 支持upd库的编译与Qt里的调用_第12张图片
(3) 通过添加现有文件,将这些libmodbus库文件添加到qt工程中
Windows下libmodbus 支持upd库的编译与Qt里的调用_第13张图片
(4) ws2_32.dll库文件的复制
打开C:Windows\System32
Windows下libmodbus 支持upd库的编译与Qt里的调用_第14张图片
复制后结果如下:
Windows下libmodbus 支持upd库的编译与Qt里的调用_第15张图片
(5) 在.pro文件中加上”LIBS += -Ldll -lws2_32”
(6) 修改libmodbus文件夹下的modbus-private.hmodbus.c代码中的 #include #include
(7) 更改modbus-udp.c文件代码
Windows下libmodbus 支持upd库的编译与Qt里的调用_第16张图片
(8) 在main.cpp文件中编写如下代码,测试udp

#include 
#include 
#include

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    modbus_t *ctx;

    // 创建一个 libmodbus 上下文
    ctx = modbus_new_udp("127.0.0.1", 502);
    if (ctx == NULL) {
        qDebug() << "Failed to create MODBUS context.";
        return 1;
    }

    // 连接到远程 MODBUS 服务器
    if (modbus_connect(ctx) == -1) {
        qDebug() << "Failed to connect to MODBUS server.";
        modbus_free(ctx);
        return 1;
    }

    // 读取一个寄存器的值
    uint16_t reg_value[5];
    int rc = modbus_read_registers(ctx, 0, 5, reg_value);
    if (rc == -1) {
        qDebug() << "Failed to read MODBUS register.";
    } else {
//        qDebug() << "MODBUS register value:" << reg_value[1];
        for (int i = 0; i < rc; ++i) {
             printf("%u ", reg_value[i]);
         }
    }

    // 断开与远程 MODBUS 服务器的连接
    modbus_close(ctx);
    modbus_free(ctx);

    return a.exec();
}

(9) 使用modbus slave软件测试
Windows下libmodbus 支持upd库的编译与Qt里的调用_第17张图片
附:相关软件下载,需要请留言
msys2 下载
链接:https://pan.baidu.com/s/1df3N5oDvQhApMNM2dNZcow

libmodbus-udp_support.zip
链接:https://pan.baidu.com/s/1m7sUtjGE-47a0wOJAYeETw

mbslaveX64.exe
链接:https://pan.baidu.com/s/1nxcN9kIUVwSMTGGjjiMCUA

你可能感兴趣的:(libmodbus,windows,qt,开发语言)