Modbus协议库——libmodbus-master

github上的modbus协议类库,经测试,支持串口和ip两种方式,下面记录往VS移植(其实类库移植大同小异)的过程供大家参考。

一、代码下载

去github下载源代码:https://github.com/stephane/libmodbus

libmodbus 是一个免费软件库,用于使用遵循 Modbus 协议的设备发送/接收数据。 该库可以使用串行端口或以太网连接。

二、环境安装

1)、笔记本电脑

Windows 10 专业版

2)、开发IDE和代码编辑器安装

免费的开发人员软件和服务 - Visual Studio (microsoft.com)

3)、如果您想使用 Microsoft Visual Studio 进行编译,您应该按照 ./src/win32/README.md 中的说明进行操作

# Windows 下编译说明 #

# 创建一个包含库的新 Visual Studio 项目

从Github下载最新版本的libmodbus源代码 `https://github.com/stephane/libmodbus` -> 代码 -> 下载 ZIP。

解压存档后,在“src/win32”目录中启动 Windows 终端(“cmd”)并运行“cscript configure.js”。

在Windows 10的命令行cmd中运行js脚本文件-CSDN博客

1. 将文件“config.h”从“src/win32”复制到“src”。

2. 在 Visual Studio 下创建一个新的“控制台应用程序”项目。

3. 在 VS 项目中创建一个名为“libmodbus”的新目录(与“.vcxproj”文件同一级别)。

4. 将 libmodbus `src` 中的所有 `*.c` 和 `*.h` 复制到 VS 项目的新 `libmodbus` 文件夹中。

5. 将 `modbus.rc` 复制到您的 VS 项目中(与 `.vcxproj` 文件处于同一级别)。

6. 将 `libmodbus/*.c` 文件 (4) 拖放到 *解决方案资源管理器 -> 源文件* 中。

7. 将 `libmodbus/*.h` 文件 (8) 拖放到 *解决方案资源管理器 -> 头文件* 中。

8. 将 `modbus.rc` 文件拖放到*解决方案资源管理器 -> 资源文件*中。

9. 检查`modbus.rc`中的路径为`#include "modbus-version.h"`。

10. 在项目*配置属性 -> C/C++ -> 常规 -> 其他包含目录*的 **属性页** 中,添加 `libmodbus` 文件夹。

11.在项目*配置属性->资源->附加包含目录*的**属性页**中,添加`libmodbus`文件夹。

12. 在项目 *Configuration Properties -> Linker -> Input* 的 **Property Pages** 中,定义 `ws2_32.lib`。

13. 如果需要,请将 `_CRT_SECURE_NO_WARNINGS` 添加到 *C/C++ -> 预处理器 -> 预处理器定义*。

## 创建libmodbus DLL

该目录包含 Visual Studio 构建“modbus.dll”和导入库“modbus.lib”的项目文件。

在 Windows 终端中,运行 `cscript configure.js` 生成:

- `config.h`

- `modbus-version.h` 使用configure.js 生成。

4)、编译运行成功

三、代码测试

# 测试 #

# 执照 该目录的测试程序是在 BSD 许可证下提供的(请参阅关联的许可证文件)。

## 编译

安装后,您可以使用 pkg-config 来编译这些测试。 例如,要编译 random-test-server 运行:

`gcc 随机测试服务器.c -o 随机测试服务器 $(pkg-config --libs --cflags libmodbus)`

- 在运行之前启动服务器需要“random-test-server” 随机测试客户端。 默认情况下,它在本地主机和端口 1502 上接收并回复 Modbus 查询。

- `random-test-client` 向大范围内发送许多不同的查询 地址和值来测试客户端和服务器之间的通信。

- `unit-test-server` 和 `unit-test-client` 运行完整的单元测试套件。 这些 程序对于测试 Modbus 协议实现和 libmodbus 行为至关重要。

- `bandwidth-server-one`、`bandwidth-server-many-up` 和 `bandwidth-client` 返回有关服务器和客户端之间传输速率性能的非常有用的信息。 “bandwidth-server-one”一次只能处理与客户端的一个连接,而“bandwidth-server-many-up”为每个新客户端打开一个连接(有限制)。

将要测试的文件拖放到 *解决方案资源管理器 -> 源文件* 中,点击调试运行。

注意仅保留一个main函数。

  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值