Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F107 + lwip RAW API принимается 2920 байт
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
EugenyAM
В проекте используется 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
У вас не видно вызова tcp_recved().
EugenyAM
Цитата(scifi @ Dec 6 2012, 14:38) *
У вас не видно вызова tcp_recved().


Спасибо, нашел пример от ST для F207, посмотрел, как там сделано... с tcp_recved() все заработало!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.