реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> STM32F107 + lwip RAW API принимается 2920 байт
EugenyAM
сообщение Dec 6 2012, 03:33
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 14-10-08
Из: Omsk
Пользователь №: 40 929



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

Go to the top of the page
 
+Quote Post
scifi
сообщение Dec 6 2012, 07:38
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



У вас не видно вызова tcp_recved().
Go to the top of the page
 
+Quote Post
EugenyAM
сообщение Dec 6 2012, 09:34
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 14-10-08
Из: Omsk
Пользователь №: 40 929



Цитата(scifi @ Dec 6 2012, 14:38) *
У вас не видно вызова tcp_recved().


Спасибо, нашел пример от ST для F207, посмотрел, как там сделано... с tcp_recved() все заработало!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 21:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.03281 секунд с 7
ELECTRONIX ©2004-2016