您的位置:首页 > 编程语言 > C语言/C++

使用libmodbus库快速构建上位机(二) 串口modbus上位机

2017-07-06 18:38 253 查看
一、新建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、 实验结果如下

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Modbus C++ win32 libmodbus