大家好!我最近在调试libmodbus软件包,是作为modbus tcp的client端,目前情况如下:
1、运行代码的板子和电脑之间可以ping通;
2、电脑上运行的是Modbus slave软件,用来模拟modbus tcp的sever端;
3、板子上的client端的代码一直connect不成功。
client端运行的就是软件包里的示例代码
static void test_thread(void *param)
{
uint16_ttab_reg[64] = {0};modbus_t*ctx = RT_NULL;ctx =modbus_new_tcp("192.168.1.66",502, AF_INET);modbus_set_slave(ctx,3);modbus_set_response_timeout(ctx,0,1000000);
_mbtcp_start:
if(modbus_connect(ctx) <0) //一直卡在这里goto_mbtcp_restart;intnum =0;while(1) { memset(tab_reg,0,64*2);intregs = modbus_read_registers(ctx,0,20, tab_reg);if(regs <0)goto_mbtcp_restart;printf("-------------------------------------------\n");printf("[%4d][read num = %d]", num, regs); num++;inti;for(i =0; i <20; i++) {printf("<%#x>", tab_reg[i]); }printf("\n");printf("-------------------------------------------\n"); rt_thread_mdelay(1000); }
_mbtcp_restart:
modbus_close(ctx);rt_thread_mdelay(2000);goto_mbtcp_start;modbus_free(ctx);
}
打开lwip的调试功能,目前显示的信息如下:
tcp_connect to port 502
tcp_slowtmr: processing active pcb
tcp_close: closing in State: SYN_SENT
tcp_pcb_purge
tcp_pcb_purge: data left on ->unacked
还请大家指点一下,谢谢!