Перейти к содержанию
    

STM32F107 + lwip RAW API принимается 2920 байт

В проекте используется 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;
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У вас не видно вызова tcp_recved().

 

Спасибо, нашел пример от ST для F207, посмотрел, как там сделано... с tcp_recved() все заработало!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...