一、git下载地址 libmodbus udp 下载

二、更改modbus-udp.c文件 如果是在windows环境下编译的话会有如下错误。 更改如下:

#ifdef OS_WIN32

ssize_t rc = ioctlsocket(ctx->s, FIONREAD, &b);

#else

ssize_t rc = ioctl(ctx->s,FIONREAD, &b);

#endif

三、更改udp接收函数 在处理了一段数据后,需要将当前buffer数据往前移len个位置,否则后面处理的数据还是会包含之前的数据。

memmove(ctx_udp->buffer,ctx_udp->buffer+len,(size_t)ctx_udp->_u);

四、应用示例

//.h

modbus_t *modbus;

//.cpp

modbus = modbus_new_udp(modbusIP,port);

if(-1 == modbus_connect(modbus))

{

//连接失败

modbus_free(modbus);

modbus = nullptr;

}

else

{

//设置等待回复时间,超时报错

modbus_set_response_timeout(modbus,0,500000);

//设置从机地址

modbus_set_slave(modbus, address);

}

//写位寄存器

if(-1 == modbus_write_bit(modbus, 0, 1))

{

//写入失败

}

else

{

//写入成功

}

四、测试 可以正常通信。

参考链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: