通过前面三篇文章,基本上可以了解基于libmodbus库的开发流程,而libmodbus比较牛的地方,不仅仅可以实现modbus RTU的支持,它还支持modbus TCP,而且由于采用了所谓的后端函数,也就是提供了 标准 通用的 API接口,所以开发modbus TCP的主从设备,与开发modbus RTU的流程基本上是一致的,不同的地方也只是一些 细微的函数区别,这个可以参考libmodbus源文件中的test文件夹提供的几个案例框架。

总结:libmodbus这个modbus协议库,对于进行linux应用下的modbus通信开发,简直就是一款神器,能够极大的 方便应用程序的开发,当我们了解了其中的构造原理后,我们能够很容易的开发各种modbus通信应用程序,在抛开稳定性的前提下,它的优势是比 freemodbus要强很多的,freemodbus需要对源码理解的特别深才行,因为需要将freemodbus的源码嵌入到我们的系统代码中,而且freemodbus目前还只是支持 modbus slave,也就是从机。而libmodbus最擅长的就是modbus master,如果libmodbus稳定性也可以的话,我们就可以在一些复杂的 modbus 网关中使用libmodbus,实现一些复杂的modbus应用场景。

libmodbus不适合应用于非Linux/Windows 环境下的开发,比如就不适合小型嵌入式硬件STM32开发,为什么呢?这个跟大小关系反而不大,主要是因为libmodbus的各种API函数的实现是通过Linux、Windows的各种API函数,比如说在Linux进行modbus rtu开发时,串口的接收采用了select机制的,而STM32的IDE环境,很显然是不支持这个的,所以在小型系统中,还是老老实实的使用freemodbus吧,这也算是freemodbus的优点了,freemodbus之所以既能在非linux下使用,又能在linux下移值,是通过不同的代码函数来实现的,比如,非linux下,通过定时器计时+串口中断接收数据,而linux下则是通过select机制。这个看它的源码就 很容易发现了,所以需要程序员对源码很熟悉。

libmodbus协议栈4—— 总结相关推荐

  1. MAC Book Pro 使用 libmodbus

    写在前面 帮助朋友调试 MODBUS 通信设备,MODBUS 协议栈以前写过,但是这次也不想自己从头写一个 MODBUS 协议栈,太烦了.所以在 GitHub 上找到了 libModbus. libM ...

  2. STM32CubeMX | Modbus RTU 主机协议栈实现(国产单片机、FreeModbus无缝使用)

    STM32CubeMX | Modbus RTU 主机协议栈实现 目录 1.前言 2.协议栈API介绍 2.1 控制结构 2.2 主机读线圈状态(CMD1) 2.2 主机读离散量输入(CMD2) 2. ...

  3. 2021年大数据ELK(一):集中式日志协议栈Elastic Stack简介

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 一.简介 二.ELK 协议栈介绍及体系结构 三.集中式日志协议栈 ...

  4. mac 思科 链路聚合_TCP/IP协议栈-之-数据链路层分析

    数据链路层 一.数据链路层的概述 1.1 概述 数据链路层是TCP/IP协议栈的第二层! 数据链路层的传输单元:帧(也就是传输单位) 1.2 帧结构 帧结构分析如下: 帧结构的构成:MAC子层 + 上 ...

  5. TCP/IP 协议栈4层结构及3次握手4次挥手

    TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输.TCP/IP 协议采用4层结构,分别是应用层.传输层.网络层和链路 ...

  6. Linux TCP/IP协议栈笔记

    数据包的接收 作者:kendo Kernel:2.6.12 一.从网卡说起 这并非是一个网卡驱动分析的专门文档,只是对网卡处理数据包的流程进行一个重点的分析.这里以Intel的e100驱动为例进行分析 ...

  7. 【modbus】libmodbus库的移植与使用

    一.源码下载 1.libmodbus官网     http://libmodbus.org/download/ 2.选择长期稳定版本libmodbus-3.0.6.tar.gz     下载链接:ht ...

  8. OSI七层 TCP/IP四层 TCP/IP协议栈: 不同的通信协议的大集合

    应用层: 网络服务与最终用户的一个接口. 协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP 表示层: 数据的表示.安全.压缩.(在五层模型里 ...

  9. 为什么我们使用Linux内核的(网络)协议栈?

    1,内核态协议栈可以为多个网络应用服务,用户态协议栈就不行.比如DPDK,它会将网卡从内核unbind,然后自己独占. 2,内核态协议栈提供了丰富的协议支持/调试手段,稳定性也经过时间的检验.反观用户 ...

最新文章

  1. swift实现提示框第三方库:MBProgressHUD
  2. windows查看Python安装目录
  3. Flink从入门到精通100篇(十八)-CentOS环境中搭建Flink分布式集群
  4. C++中ASCII、unicode与Utf8之间的相互转化
  5. java编写正则表达式_如何用Java编写最快的表达式评估器之一
  6. 使用JPA和Hibernate有效删除数据
  7. PyTorch框架学习十六——正则化与Dropout
  8. 低代码发展专访系列之八:低代码平台能够打破企业「应用孤岛」现象吗?
  9. StyleGAN进化过程详解
  10. 服务器消息不是按顺序来的,消息队列之 RocketMQ(示例代码)
  11. 【Python-3.3】使用while循环实现列表间数据移动
  12. 漫谈依赖管理工具:从Maven,Gradle到Go
  13. View和ViewGroup
  14. 批量修改文件夹中文件的后缀名
  15. 面试题:群聊消息的已读未读设计
  16. CF卡插到时显示函数不正确请问咋才能修复?
  17. svn提示没有设置冲突_SVN冲突以及解决办法
  18. Mac的esc键失效的解决方法
  19. FileZilla远程上传文件失败原因和解决办法
  20. 手机上将png转pdf_如何在Linux上将多个jpg图像合并为pdf?

热门文章

  1. 西北工业大学计算机学院王鹏,王鹏的个人主页-西北工业大学教师个人主页
  2. 【佛系养身】男程序员护肤入门
  3. Matlab小课堂3
  4. 在云端管理您的所有身份(AAD)-第二部分
  5. layim之邀请好友加入群组
  6. win10怎么将计算机放桌面壁纸,Win10专业版无法设置电脑桌面壁纸怎么办?
  7. (有趣)把文字隐藏到图片中
  8. easyexcel操作遇到的坑
  9. Python分布式动态页面爬虫研究
  10. 访外国语学院05年毕业生潘锐师姐