Tanker 0 1 октября, 2015 Опубликовано 1 октября, 2015 · Жалоба Здравствуйте, Большие Дядьки! Прогаю я железки с Ethernet-ами. Сейчас я общаюсь с ними по TCP/IP, на порт 512 шлю пакеты с запросами в формате протокола MODBUS TCP/IP, получаю ответы, всё чётко обменивается, на нашем спец-софте вижу значения парметров в железках в виде осциллограмм и могу их менять. Железки на LPC2378 в качестве стека uIP. Но хочется по-взрослому! открываю Браузер, вбиваю IP железки, и на странице в Браузере смотрю параметры/редактирую их. Мне решение задачи видится так: 1) Из Железки по НТТР (порт 80) загружает страницу в Браузер (содержимое html страницы железку не интересует, она просто отрабатывает GET по HTTP) 2) После загрузки страницы в Браузер: 2.1) js со страницы шлёт железке понятные ей запросы по TCP/IP на заданный порт (пакеты MODBUS TCP/IP на которые железка уже умеет отвечать) 2.2) железки отвечает (опять в виде понятного ей формата MODBUS TCP/IP) 2.3) js на странице расшифровывает полученные пакеты их и раскладывает значения по контролам на странице 3) если из контрола я меняю какой либо параметр, то опять таки js отправляет MODBUS TCP/IP пакет в мою железку и в следующий цыкл обмена, значение в контроле обновляется Я посмотрел пример HTTP из комплекта uIP, там подход другой и очень затратный, надо при ответе на GET выдавать страницу порциями и смотреть некие ключевые слова, при встрече которых, надо подставлять на их место значения параметров (которые хотим отразить на странице). Т.е. гоняется туда-сюда море текстовой информации, и требуется постоянный парсинг текста при ответе. В общем, посвятите как пишутся серьёзные веб-интерфейсы для железок. У меня дома роутер Зухель, вот у него это сделано красиво... вот как они это делают? в плане программинга. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 1 октября, 2015 Опубликовано 1 октября, 2015 · Жалоба ajax Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanker 0 1 октября, 2015 Опубликовано 1 октября, 2015 · Жалоба ajax если не затруднит, приведите пожалуйста, короткий пример, как отправить сформированный в массиве пакет (не обязательно текстовый) на заданный IP-адрес в заданный IP-порт Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 1 октября, 2015 Опубликовано 1 октября, 2015 (изменено) · Жалоба Браузеры не умеют работать с бинарными массивами, надо использовать кодирование base64 (я так делал realtime видеотрансляцию на вебсокетах). А тоже поначалу обрадовался: думал, с вебсокетами можно будет работать в браузере точно так же, как в консольке с обычными сокетами... В общем, либо передавать данные в текстовом виде, либо в base64, либо отказаться от использования браузера. P.S. вот так у меня отправляются/принимаются команды для управления шаговиками через вебсокеты. Изменено 1 октября, 2015 пользователем Эдди Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 1 октября, 2015 Опубликовано 1 октября, 2015 (изменено) · Жалоба function stat_httprequest_ready_handler() { if (m_stat_httprequest.readyState != 4) return; clearTimeout(m_timeout_timer_id); document.getElementById("stat").innerText = m_stat_httprequest.responseText; set_properties(m_stat_httprequest.responseText); setTimeout(start_notifier, 1000); } function start_notifier() { if (m_stat_httprequest == null) m_stat_httprequest = new_httprequest(stat_httprequest_ready_handler); m_stat_httprequest.open("GET", "/stat.cgi", true); m_stat_httprequest.send(null); m_timeout_timer_id = setTimeout(timeout_handler, 10000); } Изменено 1 октября, 2015 пользователем Огурцов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanker 0 1 октября, 2015 Опубликовано 1 октября, 2015 · Жалоба Браузеры не умеют работать с бинарными массивами, надо использовать кодирование base64 (я так делал realtime видеотрансляцию на вебсокетах). А тоже поначалу обрадовался: думал, с вебсокетами можно будет работать в браузере точно так же, как в консольке с обычными сокетами... В общем, либо передавать данные в текстовом виде, либо в base64, либо отказаться от использования браузера. P.S. вот так у меня отправляются/принимаются команды для управления шаговиками через вебсокеты. посмотрел буду разбираться. Есть ещё работающие только в Chrome решения. А если для отправки запроса на данные, отправлять с помощью PUT в железку файл а в файле уже бинарные данные (которые легко декодировать). А железка готовит ответ, потом я у неё делаю GET файла с ответом, и железка отвечает тоже файлом с бинарным содержимым, который уже распарсивает на контролы JS ? (к сообщетсву)прошу понять, технологий много, не хотелось бы долго топтаться на месте пробую то одну то другую. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 1 октября, 2015 Опубликовано 1 октября, 2015 · Жалоба Есть ещё работающие только в Chrome решения. Эта дрянь ничуть не лучше сдохшего флеша. Если уж хотите что-то делать, старайтесь стандартов придерживаться: безо всяких быдлофлешей, жокварей и прочих жабкоапплетов. А если для отправки запроса на данные, отправлять с помощью PUT в железку файл а в файле уже бинарные данные (которые легко декодировать). Можно, но каждый раз придется жамкать "submit" (по соображениям безопасности) А железка готовит ответ, потом я у неё делаю GET файла с ответом, и железка отвечает тоже файлом с бинарным содержимым, который уже распарсивает на контролы JS 146%, что не взлетит. Почему вам не хочется сериализовать данные? Все-таки, браузер нельзя научить работать с бинарными данными, иначе получится, что вы голой задницей во весь мир торчите! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 1 октября, 2015 Опубликовано 1 октября, 2015 · Жалоба (к сообщетсву)прошу понять, технологий много, не хотелось бы долго топтаться на месте пробую то одну то другую. Попробуйте технологию websockets совместно с MQTT клиентом в броузере. Сейчас это самый модный тренд. Кстати оба компонента есть в бесплатной RTOS MQX от Freescale. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arhiv6 13 1 октября, 2015 Опубликовано 1 октября, 2015 · Жалоба Возможно вам поможет это (+ остальные статьи автора гляньте). Разумеется, т.к. оно для Arduino, использовать в серьёзном проекте не будете, но зато можно посмотреть, как там реализовано это: полноценный веб-сервер, динамически обновляющий контент без остановки сервера, поддерживающий в полном объёме HTML5, CSS3, JavaScript, Ajax, Processig, THREE.js, сторонние библиотеки и т.д. Брать тут. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться