|
|
  |
Web-интерфейс в железке, How does it write in code? |
|
|
|
Oct 1 2015, 09:23
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 30-06-07
Пользователь №: 28 806

|
Здравствуйте, Большие Дядьки!
Прогаю я железки с 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 выдавать страницу порциями и смотреть некие ключевые слова, при встрече которых, надо подставлять на их место значения параметров (которые хотим отразить на странице). Т.е. гоняется туда-сюда море текстовой информации, и требуется постоянный парсинг текста при ответе.
В общем, посвятите как пишутся серьёзные веб-интерфейсы для железок. У меня дома роутер Зухель, вот у него это сделано красиво... вот как они это делают? в плане программинга.
|
|
|
|
|
Oct 1 2015, 09:36
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 30-06-07
Пользователь №: 28 806

|
Цитата(Огурцов @ Oct 1 2015, 12:31)  ajax если не затруднит, приведите пожалуйста, короткий пример, как отправить сформированный в массиве пакет (не обязательно текстовый) на заданный IP-адрес в заданный IP-порт
|
|
|
|
|
Oct 1 2015, 09:47
|
Знающий
   
Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250

|
Браузеры не умеют работать с бинарными массивами, надо использовать кодирование base64 (я так делал realtime видеотрансляцию на вебсокетах). А тоже поначалу обрадовался: думал, с вебсокетами можно будет работать в браузере точно так же, как в консольке с обычными сокетами... В общем, либо передавать данные в текстовом виде, либо в base64, либо отказаться от использования браузера. P.S. вот так у меня отправляются/принимаются команды для управления шаговиками через вебсокеты.
Сообщение отредактировал Эдди - Oct 1 2015, 09:49
|
|
|
|
|
Oct 1 2015, 10:06
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 30-06-07
Пользователь №: 28 806

|
Цитата(Эдди @ Oct 1 2015, 12:47)  Браузеры не умеют работать с бинарными массивами, надо использовать кодирование base64 (я так делал realtime видеотрансляцию на вебсокетах). А тоже поначалу обрадовался: думал, с вебсокетами можно будет работать в браузере точно так же, как в консольке с обычными сокетами... В общем, либо передавать данные в текстовом виде, либо в base64, либо отказаться от использования браузера. P.S. вот так у меня отправляются/принимаются команды для управления шаговиками через вебсокеты. посмотрел буду разбираться. Есть ещё работающие только в Chrome решения. А если для отправки запроса на данные, отправлять с помощью PUT в железку файл а в файле уже бинарные данные (которые легко декодировать). А железка готовит ответ, потом я у неё делаю GET файла с ответом, и железка отвечает тоже файлом с бинарным содержимым, который уже распарсивает на контролы JS ? (к сообщетсву)прошу понять, технологий много, не хотелось бы долго топтаться на месте пробую то одну то другую.
|
|
|
|
|
Oct 1 2015, 10:33
|
Знающий
   
Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250

|
Цитата(Tanker @ Oct 1 2015, 13:06)  Есть ещё работающие только в Chrome решения. Эта дрянь ничуть не лучше сдохшего флеша. Если уж хотите что-то делать, старайтесь стандартов придерживаться: безо всяких быдлофлешей, жокварей и прочих жабкоапплетов. Цитата А если для отправки запроса на данные, отправлять с помощью PUT в железку файл а в файле уже бинарные данные (которые легко декодировать). Можно, но каждый раз придется жамкать "submit" (по соображениям безопасности) Цитата А железка готовит ответ, потом я у неё делаю GET файла с ответом, и железка отвечает тоже файлом с бинарным содержимым, который уже распарсивает на контролы JS 146%, что не взлетит. Почему вам не хочется сериализовать данные? Все-таки, браузер нельзя научить работать с бинарными данными, иначе получится, что вы голой задницей во весь мир торчите!
|
|
|
|
|
Oct 1 2015, 12:41
|

Знающий
   
Группа: Свой
Сообщений: 633
Регистрация: 21-05-10
Из: Томск
Пользователь №: 57 423

|
Возможно вам поможет это (+ остальные статьи автора гляньте). Разумеется, т.к. оно для Arduino, использовать в серьёзном проекте не будете, но зато можно посмотреть, как там реализовано это: Цитата полноценный веб-сервер, динамически обновляющий контент без остановки сервера, поддерживающий в полном объёме HTML5, CSS3, JavaScript, Ajax, Processig, THREE.js, сторонние библиотеки и т.д. Брать тут.
--------------------
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|