WIN10+vs2015编译32位libmodbus库文件及应用

官网下载libmodbus -X.X.X版本源码,网址:https://github.com/stephane/libmodbus/releases/tag/v3.1.6

使用vs2015打开win32文件下modbus-9.sln工程,配置相关路径

如果遇到未找到 config.h moubus-version.h文件错误,在src,win32文件夹下寻找相关文件,会发现多了文件后缀名,去掉后缀,重新命名为config.h moubus-version.h 可解决此问题

菜单栏 生成modbus-9 可生成相关   .lib   .dll文件

如遇到下方位置错误,可修改成当前版本号    release编译成功,能进行modbus-rtu通信     debug遇到报版本错误,没有深入研究了

最终汇总相关库文件,头文件可用于项目,编译好库文件下载:https://download.csdn.net/download/qq_40277183/16341746

应用 配置头文件、库文件路径,.dll放到 .exe同文件夹下

#include <iostream>
#include "modbus.h"
#pragma comment(lib,"modbus.lib")  //这一步也可以通过Project->properties->linker
using namespace std;
void modbus_rtu_read(int addr1,int addr2,int num , modbus_t *md_rtu)
{
	uint16_t *tab_reg;
	tab_reg = (uint16_t*)malloc(num*sizeof(uint16_t));
	modbus_set_slave(md_rtu, addr1);  //设置modbus从机地址 
	struct timeval t;
	t.tv_sec = 0;
	t.tv_usec = 1000000;   //设置modbus超时时间为1000毫秒 
	modbus_set_response_timeout(md_rtu, (int)&t.tv_sec, (int)&t.tv_usec);

	int regs = modbus_read_registers(md_rtu, addr2, num, tab_reg);
	std::cout << "modbus recevie " << addr1 << ":";
	for (int i = 0; i < num; i++)
	{
		std::cout << tab_reg[i] << " ";
	}
	std::cout << std::endl;
}

int main()
{
	modbus_t *mb;
	
	mb = modbus_new_rtu("COM1", 9600, 'N', 8, 1);   //相同的端口只能同时打开一个 
	modbus_connect(mb);
	for (int i = 1; i < 10; i++)
	{
		modbus_rtu_read(i, 0, 50, mb);
	}
	
	modbus_free(mb);
	system("pause");
	return 0;
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值