一、新建win32工程,配置环境
首先在libmodbus官网下载 libmodbus库稳定版
https://github.com/stephane/libmodbus解压文件后,在src文件夹目录下,选取如下图文件
新建一个文件夹,再添加到win32工程中 ,放在项目工程源码文件下。为了方便,这个文件夹命名为“libmodbus”。(新建的工程名称为:TestMod)
配置两个地方
1 、项目属性--》C/C++--》常规 --》附加包含目录
包含刚刚libmodbus文件夹的路径
宏定义方式:$(ProjectDir)libmodbus;
2、 项目属性--》链接器--》常规 --》附加库目录
包含刚刚libmodbus文件夹的路径
宏定义方式:$(ProjectDir)libmodbus;
二、 编译modbus.dll
modbus-9.sln 打开工程文件,选择模式为Debug,编译后生成modbus.dll
这个modbus.dll 最终需要放在 测试工程TestMod exe输出目录(Debug)下
三、 实现功能,源码如下
#include "stdafx.h" #include <iostream> #include "libmodbus/modbus.h" #pragma comment(lib,"modbus.lib") //#include <Windows.h> using namespace std; int main() { modbus_t *mb; uint16_t tab_reg[10] = { 0 }; mb = modbus_new_rtu("COM2", 9600, 'N', 8, 1); //相同的端口只能同时打开一个 modbus_set_slave(mb, 1); //设置modbus从机地址 modbus_connect(mb); struct timeval t; t.tv_sec = 0; t.tv_usec = 1000000; //设置modbus超时时间为1000毫秒 modbus_set_response_timeout(mb, (int)&t.tv_sec, (int)&t.tv_usec); for (int i = 0; i < 10; i++) { int regs = modbus_read_registers(mb, 0, 5, tab_reg); std::cout << "modbus recevie "<< i <<":" << tab_reg[0] << " " << tab_reg[1] << " " << tab_reg[2] << " " << tab_reg[3] << " " << tab_reg[4] << " " << tab_reg[5] <<std::endl; Sleep(500); } system("pause"); return 0; }
四、 调试功能
1、定义虚拟串口,COM2 COM3配对
2、 使用modbus slave软件定义如下数据,
3、 实验结果如下