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

一、新建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、 实验结果如下

 

猜你喜欢

转载自blog.csdn.net/starelegant/article/details/74590951