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

 
 
> tcp_check_send выдает нулевое значение, Стек Keil 4.72
smk
сообщение Jul 27 2014, 11:40
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Функция
Код
tcp_check_send (my_socket)
стала возвращать нулевое значение. Из-за этого не происходит передачи. Раньше все работало хорошо. Внесенные изменения коснулись лишь сохранения значений во внешнюю EEPROM. Хочу спросить как можно узнать что повлияло и что вообще может повлиять. Спасибо.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
smk
сообщение Jul 29 2014, 19:23
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



По приходу пакета я отправлял тестовый пакет, а пришедший копировал в буфер. Наоборот конечно правильней, но работало же. Смысл своевременных отправок в том, чтобы измеренные значения поступали в тот момент когда они соответствуют обстановке, а не когда все поменялось и сообщение фактически устарело. Скажем периодичность в десятки мС при размере в 256 байт устроила бы. Скажем раз в 25 мС.
Раньше отправка стояла там где сейчас Flags.Send_answer = 1;

CODE
void tcp_send_buff (void)
{
unsigned char remip[4] = {192,168,0,1};

switch (tcp_get_state (my_socket))
{
case TCP_STATE_FREE:
case TCP_STATE_CLOSED:
/* Connection idle, send Connect Request. */
tcp_connect (my_socket, remip, PortNumber, 0);
break;
case TCP_STATE_CONNECT:
Flags.Send_answer = 1;
break;
}
}


unsigned short tcp_callback (uint8_t soc, uint8_t evt, uint8_t *buf, uint16_t len)
{
unsigned int i = 0;
/* This function is called by the TCP module on TCP event */
/* Check the Net_Config.h for possible events. */
switch (evt)
{
case TCP_EVT_DATA: //
/* TCP data frame has arrived, data is located at *buf, */
/* data length is len. Allocate buffer to send reply. */
my_socket = soc;
my_len = len;
tcp_send_buff();
for(i = 0; i <= len; i++)
{
my_rx_buff[i] = *buf;
buf++;
}
break;

case TCP_EVT_CONREQ:
/* Remote host is trying to connect to our TCP socket. */
return (1);

case TCP_EVT_ABORT:
break;

case TCP_EVT_CONNECT:
/* Socket is connected to remote peer. */
return (1);

case TCP_EVT_CLOSE:
break;

case TCP_EVT_ACK:
/* Our sent data has been acknowledged by remote peer */
break;
}
return (0);
}


Теперь в основном цикле:
Код
        if(Flags.Send_answer)
        {
                /* We are connected, send command to remote peer. */
            my_temp = tcp_check_send (my_socket);
            if (my_temp != 0)
                    {
                        maxlen = tcp_max_dsize (my_socket);
                        if(maxlen > 255) maxlen = 255;
                        sendbuf = tcp_get_buf (maxlen);
                        memcpy (sendbuf, my_tx_buff, maxlen);
                        tcp_send (my_socket, sendbuf, maxlen);
                    }
            Flags.Send_answer = 0;
        }


Сообщение отредактировал IgorKossak - Jul 30 2014, 08:27
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- smk   tcp_check_send выдает нулевое значение   Jul 27 2014, 11:40
- - smk   Попробовал прежние рабочие проекты. Там тоже не ра...   Jul 27 2014, 18:31
- - Golikov A.   провод сетевой отвалился... Поменялся хаб и перест...   Jul 27 2014, 19:07
|- - smk   Цитата(Golikov A. @ Jul 27 2014, 22:07) п...   Jul 28 2014, 06:05
- - Golikov A.   Данные что шлете на стороне компьютера вычитываете...   Jul 28 2014, 06:45
|- - smk   Цитата(Golikov A. @ Jul 28 2014, 09:45) Д...   Jul 28 2014, 08:01
- - Golikov A.   а что tcp_get_state возвращает? Может коннект по к...   Jul 28 2014, 15:39
|- - smk   Цитата(Golikov A. @ Jul 28 2014, 18:39) а...   Jul 28 2014, 18:47
- - Golikov A.   чудеса... а дебуг что говорит? Если включить его н...   Jul 28 2014, 19:50
|- - smk   Цитата(Golikov A. @ Jul 28 2014, 22:50) ч...   Jul 29 2014, 06:07
- - Golikov A.   простите, с LwIP перепутал, у него есть дебугер вс...   Jul 29 2014, 07:52
|- - smk   Цитата(Golikov A. @ Jul 29 2014, 10:52) п...   Jul 29 2014, 09:36
- - Golikov A.   Ну по описанию эта функция вернет 0, если 1. Нет с...   Jul 29 2014, 12:00
|- - smk   Цитата(Golikov A. @ Jul 29 2014, 15:00) о...   Jul 29 2014, 17:17
- - Golikov A.   ОООО! а разве можно в TCP калбеке что-то слать...   Jul 29 2014, 19:13
- - Golikov A.   Да... чудно это все... Могу предположить только ч...   Jul 29 2014, 20:12
|- - smk   Цитата(Golikov A. @ Jul 29 2014, 23:12) Д...   Jul 30 2014, 06:50
- - Golikov A.   ну как бы это в net_config.c указывается...   Jul 30 2014, 06:57


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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 08:48
Рейтинг@Mail.ru


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