Arduino Mega Server

Модератор: Alex

timapple
Сообщения: 4
Зарегистрирован: Пн авг 24, 2015 1:15 pm
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Arduino Mega Server

Сообщение timapple » Ср авг 26, 2015 11:15 am

olehs писал(а):вот тут Вы ошиблись.
begin() открывает только один сокет на прослушивание. Но да, в один момент времени может быть несколько сокетов в статусе ESTABLISHED, но только один в LISTEN.
ой точно, в оригинальной версии на прослушивание открывается первый свободной сокет.
  • из-за особенности реализации метода available() - следующим может быть обработан не второй по очереди запрос, а только что поступивший на освободившийся первый :!: , т.е. при интенсивной бомбежке сервера браузером - часть запросов на 2-4 сокетах могут игнорироваться очень долго
и вот это не совсем корректно. Шансы, что сокет, который только что был переведен в статус LISTEN сразу же (за пару инструкций процессора) получит входящий коннект, да еще и сданными ничтожно малы. Для этого клиент должен попасть своим SYN пакетом четко в это промежуток и сразу же запихнуть данные
мм. перепроверил и исправил свой пост. спасибо.
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Arduino Mega Server

Сообщение olehs » Ср авг 26, 2015 12:03 pm

timapple писал(а): мм. согласен для приведенного мной примера. вот только так вполне может быть после отработки второго сокета - первый может быть занят во время обработки второго и тогда вместо третьего снова будет взят первый.
Да, тут Вы правы. Дописал Update с этим случаем к посту с примером алгоритма.
Alex писал(а): Или оставить как есть: 3 сокета у веб-интерфейса, 1 у всех остальных, благо там только одиночные команды гуляют.

Можно ещё переходить на «форсированный» режим при подключении браузера и откатываться на стандартный при отключении (ведь веб-интерфейс не всегда подключен)
Мне кажется на данном этапе это самый рабочий вариант.

Alex, а вообще проект получился очень классным и я поражаюсь, как это все туда влезло )). Большое спасибо за труды!
Сам я проектом, в ближайшее время думаю, не воспользуюсь, т.к. мои контроллеры уже работают на самописных скетчах, работают также и автономно, и в связке с МД. Да и все красоты мне проще в МД отображать.

А вот от библиотеки веб-сервера с реализацией хоть какого-то подобия многопоточности я бы не отказался.
timapple
Сообщения: 4
Зарегистрирован: Пн авг 24, 2015 1:15 pm
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Arduino Mega Server

Сообщение timapple » Ср авг 26, 2015 12:06 pm

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

Re: Arduino Mega Server

Сообщение Alex » Ср авг 26, 2015 1:31 pm

Стоит попробовать уложиться в один запрос - мне кажется так будет максимально быстро.
Можно, но тут вылезают другие обстоятельства. Страница становится гигантской и начинаются проблемы уже со временем её передачи.
А Ajax по своей сути асинхронен, и если сервер будет занят, то обработается попозже. Главное чтоб запросы были "легкими".
В потоке эти «попозже» приводят к захлёбыванию и желательно не доводить до этого.
А вот от библиотеки веб-сервера с реализацией хоть какого-то подобия многопоточности я бы не отказался.
Ну если всё будет более-менее работать по схеме 3 + 1, то уже хорошо. А переписать всё по уму было бы конечно ещё лучше.
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Arduino Mega Server

Сообщение olehs » Ср авг 26, 2015 2:59 pm

Вот переделал стандартную EthernetServer, чтобы не нужно было выносить цикл за библиотеку.
И еще добавил метод setMaxSocks(int), чтобы можно было держать всегда открытыми нужное к-во сокетов. По умолчанию 1.
Вложения
EthernetServer.zip
(1.24 КБ) 234 скачивания
AVK74
Сообщения: 17
Зарегистрирован: Вс авг 02, 2015 10:58 am
Благодарил (а): 0
Поблагодарили: 0

Re: Arduino Mega Server

Сообщение AVK74 » Чт авг 27, 2015 1:57 pm

Можно еще немного понубить?
Я так понимаю сервер отдает состояние (и если выход можно менять состояние) всех ног (для ног с АЦП и напряжение отдает)
А можно ли с помощью него смотреть и менять переменные внутри программы?
Все таки надо писать инструкцию.
Для часов предлагаю такую http://www.ebay.com/itm/DS3231-AT24C32- ... 3aa26abe27 микросхемку.
Программно она совместима с 1307 (подойдет стандартная либа) только нет ОЗУ и имеет отличную точность. Часы в контроллере очень нужны ибо события по времени востребованы, хоть включение освещения по графику, хоть регулировка температуры суточная, много чего. Брать время из интернета не очень хорошая идея, ИМХО раз устройство автономно, может интернета вообще нет.
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Чт авг 27, 2015 3:12 pm

А можно ли с помощью него смотреть и менять переменные внутри программы?
Конечно можно, посмотрите как это делается с режимом одиночный/тандемный.
Все таки надо писать инструкцию.
Безусловно, но это требует времени и сил.
Брать время из интернета не очень хорошая идея, ИМХО раз устройство автономно, может интернета вообще нет.
По хорошему — да. Я не разбирался, но кажется библиотека Тайм уже поддерживает реальные часы.
AVK74
Сообщения: 17
Зарегистрирован: Вс авг 02, 2015 10:58 am
Благодарил (а): 0
Поблагодарили: 0

Re: Arduino Mega Server

Сообщение AVK74 » Чт авг 27, 2015 4:03 pm

Надо еще подключать библиотеку DS1307 и wire
И я так понял, там есть синхронизация с серверами времени в случае начальной установки.
Предлагаю четко определиться на какие ноги вешать DSку (там всего две ноги) ну и могу сам вписать ее в проект.
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Чт авг 27, 2015 4:47 pm

AVK74 , поймите, я не могу всё делать сам. Поэтому делайте как вам нравится, а потом опубликуйте здесь. Кому надо — воспользуются. Если я буду разбираться с часами — посмотрю ваш проект и возможно включу в дистрибутив.

Те решения, которые я не включил в дистрибутив нужно собирать в одном месте, чтобы желающие могли ими воспользоваться.
GaiverX
Сообщения: 62
Зарегистрирован: Ср авг 26, 2015 3:15 pm
Благодарил (а): 1 раз
Поблагодарили: 6 раз

Re: Arduino Mega Server

Сообщение GaiverX » Чт авг 27, 2015 7:11 pm

Доброго времени суток, господа.
Может кто встречался с такой проблемой - при подключении Arduino Mega 2560 v3 (not original) плата не определяется вообще никак, но питание при этом получает.
В Диспетчере устройств при подключении нет и намека на какую либо реакцию.
Проверено на 3х разных ПК, с W7/8.1/10
Или все таки это проблема в плате, и ее надо в магаз обратно нести.
Ответить