Arduino Mega Server
Модератор: Alex
- uni
- Сообщения: 191
- Зарегистрирован: Вс июл 26, 2015 9:21 pm
- Откуда: Екатеринбург
- Благодарил (а): 4 раза
- Поблагодарили: 7 раз
- Контактная информация:
Re: Arduino Mega Server
Теперь хорошо бы получить такую диаграмму, но со стороны мк. Т.е. когда получил запрос, сколько обрабатывал и когда отдал. Потом их наложить друг на друга.
Россия навсегда!
- uni
- Сообщения: 191
- Зарегистрирован: Вс июл 26, 2015 9:21 pm
- Откуда: Екатеринбург
- Благодарил (а): 4 раза
- Поблагодарили: 7 раз
- Контактная информация:
Re: Arduino Mega Server
И ещё, что будет, если убрать временно эти строчки (точнее сделать загрузку любого файла с флешки по имени в обход всяких парсеров, просто чистая загрузка любых файлов):
Код: Выделить всё
// parse network commands
parseCommands(sclient);
// parse request
parseRequest(sclient);
и
Serial.println(HTTP_req);
Россия навсегда!
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Arduino Mega Server
Да, я тоже думаю, что проблема кроется в парсинге. Попробую покопать в эту сторону.
Было бы здорово, если бы вы купили себе железо и могли бы поработать с системой не теоретически, а на практике. Если не купите, я, наверное, куплю вам сам.
Уж больно ваши советы ценные. 
Было бы здорово, если бы вы купили себе железо и могли бы поработать с системой не теоретически, а на практике. Если не купите, я, наверное, куплю вам сам.


-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Arduino Mega Server
Посмотрел скетч, даже попробовал померить время и место задержки. Точно не уверен, но похоже сам скетч нигде не тормозит.
В связи с этим возникает подозрение на функцию
EthernetClient sclient = server.available();
и вообще работу самого W5100. Там буфер на приём 8 Кбайт и на отдачу 8 Кбайт. И для меня тёмный вопрос как он работает со своими четырьмя активными соединениями.
И дело не в скорости передачи, передаёт он мгновенно. Он именно чего-то ждёт 4-10 секунд (это не скетч тормозит). То ли свободных сокетов нет, то ли буфер заполнен (хотя чем?), то ли какой-то формальный момент протокола не соблюдён, то ли задержка мала/велика.
В связи с этим возникает подозрение на функцию
EthernetClient sclient = server.available();
и вообще работу самого W5100. Там буфер на приём 8 Кбайт и на отдачу 8 Кбайт. И для меня тёмный вопрос как он работает со своими четырьмя активными соединениями.
И дело не в скорости передачи, передаёт он мгновенно. Он именно чего-то ждёт 4-10 секунд (это не скетч тормозит). То ли свободных сокетов нет, то ли буфер заполнен (хотя чем?), то ли какой-то формальный момент протокола не соблюдён, то ли задержка мала/велика.
- uni
- Сообщения: 191
- Зарегистрирован: Вс июл 26, 2015 9:21 pm
- Откуда: Екатеринбург
- Благодарил (а): 4 раза
- Поблагодарили: 7 раз
- Контактная информация:
Re: Arduino Mega Server
Такого рода разработку нужно вести с JTAG'ом. Ставишь точки останова и смотришь внутреннюю кухню. Не знаю поддерживает ли плата Arduino подключение JTAG'а, но очень рекомендовал бы это сделать. 90% вопросов будут отпадать сами собой.
Нужно купить отладчик, найти способ подключить его к Arduino Mega и подправить исходники для компиляции их в AVR или Atmel Studio. Только из этих IDE есть возможность полноценно работать с исходным кодом в отладочном режиме.
Нужно купить отладчик, найти способ подключить его к Arduino Mega и подправить исходники для компиляции их в AVR или Atmel Studio. Только из этих IDE есть возможность полноценно работать с исходным кодом в отладочном режиме.
Россия навсегда!
-
- Сообщения: 2
- Зарегистрирован: Сб авг 01, 2015 6:02 pm
- Откуда: Санкт-Петербург
- Благодарил (а): 0
- Поблагодарили: 0
Re: Arduino Mega Server
Alex, если проживаете в Петербурге или области буду рад помочь Вам в поиске проблем с задержкой. Я для подобного рода историй использую логический анализатор - можно и шины данных проверить, и с помощью дерганья вспомогательных ног искать на каком этапе что не так. Мне так при работе с esp8266 удалось найти проблемные места в коде, да и дисплейчик на ili9341 запустить на железном SPI.
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Arduino Mega Server
К сожалению до вас мне далековато , но дистрибутив у всех одинаковый и железо в китайском (ничуть не плохом) варианте стоит копейки и вы можете самостоятельно попробовать решить проблему.
На данный момент я выяснил, что по непонятной причине некоторые пришедшие запросы «зависают» аж до 20 секунд. Ардуине ничто не мешает ответить, тот же запрос, повторённый во время зависания получает мгновенный ответ. (В буфере лежит? И чего он там лежит?)
Если мы поймём природу этого явления, то мгновенно всё «починим».
Вопрос принципиальный, если мы его решим, то у нас будет серьёзный, мгновенно отвечающий сервер. Всё бросил, сижу курю проблему, это последний принципиальный рубеж, который обязательно нужно взять.
На данный момент я выяснил, что по непонятной причине некоторые пришедшие запросы «зависают» аж до 20 секунд. Ардуине ничто не мешает ответить, тот же запрос, повторённый во время зависания получает мгновенный ответ. (В буфере лежит? И чего он там лежит?)
Если мы поймём природу этого явления, то мгновенно всё «починим».
Вопрос принципиальный, если мы его решим, то у нас будет серьёзный, мгновенно отвечающий сервер. Всё бросил, сижу курю проблему, это последний принципиальный рубеж, который обязательно нужно взять.
- uni
- Сообщения: 191
- Зарегистрирован: Вс июл 26, 2015 9:21 pm
- Откуда: Екатеринбург
- Благодарил (а): 4 раза
- Поблагодарили: 7 раз
- Контактная информация:
Re: Arduino Mega Server
Попробуйте поискать ответ на официальном форуме Arduino или задать вопрос там. Наверняка кто-то сталкивался и поможет решить или хотя-бы предложит способ косвенным путём узнать в чём проблема.
Без отладчика приходится изыскивать другие способы узнать в чём дело, а это может нарушить чистоту эксперимента.
П.С. Подскажите где покупали китайское железо и что кроме двух плат ещё желательно приобрести для комплекта?
Без отладчика приходится изыскивать другие способы узнать в чём дело, а это может нарушить чистоту эксперимента.
П.С. Подскажите где покупали китайское железо и что кроме двух плат ещё желательно приобрести для комплекта?
Россия навсегда!
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Arduino Mega Server
Покупал несколько лет назад в каком-то интернет магазине, уже не помню. Кроме плат (при покупке обратите внимание на их совместимость) нужна только microSD карта памяти и монтажная плата (без пайки) для обвеса, ну и проводники для монтажа.
Датчики описал чуть выше. Всё это продаётся в любом ардуино-магазине в интернете и в любом крупном городе.
Для запуска нужны только платы и карта памяти.
По поводу проблемы есть интуитивное чувство, что дело в какой-то ерунде, которая лежит на поверхности, нужно только осознать логику работы.
Датчики описал чуть выше. Всё это продаётся в любом ардуино-магазине в интернете и в любом крупном городе.
Для запуска нужны только платы и карта памяти.
По поводу проблемы есть интуитивное чувство, что дело в какой-то ерунде, которая лежит на поверхности, нужно только осознать логику работы.