Modbus协议学习第七篇之libmodbus库API介绍(modbus_write_bits等)

写在前面

        在第六篇中我们介绍了基于libmodbus库的演示代码,那本篇博客就详细介绍一下第六篇的代码中使用的基于该库的API函数。另各位读者,Modbus相关知识受众较少,如果觉得我的专栏文章有帮助,请一定点个赞,在此跪谢,这是我能持续更下去的动力!

API介绍

modbus_new_rtu() 

        完整函数签名为:

modbus_t *modbus_new_rtu(const char *device, int baud, char parity, int data_bit, int stop_bit);

        函数功能介绍(原文):The modbus_new_rtu() function shall allocate and initialize a modbus_t structure to communicate in RTU mode on a serial line.

        翻译一下就是:该方法将会分配并初始化一个modbus_t的结构体,以在串行线上进行RTU模式的通信,即可以理解为建立一个RTU容器。具体的参数含义介绍如下:


modbus_set_slave()

        完整的函数签名为:

int modbus_set_slave(modbus_t *ctx, int slave);

        函数功能介绍(原文):The modbus_set_slave() function shall set the slave number in the libmodbus context.

        翻译一下就是:该方法将会在libmodbus上下文中设置从机号。即先调用modbus_new_rtu()函数来生成一个上下文,然后再在这个上下文中设置你想要进行通讯的从机号,即在modbus slave中设置的Slave ID。具体参数含义介绍如下:


modbus_connect()

         完整的函数签名为:

int modbus_connect(modbus_t *ctx);

        函数功能介绍:The modbus_connect() function shall establish a connection to a Modbus server, a network or a bus using the context information of libmodbus context given in argument.

        翻译一下就是:基于前面给定的libmodbus上下文来建立一个连接,连接正常建立后,即可开始进行通信。参数无需介绍,即libmodbus上下文。


modbus_write_bit()

        完整的函数签名为:

int modbus_write_bit(modbus_t *ctx, int addr, int status);

        函数功能介绍:The modbus_write_bit() function shall write the status of status at the address addr of the remote device. The value must be set to TRUE or FALSE.

        翻译一下就是:该方法将会在远端设备的指定addr处将状态值写入(值为0或1,即TRUE or FALSE),具体参数介绍如下:


modbus_read_bits()

        完整的函数签名为:

int modbus_read_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest);

        函数功能介绍:The modbus_read_bits() function shall read the status of the nb bits (coils) to the address addr of the remote device. The result of reading is stored in dest array as unsigned bytes (8 bits) set to TRUE or FALSE.

        翻译一下就是:该方法将会读取远端设备指定addr地址的nb个bit的状态信息,然后将其值存入到dest数组中。具体参数介绍如下:


modbus_write_bits()

        完整的函数签名为:

int modbus_write_bits(modbus_t *ctx, int addr, int nb, const uint8_t *src);

        与前面介绍的modbus_write_bit()类似,只不过这个是批量对远端设备进行写入,待写入的值存储在src中。src数组中的值必须包含状态值。

        另外还有很多读写方法,类似modbus_write_registers()等等,大家可以去官网进行查阅并理解,传送门:libmodbus reference.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/663909.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

golang网络编程day3

golang网络编程day3 golang TCP聊天室golang UDP聊天室URL组成golang URL编程golang http编程http请求方法golanghttp框架 golang TCP聊天室 看懂例子把它理解好,知道实现的原理是什么,还可以自己实现出来。 忘了就看day2的讲解,里面的函数…

自然语言处理(NLP)—— Dialogflow ES聊天机器人

1. 背景介绍 这个实验室的目标是让你了解并使用Google的Dialogflow服务。Dialogflow是一个可以让你创建聊天机器人的服务,这个过程不需要或者只需要很少的编程技能。 1.1 账号的创建 为了完成这个实验室,你需要在以下网站上创建账号&#xff1a…

网络安全之SSL证书加密

简介 SSL证书是一种数字证书,遵守SSL协议,由受信任的数字证书颁发机构(CA)验证服务器身份后颁发。它具有服务器身份验证和数据传输加密的功能,能够确保数据在传输过程中的安全性和完整性。 具体来说,SSL证…

three.js CSS3DObject、CSS2DObject、CSS3DSprite、Sprite的作为标签的区别

CSS3DObject、CSS2DObject、CSS3DSprite、Sprite的作为标签的区别 是否面向相机场景缩放时,是否会跟随是否会被模型遮挡CSS2DObject是否否CSS3DObject否是否CSS3DSprite是是是Sprite是是是 CSS3DObject 和 CSS3DRenderer 搭配来渲染标签; CSS2DObject …

excel统计分析——卡方独立性检验(下)

参考资料:生物统计学 书接上文:https://blog.csdn.net/maizeman126/article/details/135893731 2、配对列联表 配对设计的数据,进行列联表检验时,采用McNemar-Bowker检验法进行检验。检验统计量为: 自由度dfk(k-1)/2…

部署私有知识库项目FastGPT

FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景。 项目文档: [快速了解 FastGpt | FastGptFastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即…

Jmeter直连mysql数据库教程

mysql数据库能够通过Navicat等远程连接工具连接 下载驱动并加入jmeter 1.mysql驱动下载地址:MySQL :: Download MySQL Connector/J (Archived Versions) 找到对应的驱动下载:如下图: 把驱动jar包加入jmeter 配置jmeter连接mysql数据库…

计算机专业一定要参加蓝桥杯吗

蓝桥杯对于计算机专业的学生来说是一个非常重要的赛事,主要有以下几个原因: 提升知识和技能水平:蓝桥杯涵盖了计算机专业的多个方向,包括软件、硬件、网络等。通过参加蓝桥杯,学生可以将所学的知识与实际应用相结合&a…

RK3588 Android 12 Framework修改记录(八)Settings Ethernet以太网 多网卡设置静态IP

https://blog.csdn.net/lishu_/article/details/114391764 如何优雅的实现Android Ethernet 以太网的开启与关闭 RK3588 Android 12 Framework修改记录(八)Settings Ethernet以太网 多网卡设置静态IP - 知乎 Android 7.1 以太网反射 EthernetManager 配置…

【C语言刷题系列】喝汽水问题

文章目录 一、文章简介 1.先买再换 1.1 代码逻辑: 1.2 完整代码 1.3 运行结果 1.4 根据方法一总结优化 2.边买边换 2.1 代码逻辑: 2.2 完整代码 2.3 运行结果 一、文章简介 本文所述专栏——C语言经典编程问题 C语言刷题_倔强的石头106的博客…

Linux操作系统——管道(二) 进程池

概念层面理解进程池 比如说我们一开始有一个父进程,分别创建5个管道,5个子进程,这5个子进程都向管道里面进行读取,而我们对应的父进程,因为我们前面谈过管道的4种情况里面,有一个种情况是,正常…

vcruntime140.dll怎么下载安装,vcruntime140.dll详细安装教程

vcruntime140.dll’,这个看似陌生而又技术性的文件名,实际上是计算机系统中一个至关重要的动态链接库文件。它是Visual C Redistributable运行时组件的一部分,由微软公司开发并维护,对于许多基于Windows操作系统的软件正常运行起着…

在 SQL Server 中使用 SQL 语句查询不同时间范围的数据

在 SQL Server 中,我们经常需要从数据库中检索特定时间范围内的数据。通过合理运用 SQL 语句,我们可以轻松地查询今天、昨天、近7天、近30天、一个月内、上一月、本年和去年的数据。下面是一些示例 SQL 查询,让我们逐一了解。 查询今天的数据…

PEI是聚醚酰亚胺(Polyetherimide)在粘接使用时使用UV胶水的优势有哪些?要注意哪些事项?

在使用UV胶水进行聚醚酰亚胺(Polyetherimide,PEI)粘接时,有一些优势和注意事项: 优势: 1.快速固化: UV胶水具有快速固化的特性,通过紫外线光源的照射,可以在几秒到几分钟…

Oracle PL/SQL Programming 第5章:Iterative Processing with Loops 读书笔记

总的目录和进度,请参见开始读 Oracle PL/SQL Programming 第6版 本章探讨 PL/SQL 的迭代控制结构(也称为循环),它允许您重复执行相同的代码。 PL/SQL 提供了三种不同类型的循环结构: 简单或无限循环FOR 循环&#x…

MQTT环境搭建

本文介绍了MQTT测试环境的搭建过程和测试时使用的命令,对需要使用MQTT协议的相关开发人员有一定的帮助。 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)。 MQTT是 ISO 标准(ISO/IEC PRF 20922&#xf…

国标GB/T 28181详解:GB/T28181状态信息报送流程

目 录 一、状态信息报送 二、状态信息报送的基本要求 三、命令流程 1、流程图 2、流程描述 四、协议接口 五、产品说明 六、状态信息报送的作用 七、参考 在国标GBT28181中,定义了状态信息报送的流程,当源设备(包括网关、SIP 设备、SIP 客…

ThinkPHP6的助手函数汇总

原文地址 abort(): 抛出 HTTP 异常 1. /** 2. * 抛出 HTTP 异常 3. * param integer|Response $code 状态码 或者 Response 对象实例 4. * param string $message 错误信息 5. * param array $header 参数 6. */ 7. abort($code, string…

关于可变类型和不可变类型的探究

个人猜想(很遗憾失败了) 在硬盘或者系统中存在一个字符集 如果存在硬盘中,那么硬盘出厂的时候他的字符集所占用的空间就已经确定了。 如果存在于系统的话,硬盘应该在出厂的时候为系统设置一个存储系统字符集的地方。在安装系统…

数据库建模之PowerDesigner创建概念模型

数据模型(Data Model)是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供一个抽象的框架。数据模型所描述的内容有三部分,分别是数据结构、数据操作和数据约…