当前位置: 首页 > news >正文

VS编译和使用modbus库

一.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;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Typescript 的联合类型和交叉类型
  • 【C++语言】正则表达式
  • 主机安全-进程、命令攻击与检测
  • 哪些事件会导致浏览器窗口宽高变化
  • 使用jsencrypt在web前端对字符串进行Ras加密
  • MySQL 日志深度解析:从查询执行到性能优化
  • 从零开始实现大语言模型(五):缩放点积注意力机制
  • idea启动ssm项目详细教程
  • llama-recipes
  • YOLO v8进行目标检测的遇到的bug小结
  • 澳门建筑插画:成都亚恒丰创教育科技有限公司
  • 【操作系统】进程管理——死锁(个人笔记)
  • IP 地址与 CDN 性能优化
  • java.lang.NullPointerException: null cannot be cast to non-null type kotlin.Int
  • 【系统架构设计】计算机组成与体系结构(三)
  • 2019.2.20 c++ 知识梳理
  • css布局,左右固定中间自适应实现
  • eclipse的离线汉化
  • gulp 教程
  • JS 面试题总结
  • JS实现简单的MVC模式开发小游戏
  • laravel with 查询列表限制条数
  • leetcode讲解--894. All Possible Full Binary Trees
  • mysql外键的使用
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • PHP面试之三:MySQL数据库
  • Shell编程
  • SpiderData 2019年2月23日 DApp数据排行榜
  • 阿里云前端周刊 - 第 26 期
  • 好的网址,关于.net 4.0 ,vs 2010
  • 那些年我们用过的显示性能指标
  • 前端js -- this指向总结。
  • 如何进阶一名有竞争力的程序员?
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 十年未变!安全,谁之责?(下)
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 仓管云——企业云erp功能有哪些?
  • 交换综合实验一
  • 扩展资源服务器解决oauth2 性能瓶颈
  • 容器镜像
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (Ruby)Ubuntu12.04安装Rails环境
  • (笔试题)合法字符串
  • (一)Linux+Windows下安装ffmpeg
  • (一)Neo4j下载安装以及初次使用
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)Windows2003安全设置/维护
  • (转)负载均衡,回话保持,cookie
  • (自用)仿写程序
  • .apk文件,IIS不支持下载解决
  • .bat批处理(二):%0 %1——给批处理脚本传递参数