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

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

pacman -Syu

在这里插入图片描述
之后会提示更新完成,需要关闭MSYS2方可成功,如下图输入Y后按下回车键,MSYS2会自动关闭

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

pacman -S mingw-w64-x86_64-gcc

在这里插入图片描述输入如下代码安装automake

pacman -S automake

在这里插入图片描述
输入如下代码,安装libtool

pacman -S libtool

在这里插入图片描述
autoconf-wrapper 所需库安装

pacman -S autoconf-wrapper

在这里插入图片描述
三. 编译libmodbus库
(1) 打开libmodbus的解压文件,注意到里面的autogen.sh文件
在这里插入图片描述
(2) 进入autogen.sh 所在目录后,输入如下命令

./autogen.sh

(3) 继续输入命令

./configure

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

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

#include <QCoreApplication>
#include <QDebug>
#include<libmodbus/modbus.h>

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软件测试
在这里插入图片描述
附:相关软件下载,需要请留言
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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值