目录
前言
库介绍
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