当前位置:   article > 正文

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

libmodbus库

目录

前言

库介绍

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.添加代码

添加头文件引用

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

声明变量

    modbus_t * pModbus;

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

  1. pModbus = modbus_new_rtu("COM8", 115200, 'N', 8, 1);
  2. qDebug() << modbus_set_debug(pModbus, true);
  3. qDebug() << modbus_rtu_set_serial_mode(pModbus, MODBUS_RTU_RS485);
  4. qDebug() << modbus_set_slave(pModbus, 1);
  5. qDebug() << modbus_set_response_timeout(pModbus, 0, 200 * 1000);
  6. qDebug() << modbus_connect(pModbus);
  7. uint16_t buffer[8] = { 0 };
  8. qDebug() << "generate random registers";
  9. for (int i = 0; i < 8; i++)
  10. {
  11. buffer[i] = rand();
  12. qDebug() << buffer[i];
  13. }
  14. qDebug() << modbus_write_registers(pModbus, 0, 8, buffer);
  15. 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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/566093
推荐阅读
相关标签
  

闽ICP备14008679号