Visual Studio 中完整的 C++ Demo:基于 libmodbus 的串口 Modbus RTU 主站示例
引言
在 Visual Studio (VS) 中开发 C++ 串口应用非常常见,尤其是在 Windows 环境下。libmodbus 是一个优秀的开源库,支持 Modbus RTU 协议,通过它可以轻松实现串口通信。本 Demo 将展示一个完整的 Modbus RTU 主站程序:连接串口、配置参数、轮询从站寄存器、读取数据、处理错误,并支持退出。
这个 Demo 适用于:
- 半导体测试机数据采集(读取传感器电压/电流)
- 工业控制(PLC 通信)
- 硬件调试
前提:
- VS 2022+(Community 版免费)
- 已安装 libmodbus(下面详解)
- 一个串口设备(如 USB 转串口 + Modbus 从站模拟器)
- C++ 标准:C++17
步骤 1: 在 VS 中安装/配置 libmodbus
- 下载 libmodbus 源码:
- GitHub: https://github.com/stephane/libmodbus
- 下载 ZIP 或 clone。
- 使用 CMake 构建 libmodbus(推荐):
- 安装 CMake(VS Installer 中添加 'C++ CMake tools')
- 打开 VS,File > Open > CMake… 打开 libmodbus/CMakeLists.txt
- Build > Build All (生成 libmodbus.lib / dll)
- 输出路径:build/Release 或 Debug
- vcpkg 安装(更简单):
- 安装 vcpkg:git clone https://github.com/microsoft/vcpkg
- .\vcpkg\bootstrap-vcpkg.bat
- .\vcpkg\vcpkg install libmodbus:x64-windows
- 在 VS 项目属性 > C/C++ > Additional Include Directories 添加 vcpkg/installed/x64-windows/include
- Linker > Additional Library Directories 添加 vcpkg/installed/x64-windows/lib
- Linker > Input 添加 libmodbus.lib
- 项目配置:
- 新建 VS C++ 控制台项目
- 属性 > C/C++ > Code Generation > Runtime Library: Multi-threaded DLL (/MD)
- 链接 libmodbus.lib + ws2_32.lib(Windows 串口需要)
步骤 2: 完整 Demo 代码(modbus_rtu_master.cpp)
// modbus_rtu_master.cpp
// 完整 Modbus RTU 主站 Demo:连接串口、配置、轮询读取寄存器、错误处理
// 支持 Ctrl+C 优雅退出
#include <modbus.h>
running = ;
{
running = ;
();
}
{
*ctx = ;
regs[REG_COUNT];
rc;
(SIGINT, signal_handler);
ctx = (SERIAL_PORT, BAUDRATE, , , );
(ctx == ){
(stderr,,(errno));
;
}
(ctx, SLAVE_ID);
(ctx, TIMEOUT_SEC, TIMEOUT_USEC);
((ctx)==){
(stderr,,(errno));
(ctx);
;
}
(, SERIAL_PORT, BAUDRATE);
(running){
rc = (ctx, REG_ADDR, REG_COUNT, regs);
(rc == ){
(stderr,,(errno));
}{
(, rc);
( i = ; i < rc; i++){
(, i, regs[i], regs[i]);
}
}
(POLL_INTERVAL);
}
(ctx);
(ctx);
();
;
}

