https://blog.youkuaiyun.com/starelegant/article/details/74590951使用libmodbus库快速构建上位机(二) 串口modbus上位机

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/starelegant/article/details/74590951

一、新建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)下 

 

三、 实现功能,源码如下



 
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include "libmodbus/modbus.h"
  4. #pragma comment(lib,"modbus.lib")
  5. //#include <Windows.h>
  6. using namespace std;
  7. int main()
  8. {
  9. modbus_t *mb;
  10. uint16_t tab_reg[ 10] = { 0 };
  11. mb = modbus_new_rtu( "COM2", 9600, 'N', 8, 1); //相同的端口只能同时打开一个
  12. modbus_set_slave(mb, 1); //设置modbus从机地址
  13. modbus_connect(mb);
  14. struct timeval t;
  15. t.tv_sec = 0;
  16. t.tv_usec = 1000000; //设置modbus超时时间为1000毫秒
  17. modbus_set_response_timeout(mb, ( int)&t.tv_sec, ( int)&t.tv_usec);
  18. for ( int i = 0; i < 10; i++)
  19. {
  20. int regs = modbus_read_registers(mb, 0, 5, tab_reg);
  21. std:: cout << "modbus recevie "<< i << ":" << tab_reg[ 0] << " " << tab_reg[ 1] << " " << tab_reg[ 2] << " "
  22. << tab_reg[ 3] << " " << tab_reg[ 4] << " " << tab_reg[ 5] << std:: endl;
  23. Sleep( 500);
  24. }
  25. system( "pause");
  26. return 0;
  27. }


 

四、  调试功能

1、定义虚拟串口,COM2 COM3配对

2、 使用modbus slave软件定义如下数据,


 

3、 实验结果如下

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值