Arduino Mega Server

Модератор: Alex

Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

Re: Arduino Mega Server

Сообщение uni » Ср июл 29, 2015 1:29 pm

Теперь хорошо бы получить такую диаграмму, но со стороны мк. Т.е. когда получил запрос, сколько обрабатывал и когда отдал. Потом их наложить друг на друга.
Россия навсегда!
Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

Re: Arduino Mega Server

Сообщение uni » Ср июл 29, 2015 1:53 pm

И ещё, что будет, если убрать временно эти строчки (точнее сделать загрузку любого файла с флешки по имени в обход всяких парсеров, просто чистая загрузка любых файлов):

Код: Выделить всё

// parse network commands
parseCommands(sclient);

// parse request
parseRequest(sclient);

и

Serial.println(HTTP_req);
Россия навсегда!
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Ср июл 29, 2015 7:12 pm

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

Было бы здорово, если бы вы купили себе железо и могли бы поработать с системой не теоретически, а на практике. Если не купите, я, наверное, куплю вам сам. :) Уж больно ваши советы ценные. :)
Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

Re: Arduino Mega Server

Сообщение uni » Ср июл 29, 2015 8:32 pm

Я поищу в Екатеринбурге, может продаёт кто.
Россия навсегда!
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Чт июл 30, 2015 10:37 am

Посмотрел скетч, даже попробовал померить время и место задержки. Точно не уверен, но похоже сам скетч нигде не тормозит.

В связи с этим возникает подозрение на функцию

EthernetClient sclient = server.available();

и вообще работу самого W5100. Там буфер на приём 8 Кбайт и на отдачу 8 Кбайт. И для меня тёмный вопрос как он работает со своими четырьмя активными соединениями.

И дело не в скорости передачи, передаёт он мгновенно. Он именно чего-то ждёт 4-10 секунд (это не скетч тормозит). То ли свободных сокетов нет, то ли буфер заполнен (хотя чем?), то ли какой-то формальный момент протокола не соблюдён, то ли задержка мала/велика.
Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

Re: Arduino Mega Server

Сообщение uni » Чт июл 30, 2015 10:51 am

Такого рода разработку нужно вести с JTAG'ом. Ставишь точки останова и смотришь внутреннюю кухню. Не знаю поддерживает ли плата Arduino подключение JTAG'а, но очень рекомендовал бы это сделать. 90% вопросов будут отпадать сами собой.

Нужно купить отладчик, найти способ подключить его к Arduino Mega и подправить исходники для компиляции их в AVR или Atmel Studio. Только из этих IDE есть возможность полноценно работать с исходным кодом в отладочном режиме.
Россия навсегда!
ElectroN007
Сообщения: 2
Зарегистрирован: Сб авг 01, 2015 6:02 pm
Откуда: Санкт-Петербург
Благодарил (а): 0
Поблагодарили: 0

Re: Arduino Mega Server

Сообщение ElectroN007 » Сб авг 01, 2015 6:17 pm

Alex, если проживаете в Петербурге или области буду рад помочь Вам в поиске проблем с задержкой. Я для подобного рода историй использую логический анализатор - можно и шины данных проверить, и с помощью дерганья вспомогательных ног искать на каком этапе что не так. Мне так при работе с esp8266 удалось найти проблемные места в коде, да и дисплейчик на ili9341 запустить на железном SPI.
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Вс авг 02, 2015 7:02 am

К сожалению до вас мне далековато , но дистрибутив у всех одинаковый и железо в китайском (ничуть не плохом) варианте стоит копейки и вы можете самостоятельно попробовать решить проблему.

На данный момент я выяснил, что по непонятной причине некоторые пришедшие запросы «зависают» аж до 20 секунд. Ардуине ничто не мешает ответить, тот же запрос, повторённый во время зависания получает мгновенный ответ. (В буфере лежит? И чего он там лежит?)

Если мы поймём природу этого явления, то мгновенно всё «починим».

Вопрос принципиальный, если мы его решим, то у нас будет серьёзный, мгновенно отвечающий сервер. Всё бросил, сижу курю проблему, это последний принципиальный рубеж, который обязательно нужно взять.
Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

Re: Arduino Mega Server

Сообщение uni » Вс авг 02, 2015 8:54 am

Попробуйте поискать ответ на официальном форуме Arduino или задать вопрос там. Наверняка кто-то сталкивался и поможет решить или хотя-бы предложит способ косвенным путём узнать в чём проблема.

Без отладчика приходится изыскивать другие способы узнать в чём дело, а это может нарушить чистоту эксперимента.

П.С. Подскажите где покупали китайское железо и что кроме двух плат ещё желательно приобрести для комплекта?
Россия навсегда!
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Вс авг 02, 2015 9:49 am

Покупал несколько лет назад в каком-то интернет магазине, уже не помню. Кроме плат (при покупке обратите внимание на их совместимость) нужна только microSD карта памяти и монтажная плата (без пайки) для обвеса, ну и проводники для монтажа.

Датчики описал чуть выше. Всё это продаётся в любом ардуино-магазине в интернете и в любом крупном городе.

Для запуска нужны только платы и карта памяти.

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