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

 
 
12 страниц V  « < 6 7 8 9 10 > »   
Reply to this topicStart new topic
> STM32F107 + RTL8201 + lwip-1.4.0, драйвер PHY для lwip
smk
сообщение Dec 23 2013, 13:03
Сообщение #106


Гуру
******

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



Всеравно пока не ясно как отослать много байт. Вот есть у кейла такой пример:

Код
#include <rtl.h>
#include <string.h>

BOOL send_datalog () {
  U8 *sendbuf;
  U16 maxlen;

  if (tcp_check_send (tcp_soc)) {
    /* The socket is ready to send the data. */
    maxlen = tcp_max_dsize (tcp_soc);
    sendbuf = tcp_get_buf (maxlen);
    memcpy (sendbuf, data_buf, maxlen);
    tcp_send (tcp_soc, sendbuf, maxlen);
    return (__TRUE);
  }
  return (__FALSE);
}


Исходя из
Код
memcpy (sendbuf, data_buf, maxlen);
я не могу услать больше чем maxlen. Что-то совсем не пойму как разбивка будет происходить. Ну вот ушла часть размером maxlen и еще три таких осталось. Помогите понять идею. Спасибо.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Dec 23 2013, 13:21
Сообщение #107


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



вот так и будет
у меня буфер в который я кладу данные на отправку.
время от времени вызывается функция отправки. Если можно отправить весь буфер отправляю весь, если нет, то отправляю сколько можно, остальное остается в буфере до следующего раза. Отправка происходит как в примере, создается буфер с оптравляемыми данными (или частью если все отправить нельзя) и передается в сэнд. Если в этот раз сокет вообще не может отправлять, то весь буфер остается до след раза.

Вы про окно ТСР знаете? Во время работы то комму отправляете данные информирует вас о том количестве байт что он готов принять, и вы по какой угодно технологии, с буфером или без, с указателями или ДМА, вы не имеете права посылать больше чем он может принять. Так что следить за допустимым для отправки числом байт вы обязаны.
Go to the top of the page
 
+Quote Post
smk
сообщение Dec 23 2013, 14:02
Сообщение #108


Гуру
******

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



Да, вот кстати уже давно хотел спросить про окна, ранее упоминавшиеся. Что это и как и для чего...


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Dec 23 2013, 14:40
Сообщение #109


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



да в целом все просто, это способ контроля потока.

Окно - это размер памяти для приема новых данных, каждые поступающие данные уменьшают этот размер, каждые обработанные данные освобождают окно. При каждом ответе на прием данных сообщается также сколько еще данных осталось в окне, если окно забилось, то время от времени посылаются данные 0 длинны чтобы как только окно освободилось можно было дослать очередной кусок. Так же есть дополнительное автономное сообщение которое сообщает что окно освободилось.

принимаются данные в окно, как только вы обработали данные, вы их из окна извлекаете. Есть разные реализации освобождения окна, в кейле она единовременная на все окно.
то есть допустим у вас окно 10, приняли 6 байт, окно стало 4,
обработали 6 байт, сбрасываете окно и оно становится опять 10. Если вы обработали 2 байта, то у вас нет возможности извлечь только их сделав окно 6, пока все 6 не обработаете окно не освобождаете.

как только вы приняли 6 байт, больше 4 вам прислать не могут, как освободили окно может придти все 10 сразу. Чем больше окно - тем больше надо памяти, но тем быстрее работает стэк.






Go to the top of the page
 
+Quote Post
smk
сообщение Dec 24 2013, 08:01
Сообщение #110


Гуру
******

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



Огромная благодарность Golikov A! Разобрался, все пока понятно и отлично работает. Далее самое интересное. Как показать веб-страничку и с нее настраивать прибор? В часности нужно со странички сообщать прибору числовые значения для рассчетов. Есть нужда задавать коэффициенты полинома и т.п., отображать на страничке некоторые служебные значения а-ля телеметрия. Ну и просто отсылать команды для принудительного переключения в интересующие режимы. Собственно как показать страничку и устроить диалог с прибором? Спасибо.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Dec 24 2013, 08:56
Сообщение #111


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



собственно поднять HTTP серверsm.gif как еще тоsm.gif?
HTTP сервер это дополнительная надстройка над ТСР, собственное следующий уровень протоколов. Но тут я уже не силен, я такое не практикую, у меня подключение по сокетам по своим каналам, так как мои клиенты - это наши же программы, и протоколы у нас закрытые.
Go to the top of the page
 
+Quote Post
smk
сообщение Dec 24 2013, 09:29
Сообщение #112


Гуру
******

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



А как можно программно менять адрес и порт? Как потом программно актуализировать изменения?


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Dec 24 2013, 10:45
Сообщение #113


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(smk @ Dec 24 2013, 13:29) *
А как можно программно менять адрес и порт? Как потом программно актуализировать изменения?


А порт нафик менять? Если у вас хост является Вашей железкой? Типа можете забыть и заюзать под другие дела порт?
Или я не понял вопроса?

Для задания адреса - либо инициализация его через дисплей, флэшку или ышо какой удобный способ(хоть джамперами набирай sm.gif ).
Либо ышо просче - поднять DHCP.

По поводу передачи запросов посредством HTML-я: копайте запросы GET и POST.
Go to the top of the page
 
+Quote Post
smk
сообщение Dec 24 2013, 10:58
Сообщение #114


Гуру
******

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



Цитата(kolobok0 @ Dec 24 2013, 12:45) *
А порт нафик менять? Если у вас хост является Вашей железкой? Типа можете забыть и заюзать под другие дела порт?
Или я не понял вопроса?


Изделие изготавливается с установками по умолчанию, а у заказчика настраивается сообразно ихней конфигурации сети. Порт менять не очень-то нужно, но бывали случаи когда настроенное ПО у заказчика использовало другой порт.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Dec 24 2013, 11:10
Сообщение #115


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



IP адрес можно менять на лету.
заполняете структуру localm и все, вы работаете сразу на новом IP.

смена порта требует пересоздание сокетов.

у нас реализовано 2 варианта.
1. Бутлоадер.
Грузиться с дефолтными настройками, с закрытыми сокетами. Запрашивает по DHCP новый адрес, если не получает грузиться с дефолтным адресом. Пользователь по UDP имеет возможность заменить IP адрес, и задать порт, так же по UDP подает команду на создание ТСР сокетов с указанным портом.

2. Штатная программа, все настройки сохраняет во флэш, там хранятся номера портов, IP адрес по умолчанию, режим работы с DHCP или без. Эти настройки можно менять через UDP и сохранять. После загрузки все ТСР сокеты сразу создаются, если надо сменить порт, меняем, сохраняем, и перезагружаем устройство.

для UDP порт не меняемый, и всегда один.
Go to the top of the page
 
+Quote Post
smk
сообщение Dec 24 2013, 12:17
Сообщение #116


Гуру
******

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



С рестартом наверно самое правильное решение. Если заработает на столе, то и на производстве не подведет.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
smk
сообщение Dec 24 2013, 18:02
Сообщение #117


Гуру
******

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



Сделал как написано в:
http://we.easyelectronics.ru/LPC/lpc1768rt...eb-updated.html

Все вроде как собралось, но при обращении получаю не свою страничку, а такое:

Код
HTTP 1.0 404 Error. File Not Found
The requested URL was not found on this server.


Что я делаю не так?


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Dec 24 2013, 18:26
Сообщение #118


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(Golikov A. @ Dec 24 2013, 15:10) *
...по UDP имеет возможность заменить IP адрес...


кхм. в таком случае пару вопросов:
это в одном сегменте или грамотный перебор мостов-шлюзов?
критерий тогда удалённости каков, и как долгий процесс(если не один сегмент) сканирования?


Цитата(smk @ Dec 24 2013, 22:02) *
..при обращении получаю не свою страничку, а такое:

Код
HTTP 1.0 404 Error. File Not Found..

..


это значит, что по данному адресу страничка не найдена. ответ отдал сервак.
т.е. алгоритм следующий...
выясняете работоспособность вашего девайса, уровень ICMP эхо запрос-ответ. => юзаете команду ping
юзаете с разными хитрыми параметрами - читайте справку к ней. особенно уделите внимание сборке на IP уровне.

если всё ништяк(полезно так же смотреть на нижнем уровне что получаете на уровне пакетов), дальше запрашиваете страничку по 80 порту.

смотрите на нижнем уровне такие вещи как
1) приход нефргаментированных IP пакетов (теоретически потом могут появится, если запросы на сервак будут не слабыми).
2) коректность сессии TCP
3) отдача HTML кода.

если где затык - разбираетесь с данным уровнем.
по идее в железке надо открыть порт на котором вы будете ждать запросы на вэб сервак(по умолчанию 80 порт - не SSL), и при запросе
вида GET HTML отдать "файл" размеченный вэю страницей.
всё дело контролируете на нижнем уровне снифером, и ышо смотрите что получает броузер (правая кнопка, просмотреть содержимое HTML).
сравниваете что отослали и что получили.

где то так
Go to the top of the page
 
+Quote Post
smk
сообщение Dec 24 2013, 19:03
Сообщение #119


Гуру
******

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



Обратил внимание на такую штуку. Я меняю содержимое файла index.htm добавляя текстовые строки. По идее размер кода должен расти, но он не меняется вообще. Что бы это значило?


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Dec 24 2013, 20:17
Сообщение #120


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



UDP тем и хорош что имеет широковещательный режим, именно потому он и выбран для поиска. Посылается запрос специализированный на спец порт широковещательно, наши устройства обрабатывают и отвечают. Далее уже по обстоятельствам.

В целом мы можем потребовать достаточно специфичную конфигурацию сети, так что world wide мы не реализуем, не далее чем пройдет широковещательный запрос - ответ.
Go to the top of the page
 
+Quote Post

12 страниц V  « < 6 7 8 9 10 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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