Estoy utilizando libmodbus para conectarme a un inversor SunnyBoy 2.5. Hago la conexión de la siguiente manera:
#include <modbus/modbus.h>
#include <stdio.h>
#include <errno.h>
int main()
{
modbus_t *mb;
uint16_t tab_reg[32];
int rc;
int socket;
mb = modbus_new_tcp("192.168.100.1", 502);
if (mb == NULL)
{
fprintf(stderr, "Unable to allocate libmodbus context\n.");
return -1;
}
if (modbus_connect(mb) == -1)
{
fprintf(stderr, "Connection failed: %s\n",
modbus_strerror(errno));
modbus_free(mb);
return -1;
}
else
{
socket = modbus_tcp_listen(mb, 1);
if (socket == -1)
{
fprintf(stderr, "Socket problem: %s\n", modbus_strerror(errno));
}
modbus_tcp_accept(mb, &socket);
printf("Connection successful.\n");
}
}
Cuando intento escuchar en el socket (modbus_tcp_listen), me da un error de "permiso denegado". ¿Cómo se puede obtener permiso para que el SunnyBoy hable con Modbus / cómo se implementa en el código?