VS编译和使用modbus库

news2024/12/24 3:15:38

一.libmodbus 库

免费的开源的,modbus 开发库,支持 RTU 和 TCP
官网:libmodbus.org
在线文档:https://libmodbus.org/reference/

二.源码简介

项目说明
doc 目录各 API 接口的详细说明文档
src 目录源码都在这个目录下
tests 目录自带的测试代码
src/win32 目录windows 平台下的项目文件(使用 VS)
Makefile.amlinux 平台下用于生成 makefile 文件
Modbus.c核心源码
Modbus.h libmodbus对外暴露的接口文件
Modbus-data.c实现数据处理的公用函数,比如大小端、位处理
Modbus-private.hlibmodbus 内部使用的数据结构和函数声明
Modbus-rtu.cRTU 模式相关的函数定义
Modbus-rtu.hRTU 模式对外提供的 API
Modbus-private.hRTU 模式内部使用的数据结构和函数声明
Modbus-tcp.cTCP 模式相关的函数定义
Modbus-tcp.hTCP 模式对外提供的 API
Modbus-tcp-private.hTCP 模式内部使用的数据结构和函数声明
Modbus-version.h.in版本定义

三.使用 VS 编译 modbus

  • VS2017 WIN32 平台
  1. 双击 configure.js 进行配置
  2. 使用 VS 打开解决方案:modbus-9.sln
  3. 对项目重新生成,编译失败。把 modbus-version.h 从项目中移除,再重新添加 src 目录下
    的 modbus-vsersion.h 文件
  4. 对项目重新生成,编译失败,提示:
    在这里插入图片描述
    在这里插入图片描述
    再次重新生成,得到如下两个库文件:
  • modbus.dll
  • modbus.lib

以上是调试模式下的库文件,把 VS 设置位 release 模式,重复以上步骤,即可得到 release
版本的库文件。

四.从站设置

  1. 硬件环境配置
  2. 使用虚拟串口工具,实现 com3 <->com4
  3. Modbus 从站设置:(使用 com4)

在这里插入图片描述

  • 内容设置
    在这里插入图片描述

五.vs2017使用modbus

  • 导入 libmodbus 相关的库和头文件:
    在这里插入图片描述
    在这里插入图片描述
  • 源码
#include <stdio.h>
#include "modbus.h"
#pragma comment(lib, "modbus.lib")
int main(void) {
uint16_t tab_reg[4];
modbus_t *mb = modbus_new_rtu("com3", 9600, 'N', 8, 1);
modbus_connect(mb);
modbus_set_slave(mb, 1);
modbus_read_registers(mb, 80, 4, tab_reg);
modbus_close(mb);
modbus_free(mb);
for (int i = 0; i < 4; i++) {
printf("%d ", tab_reg[i]);
}
return 0;
}

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

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

相关文章

【Redis从0到1进阶】Redis 持久化

笔记内容来自B站博主《遇见狂神说》&#xff1a;Redis视频链接 Redis 是内存数据库&#xff0c;如果不将内存中的数据库状态保存到磁盘&#xff0c;那么一旦服务器进程退出&#xff0c;服务器中的数据库状态也会消失。所有Redis 提供了持久化功能&#xff01; 一、RDB&#xff…

pixelRNN与pixelCNN

目的&#xff1a;为了找到一个最能解释得到的生成样本的模型 PixelRNN 我们需要利用概率链式法则将图像x的生成概率转变为每个像素生成概率的乘积&#xff0c;也就是每个通道生成概率的乘积。 公式&#xff1a; 公式解释&#xff1a;p(x)是每个图像x的概率&#xff1b;右侧为…

一文快速接入银行卡识别API

银行卡识别API 能通过机器学习和图像识别技术来解析银行卡相关信息&#xff0c;根据用户上传卡片自动识别内容&#xff0c;返回该卡的卡号、所属银行及银行类型等信息。可以在用户需要输入银行卡等相关信息时使用该功能&#xff0c;帮助用户快速输入正确信息&#xff0c;简化用…

PE文件(十一)移动导出表和重定位表

移动表的原因 一个PE文件中有很多节&#xff0c;每个节都存储不同的数据。而PE文件中的各种表也都分散存储在这些节当中。此时各种表的信息与程序的代码和数据相互混合在一起&#xff0c;如果我们直接对整个程序进行加密&#xff0c;那系统在初始化程序时就会出问题。比如&…

2024年7月9日~2024年7月15日周报

目录 一、前言 二、完成情况 2.1 特征图保存方法 2.1.1 定义网络模型 2.1.2 定义保存特征图的钩子函数 2.1.3 为模型层注册钩子 2.1.4 运行模型并检查特征图 2.2 实验情况 三、下周计划 一、前言 本周的7月11日~7月14日参加了机器培训的学习讨论会&#xff0c;对很多概…

iredmail服务器安装步骤详解!如何做配置?

iredmail服务器安全性设置指南&#xff1f;怎么升级邮件服务器&#xff1f; iredmail是一个功能强大的邮件服务器解决方案&#xff0c;它集成了多个开源软件&#xff0c;使您能够快速部署和管理邮件服务。AokSend将逐步引导您完成安装过程&#xff0c;无需深入的编程知识即可轻…

springboot的Filter过滤器拦截资源

配置拦截器&#xff0c;要加上ServletComponentScan和WebFilter(urlPatterns "/*")注解一起使用

基于Java的斗地主游戏案例开发(做牌、洗牌、发牌、看牌

package Game;import java.util.ArrayList; import java.util.Collections;public class PokerGame01 {//牌盒//♥3 ♣3static ArrayList<String> list new ArrayList<>();//静态代码块//特点&#xff1a;随着类的加载而在加载的&#xff0c;而且只执行一次。stat…

如何评估代理的可靠性和安全性

使用IP代理最主要的是要看是否安全&#xff0c;代理IP是否稳定可靠&#xff0c;但是又如何评估一个代理IP的安全性与可靠性呢&#xff0c;下面具体介绍一下。 评估代理的可靠性 服务稳定性 代理服务的稳定性直接影响到业务的连续性和效率。评估代理的服务稳定性重点查看下面…

vue2学习笔记1-官网使用指南和搭建开发环境

官网使用指南 官网地址&#xff1a;介绍 — Vue.js 1、学习 1.1 教程和API 最重要的两个板块。API是VUE的字典&#xff0c;需要时来查阅。 1.2、风格指南 如何写出风格优雅的VUE代码。规则分为四类&#xff1a;必要的&#xff0c;强烈推荐、推荐、谨慎使用。 1.3、示例 …

正点原子STM32(基于HAL库)6

目录 TFTLCD&#xff08;MCU 屏&#xff09;实验TFTLCD 简介TFTLCD 简介液晶显示控制器FSMC 简介FSMC 关联寄存器简介 硬件设计程序设计FSMC 和SRAM 的HAL 库驱动程序流程图程序解析 下载验证 LTDC LCD&#xff08;RGB 屏&#xff09;实验RGBLCD<DC 简介RGBLCD 简介LTDC 简介…

使用Keepalived实现双机热备(虚拟漂移IP地址)详细介绍

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f427;Linux基础知识(初学)&#xff1a;点击&#xff01; &#x1f427;Linux高级管理防护和群集专栏&#xff1a;点击&#xff01; &#x1f510;Linux中firewalld防火墙&#xff1a;点击&#xff01; ⏰️创作…

影响代理运行速度的因素有哪些?

在当今数字化时代&#xff0c;代理服务器被广泛应用于网络接入、数据收集、隐私保护等各种场景。然而代理服务器的运行速度对用户体验和运行效率至关重要。在本文中&#xff0c;我们将讨论影响代理运行速度的主要因素&#xff0c;并介绍如何优化代理服务器以提高运行速度。 第一…

解决ESLint和Prettier冲突的问题

在配置了ESLint的项目中使用Prettier进行格式化可能会出现冲突&#xff0c;不如Prettier配置了使用双引号&#xff0c;ESLint配置了单引号&#xff0c;当然可以一个一个改成一样的配置&#xff0c;但是比较麻烦。我发现可以直接使用ESLint的规则进行格式化。在VSCode配置过程如…

【Orange Pi AIpro测评】基于OrangePi AIpro开发板从零搭建部署小雅影音库

文章目录 一、OrangePi AIpro介绍1.1 OrangePi AIpro 实物图1.2 OrangePi AIpro 示意图1.3 OrangePi AIpro详细信息介绍 二、为 OrangePi 安装 xfce4 桌面及 VNC 服务三、将 Ubuntu 镜像烧写到 TF 卡四、将 Ubuntu 镜像烧写到 NVMe SSD五、远程连接OrangePi AIpro的方式5.1 通过…

[C/C++入门][变量和运算]7、交换变量(空杯思想)

计算机中交换变量的值&#xff0c;可谓是非常常见&#xff0c;常见到几乎考试卷子里都有它。 如图&#xff0c;一杯牛奶&#xff0c;一杯咖啡&#xff0c;如何进行交换呢&#xff1f; 相信懂的都懂&#xff0c;不懂的看完这个图也就懂了。 生活中非常简单的例子&#xff0c;放…

新160个crackme - 003-Cruehead-CrackMe-3

运行分析 发现只有一个退出 PE分析 32位&#xff0c;未知程序&#xff0c;壳未知 静态分析 发现关键字符串 找到关键函数&#xff0c;分析函数&#xff0c;设置断点 动态调试 到断点到if语句&#xff0c;tab键切换至汇编代码 找到跳转语句 右键Assemble jnz改为jz然后回…

Matlab 判断直线上一点

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 判断一个点是否位于一直线上有很多方法,这里使用一种很有趣的坐标:Plucker线坐标,它的定义如下所示: 这个坐标有个很有趣的性质,我们可以使用Plucker坐标矢量构建一个Plucker矩阵: 则它与位于对应线上的齐次点…

LaTeX教程(015)-LaTeX文档结构(15)

LaTeX教程(015)- LaTeX \LaTeX LATE​X文档结构(15) 2.4 管理引用 LaTeX \LaTeX LATE​X有一些命令能够很容易的管理文档中的引用。它支持交叉引用(cross-references&#xff0c;文档内部对象的引用)&#xff0c;文献引用(bibliographic&#xff0c;对外部文档的引用)&#xf…

【UNI-APP】阿里NLS一句话听写typescript模块

阿里提供的demo代码都是javascript&#xff0c;自己捏个轮子。参考着自己写了一个阿里巴巴一句话听写Nls的typescript模块。VUE3的组合式API形式 startClient&#xff1a;开始听写&#xff0c;注意下一步要尽快开启识别和传数据&#xff0c;否则6秒后会关闭 startRecognition…