[开源库的使用]libModbus编译及使用

开源 0

目录

前言

库介绍

libModbus下载及编译

下载

编译

1.进到libmodbus/src/win32目录中,实际路径看使用者具体情况

2.运行 configure.js,依次生成必要文件

3.使用vs2019打开 modbus-9.sln,确认升级

4.Win32下的Debug、Release可以直接编译

5.X64编译

5.1进配置管理器增加X64

5.2进入项目属性编辑器

5.2.1在配置属性=常规-配置类型中,将Debug、Release配置类型均修改为“动态库(.dll)”

5.2.2在配置属性-C/C++-预处理器-预处理器定义中,

5.2.3在配置属性-链接器-输入-附加依赖项,Debug、Release均修改为

5.2.3X64下Debug、Release分别编译即可,注意生成的文件在X64文件夹内

libModbus简单应用

1.新建Qt工程,配置属性-C/C++-附件包含目录,按实际情况添加libModbus相关头文件

2.配置属性-链接器-常规-附加库目录,按实际情况添加libModbus生成的lib

3.如果需要,可以在配置属性-生成事件-生成后事件-命令行中,添加命令,将打印信息输出到Console,方便调试Modbus

4.将modbus.dll放到项目工作目录

5.添加代码

6.验证结果


前言

本文将libModbus编译经过进行分享,介绍Windows平台下libModbus的编译及使用,基于VS2019。

库介绍

libModbus官网libmodbus。是遵循开源协议LGPL-2.1-or-later的一款开源软件。请大家自行研判使用条款及风险。

文末有编译好的.dll .lib,方便大家。压缩包解压密码:123。

libModbus下载及编译

下载

libModbus位于github,GitHub - stephane/libmodbus: A Modbus library for Linux, Mac OS, FreeBSD and Windows

可以点击链接跳转到CSDN推荐的加速站点下载

也可以直接使用命令下载:git clone https://github.com/stephane/libmodbus.git

编译

1.进到libmodbus/src/win32目录中,实际路径看使用者具体情况

2.运行 configure.js,依次生成必要文件

3.使用vs2019打开 modbus-9.sln,确认升级

4.Win32下的Debug、Release可以直接编译

Debug编译结果

Release编译结果

5.X64编译

5.1进配置管理器增加X64

5.2进入项目属性编辑器

5.2.1在配置属性=常规-配置类型中,将Debug、Release配置类型均修改为“动态库(.dll)”

5.2.2在配置属性-C/C++-预处理器-预处理器定义中,

Debug修改为

HAVE_CONFIG_H;DLLBUILD;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NONSTDC_NO_DEPRECATE=1;_WINDLL;%(PreprocessorDefinitions)

Release修改为

HAVE_CONFIG_H;DLLBUILD;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NONSTDC_NO_DEPRECATE=1;_WINDLL;%(PreprocessorDefinitions);

5.2.3在配置属性-链接器-输入-附加依赖项,Debug、Release均修改为

ws2_32.lib;%(AdditionalDependencies)

5.2.3X64下Debug、Release分别编译即可,注意生成的文件在X64文件夹内

libModbus简单应用

1.新建Qt工程,配置属性-C/C++-附件包含目录,按实际情况添加libModbus相关头文件

$(ProjectDir)/libModbus/include;

2.配置属性-链接器-常规-附加库目录,按实际情况添加libModbus生成的lib

$(ProjectDir)/libModbus/lib;

3.如果需要,可以在配置属性-生成事件-生成后事件-命令行中,添加命令,将打印信息输出到Console,方便调试Modbus

editbin /SUBSYSTEM:CONSOLE $(OUTDIR)/$(ProjectName).exe

4.将modbus.dll放到项目工作目录

5.添加代码

添加头文件引用

#include "modbus.h"#pragma comment(lib, "modbus.lib")

声明变量

    modbus_t * pModbus;

往前8个寄存器写入随机数

    pModbus = modbus_new_rtu("COM8", 115200, 'N', 8, 1);    qDebug() << modbus_set_debug(pModbus, true);    qDebug() << modbus_rtu_set_serial_mode(pModbus, MODBUS_RTU_RS485);    qDebug() << modbus_set_slave(pModbus, 1);    qDebug() << modbus_set_response_timeout(pModbus, 0, 200 * 1000);    qDebug() << modbus_connect(pModbus);    uint16_t buffer[8] = { 0 };    qDebug() << "generate random registers";    for (int i = 0; i < 8; i++)    {        buffer[i] = rand();        qDebug() << buffer[i];    }    qDebug() << modbus_write_registers(pModbus, 0, 8, buffer);    qDebug() << modbus_read_registers(pModbus, 0, 8, buffer);

6.验证结果

可以看到,随机生成的数据已经成功写入到对应的寄存器

编译结果

编译完成的libModbus

https://download.csdn.net/download/wuqunce/88640535

文章中开发好的简单Demo

https://download.csdn.net/download/wuqunce/88642528

使用的环境为,Qt-opensource-windows-x86-5.9.4,vs2017,qt-vsaddin-msvc2017-2.10.1-rev.2

也许您对下面的内容还感兴趣: