若该文为原创文章,转载请注明原文出处
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/116196923

长期持续带来更多项目与技术分享,咨询请加QQ:21497936、微信:yangsir198808

红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门)

Qt开发专栏:三方库开发技术

前言

  本文章讲解libmodbus。

libModbus介绍

  libmodbus是一个免费软件库,可根据Modbus协议发送/接收数据。该库用C编写,并支持RTU(串行)和TCP(以太网)通信。

编译:平台windows + Qt5.9.3 + mingw32

步骤一:下载

  https://github.com/stephane/libmodbus
  QQ群下载地址:1047134658(点击“文件”搜索“modbus”,群内与博文同步更新)

步骤二:使用msys编译,配置好环境

  

步骤三:命令行引入mingw32环境变量

export PATH=$PATH:/mingw530_32/bin

步骤四:配置configure

cd /home/21497/compile/modbus
tar xvf libmodbus-3.1.6.tar.gz
cd libmodbus-3.1.6
./configure --prefix=/home/21497/compile/modbus/libmodbus-3.1.6/install

  
  错误,识别平台失败,如下图:
  

./configure --prefix=/home/21497/compile/modbus/libmodbus-3.1.6/install -build=x86

  是在mysy使用linux环境编译x86构架下的,如下图:
  

步骤五:编译make

make -j16

  
  再单线程确认一下
  

步骤六:安装make install

make install

  会出错,缺一些文件夹,手动自己建文件夹即可。
  

步骤七:读者请稍微核对下文件

  

模块化

  

Demo

bool ModbusManager::testEnvAndRtu()
{LOG << LIBMODBUS_VERSION_STRING;// 步骤一:创建modbus RTUmodbus_t *pModbus = 0;pModbus = modbus_new_rtu("com5",115200,'E',8,1);if(!pModbus){LOG << "Failed to modbus_new_rtu";return false;}LOG << "Succeed to modbus_new_rtu";// 步骤二: 485 RTU 模式modbus_rtu_set_serial_mode(pModbus, MODBUS_RTU_RS485);// 步骤三: 设置从机站号 1modbus_set_slave(pModbus, 1);// 步骤四:设置超时时间 100 msmodbus_set_response_timeout(pModbus, 0, 100 * 1000);// 步骤五: 连接 (注意:经过测试,只是485和232只是打开串口,并未交互)int ret = modbus_connect(pModbus);if(ret){LOG << "Failed to modbus_connect, ret =" << ret;return false;}LOG << "Succeed to modbus_connect, ret =" << ret;// 步骤六:读取线圈uint8_t buffer8t[10] = {0x00};ret = modbus_read_bits(pModbus, 25, 10, buffer8t);if(ret <= 0){LOG << "Failed to modbus_read_registers, ret =" << ret;return false;}LOG << "Succeed to modbus_read_registers, ret =" << ret;// 步骤七:打印返回for(int index = 0; index < 10; index++){LOG << QString("%1").arg(buffer8t[index]);}// 步骤八:读取寄存器uint16_t buffer16t[10] = {0x00};ret = modbus_read_registers(pModbus, 95, 10, buffer16t);if(ret <= 0){LOG << "Failed to modbus_read_registers, ret =" << ret;return false;}LOG << "Succeed to modbus_read_registers, ret =" << ret;// 步骤九:打印返回for(int index = 0; index < 10; index++){LOG << QString("%1").arg(buffer16t[index]);}// 步骤十:读取寄存器memset(buffer16t, 0, 10);ret = modbus_read_input_registers(pModbus, 100, 1, buffer16t);if(ret <= 0){LOG << "Failed to modbus_read_registers, ret =" << ret;return false;}LOG << "Succeed to modbus_read_input_registers, ret =" << ret;// 步骤十一:打印返回for(int index = 0; index < 10; index++){LOG << QString("%1").arg(buffer16t[index]);}return true;
}

Demo演示

  

工程模板

  modbusDemo_v1.0.0_基础模板_读取线圈_读取寄存器简单测试.rar

若该文为原创文章,转载请注明原文出处
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/116196923

LibModbus库开发笔记(一):libmodbus库介绍、编译和基础工程模板相关推荐

  1. STM32 HAL库学习笔记2 HAL库介绍

    STM32 HAL库学习笔记2 HAL库介绍 CMSIS标准 一.再次认识HAL库 HAL库设计思想 HAL库实现方式 以GPIO模块为例 GPIO外设数据类型 GPIO外设接口函数 二.使用HAL库 ...

  2. STM32CubeMX-HAL库开发笔记(常用语句)-基于Proteus仿真

    STM32CubeMX-HAL库开发笔记 前言 我自己刚刚开始学习STM32时,跟随正点原子课程,一节节课慢慢学,裸机开发可以深入了解和学习到寄存器内部,但是也偏无聊一点.后来,在做项目时,发现很难选 ...

  3. C语言学习笔记---001C语言的介绍,编译过程原理,工具等

    C语言学习笔记---001C语言的介绍,编译过程原理,工具等 创梦技术交流平台:资源下载,技术交流,网络赚钱: 交流qq群:1群:248318056 2群:251572072 技术交流平台:cre.i ...

  4. Hi3516开发笔记(三):Hi3516虚拟机基础环境搭建之交叉编译环境境搭建以及开机启动脚本分析

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/121458516 长期持续项目技术分享,Shang业Di ...

  5. Hi3516开发笔记(二):Hi3516虚拟机基础环境搭建之串口调试、网络连接以及sftp文件传输

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/121314575 长期持续项目技术分享,Shang业Di ...

  6. uboot开发笔记一之ralink mt7620编译

    uboot开发笔记一之ralink mt7620编译 参考: 1.MTK_Ralink_ApSoC_SDK_4200_20131106.tar.bz2,这个ralink的sdk网上有,自行搜索; MT ...

  7. JNI开发笔记(七)--aar库的生成和调用

    aar库的生成和调用 引 前言 1. 新建一个空工程 2. 新建一个Module 3. 移植JNI工程到Module中 4. 生成aar库与so库 5. 在另一个工程中调用aar库 引 JNI开发笔记 ...

  8. IOS开发笔记之常用库索引

    code4app.com 这网站不错,收集各种 iOS App 开发可以用到的代码示例  cocoacontrols.com/ 英文版本的lib收集  objclibs.com/ 精品lib的收集网站 ...

  9. Android开发笔记(三十二)文件基础操作

    File类 File类是java中的文件操作工具类,它的常用方法如下: File构造函数 : 根据文件路径构造File对象 delete : 删除文件 exists : 判断文件是否存在 getNam ...

  10. Android开发笔记(三十)SQLite数据库基础操作

    SQLite语法 SQLite是一个小巧的嵌入式数据库,使用方便.开发简单,手机上最早由ios运用,后来android兴起同样也采用了sqlite.sqlite的多数sql语法与oracle是一样的, ...

最新文章

  1. 移动端rem屏幕设置
  2. day23:shell基础介绍 alias及重定向
  3. C#开发Unity游戏教程之使用脚本变量
  4. 渗透知识-SSRF漏洞
  5. 计算机基础知识与基本操作txt,计算机基础知识复习-20210707023705.pdf-原创力文档...
  6. 服务器微信了早上好,微信问候语早上好 微信早上好经典问候语
  7. 迷宫搜索问题最短路_迷宫的最短路问题(水+BFS宽搜)
  8. xaml 的 intellisense失效的解决办法
  9. Mask Network与Conflux发起联合Bounty
  10. npm+node+cordova+ionic 版本匹配
  11. 【数据结构笔记】快速排序(quickSort)和快速选择(findKthLargest)--Python3
  12. mysql xa事务简单实现
  13. opencv小球与颜色识别
  14. React自定义视频全屏按钮
  15. 黑群晖折腾之安装Transmission下载有速度但是会自动暂停
  16. 计算机技术在通信应用文献,通信论文参考文献
  17. Linux 基础之基础网络ss命令
  18. HTML <style> 标签
  19. java集合之trove4j高性能集合库
  20. 标注相关的知识点:强制性标准与推荐性标准

热门文章

  1. 使用H5编写网页版象棋(源码)
  2. 【JavaScript游戏开发】使用HTML5 canvas开发的网页版中国象棋项目
  3. 【STC15】通过PWM波实现呼吸灯效果
  4. 跳过 Xcode 下载 iOS 模拟器
  5. mumu模拟器cpu设置_网易mc怎么提高fps
  6. SECS/GEM 基本概念介绍
  7. C# Ftp创建文件夹
  8. 经纬度转化为xy坐标系_高德地图经纬度导入Gis有偏移,纠正方法(附Python代码)丨GCJ-02转WGS84...
  9. Linux基础(三)安装及管理程序
  10. 设计模式 - 抽象工厂模式案例