EugenyAM 0 6 декабря, 2012 Опубликовано 6 декабря, 2012 · Жалоба В проекте используется lwip RAW API без RTOS TCP клиент, соединяется с сервером и обменивается данными после приема 2920 байт данных от сервера (в нескольких сообщениях) с момента соединения, прием прекращается. На передачу стек продолжает работать нормально. После дисконнекта и повторного коннекта, все снова работает, пока не будет принято 2920 байт. код функции обработки приема err_t tcp_client_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err) { u8 data; u32 i; if(p!=NULL) //Защита при дисконнекте { for(i=0;i<p->len;i++) { data=((u8 *)p->payload)[i]; RxBuf[RxNum++]=data; } RxTotal+=p->len; //это тот самый счетчик, который считает принятые байты с момента коннекта до 2920 pbuf_free(p); LAN_RxProcess(); } return ERR_OK; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 6 декабря, 2012 Опубликовано 6 декабря, 2012 · Жалоба У вас не видно вызова tcp_recved(). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EugenyAM 0 6 декабря, 2012 Опубликовано 6 декабря, 2012 · Жалоба У вас не видно вызова tcp_recved(). Спасибо, нашел пример от ST для F207, посмотрел, как там сделано... с tcp_recved() все заработало! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться