VS编译和使用modbus库

一.libmodbus 库

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

二.源码简介

项目 说明
doc 目录 各 API 接口的详细说明文档
src 目录 源码都在这个目录下
tests 目录 自带的测试代码
src/win32 目录 windows 平台下的项目文件(使用 VS)
Makefile.am linux 平台下用于生成 makefile 文件
Modbus.c 核心源码
Modbus.h libmodbus 对外暴露的接口文件
Modbus-data.c 实现数据处理的公用函数,比如大小端、位处理
Modbus-private.h libmodbus 内部使用的数据结构和函数声明
Modbus-rtu.c RTU 模式相关的函数定义
Modbus-rtu.h RTU 模式对外提供的 API
Modbus-private.h RTU 模式内部使用的数据结构和函数声明
Modbus-tcp.c TCP 模式相关的函数定义
Modbus-tcp.h TCP 模式对外提供的 API
Modbus-tcp-private.h TCP 模式内部使用的数据结构和函数声明
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;
}

相关推荐

  1. Windows下 VS2022 编译OpenSSL

    2024-07-13 19:52:04       41 阅读
  2. VS2010 VS2015环境编译boost

    2024-07-13 19:52:04       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 19:52:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 19:52:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 19:52:04       58 阅读
  4. Python语言-面向对象

    2024-07-13 19:52:04       69 阅读

热门阅读

  1. swiper结合gsap进行切换

    2024-07-13 19:52:04       20 阅读
  2. 昇思训练营打卡第二十四天(LSTM+CRF序列标注)

    2024-07-13 19:52:04       17 阅读
  3. Nginx 日志统计分析命令

    2024-07-13 19:52:04       22 阅读
  4. 天童美语:放假给孩子看什么地理纪录片

    2024-07-13 19:52:04       17 阅读
  5. Perl 语言开发(十三):网络编程

    2024-07-13 19:52:04       22 阅读
  6. 块设备驱动实现--模拟一个块设备

    2024-07-13 19:52:04       17 阅读
  7. Docker

    2024-07-13 19:52:04       16 阅读
  8. docker

    2024-07-13 19:52:04       21 阅读
  9. qint64 pendingDatagramSize() const;

    2024-07-13 19:52:04       20 阅读
  10. ThreadLocal有哪些应用场景?底层如何实现?

    2024-07-13 19:52:04       21 阅读
  11. IPython:提升Python编程效率的实用技巧与案例

    2024-07-13 19:52:04       19 阅读
  12. 赋值运算符.二

    2024-07-13 19:52:04       18 阅读
  13. 数据结构第25节 深度优先搜索

    2024-07-13 19:52:04       16 阅读
  14. Python面试题:如何在 Python 中发送 HTTP 请求?

    2024-07-13 19:52:04       18 阅读