修改增加modbus_tools软件通讯中断重连机制

main
huyizhong 11 months ago
parent 90a1dc8b52
commit bb8b705bf1

@ -1,5 +1,5 @@
[MODBUS_SLAVE]
SLAVE_IP_ADDR=192.168.50.155
SLAVE_IP_ADDR=192.168.1.16
SLAVE_IP_PORT=502

@ -92,19 +92,27 @@ DWORD WINAPI xModbus_master_Proc(LPVOID lp) {
}
modbus_set_response_timeout(ctx, 20, 0);
sockt = modbus_connect(ctx);
if (sockt == -1) {
fprintf(stderr, "Connection failed: %s\n", modbus_strerror(errno));
modbus_free(ctx);
return -1;
}
while (1) {
if (sockt <= 0)
{
sockt = modbus_connect(ctx);
if (sockt == -1) {
fprintf(stderr, "Connection failed: %s\n", modbus_strerror(errno));
//modbus_free(ctx);
Sleep(1);
continue;
}
else
{
printf("Connection Success! socket=%d\n", sockt);
}
}
unsigned char* src = (unsigned char*)tab_rp_registers;
while (1)
{
#if 0
if (sockt < 0)
return -1;
unsigned char* src = (unsigned char*)tab_rp_registers;
#if 1
if (sockt <= 0)
continue;
FD_ZERO(&fdset_ro);
FD_ZERO(&fdset_wr);
FD_ZERO(&fdset_ex);
@ -124,18 +132,25 @@ DWORD WINAPI xModbus_master_Proc(LPVOID lp) {
sockt = -1;
break;
}
if (FD_ISSET(sockt, &fdset_ro))
if (FD_ISSET(sockt, &fdset_wr)) {
#endif
rc = modbus_read_registers(ctx, start_hold_register, number_regs, tab_rp_registers);
#if 1
if (rc == -1)
{
closesocket(sockt);
sockt = -1;
printf("End Thread£¡\n");
continue;
}
#endif
rc = modbus_read_registers(ctx, start_hold_register, number_regs, tab_rp_registers);
#if 0
if (rc == -1)
}
else
{
closesocket(sockt);
sockt = -1;
printf("End Thread£¡\n");
return -1;
Sleep(1000);
continue;
}
#endif
Sleep(3 * 1000);
//xUnsigned_char_hex_out("recv", src, 0, number_regs*2);
xRead_reg_hex_out(start_hold_register, "master recv", src, 0, number_regs * 2);

Loading…
Cancel
Save