最近做modbus的学习,网上有一点资料,在此总结了一下教程,但是细节部分还不够详细,所以我来把它补全一下吧。
第一步是大佬的虚拟接口环境配置:
https://blog.csdn.net/starelegant/article/details/72782946
其中的各种软件工具链接如下:
VSPD:Virtual Serial Port Driver Pro(兼容win10) V9.0.270 专业破解版https://www.jb51.net/softs/618416.html
Modbus Poll v6.3.1免费版 http://www.onlinedown.net/soft/978634.htm
modbus slave 6.0.2破解版 附注册码http://www.ddooo.com/softdown/70166.htm
libmodbus:去github下载:https://github.com/stephane/libmodbus
当然,我把他们都整理好了,包括libmodbus\poll\slave\VSPD,里面有安装方法,有1个积分的可以来这里
https://download.csdn.net/download/qq_23670601/10629250
第二步是VS环境配置,参考这位大佬的文章:https://blog.csdn.net/starelegant/article/details/74590951
然后解压缩,此处参考:https://blog.csdn.net/qq_37769473/article/details/80783228
打开libmodbus-master\src\win32\configure.js,显示:
打开libmodbus-master\src\win32\modbus-9.sln,用VS2013打开,切换到release版本编译,显示:
可能有其他奇怪的错误提示但是不用管。会生成lib和dll文件,等下用。
然后新建一个win32控制台空项目,在此命名为modbus通讯,然后把 \libmodbus-master\src下的所有 .h文件添加到工程文件的头文件中
其中的config.h文件在 \libmodbus-master\src\win32 下找。
然后把刚才生成的 \libmodbus-master\src\win32\modbus.lib 复制到对应的项目文件夹下,注意不是解决方案的文件夹!以我的为例,我的解决方案和项目都是modbus通讯,那么就把它复制到这里:
然后建一个main.cpp,这里借用了开头大佬的程序。
#include
#include "libmodbus/modbus.h"
#pragma comment(lib,"modbus.lib") //这一步也可以通过Project->properties->linker-
//>input->additional additional dependencies添加用到的lib
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;
}
编译运行一下,会提示找不到dll文件,此时,把之前生成的\libmodbus-master\src\win32\modbus.dll 复制到Debug文件夹下,如图:
再次运行成功:
整理的VS2013程序打包给我自己留个档案:https://download.csdn.net/download/qq_23670601/10629272
还是不会的直接下载我这个就ok了。