Перейти к содержанию
    

Web-интерфейс в железке

Здравствуйте, Большие Дядьки!

 

Прогаю я железки с 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 выдавать страницу порциями и смотреть некие ключевые слова, при встрече которых, надо подставлять на их место значения параметров (которые хотим отразить на странице). Т.е. гоняется туда-сюда море текстовой информации, и требуется постоянный парсинг текста при ответе.

 

В общем, посвятите как пишутся серьёзные веб-интерфейсы для железок. У меня дома роутер Зухель, вот у него это сделано красиво... вот как они это делают? в плане программинга.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ajax

если не затруднит, приведите пожалуйста, короткий пример, как отправить сформированный в массиве пакет (не обязательно текстовый) на заданный IP-адрес в заданный IP-порт

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Браузеры не умеют работать с бинарными массивами, надо использовать кодирование base64 (я так делал realtime видеотрансляцию на вебсокетах). А тоже поначалу обрадовался: думал, с вебсокетами можно будет работать в браузере точно так же, как в консольке с обычными сокетами...

В общем, либо передавать данные в текстовом виде, либо в base64, либо отказаться от использования браузера.

 

P.S. вот так у меня отправляются/принимаются команды для управления шаговиками через вебсокеты.

Изменено пользователем Эдди

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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);
    }

Изменено пользователем Огурцов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Браузеры не умеют работать с бинарными массивами, надо использовать кодирование base64 (я так делал realtime видеотрансляцию на вебсокетах). А тоже поначалу обрадовался: думал, с вебсокетами можно будет работать в браузере точно так же, как в консольке с обычными сокетами...

В общем, либо передавать данные в текстовом виде, либо в base64, либо отказаться от использования браузера.

 

P.S. вот так у меня отправляются/принимаются команды для управления шаговиками через вебсокеты.

посмотрел буду разбираться.

Есть ещё работающие только в Chrome решения.

 

А если для отправки запроса на данные, отправлять с помощью PUT в железку файл а в файле уже бинарные данные (которые легко декодировать). А железка готовит ответ, потом я у неё делаю GET файла с ответом, и железка отвечает тоже файлом с бинарным содержимым, который уже распарсивает на контролы JS

?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть ещё работающие только в Chrome решения.

Эта дрянь ничуть не лучше сдохшего флеша. Если уж хотите что-то делать, старайтесь стандартов придерживаться: безо всяких быдлофлешей, жокварей и прочих жабкоапплетов.

А если для отправки запроса на данные, отправлять с помощью PUT в железку файл а в файле уже бинарные данные (которые легко декодировать).

Можно, но каждый раз придется жамкать "submit" (по соображениям безопасности)

А железка готовит ответ, потом я у неё делаю GET файла с ответом, и железка отвечает тоже файлом с бинарным содержимым, который уже распарсивает на контролы JS

146%, что не взлетит.

 

Почему вам не хочется сериализовать данные? Все-таки, браузер нельзя научить работать с бинарными данными, иначе получится, что вы голой задницей во весь мир торчите!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Попробуйте технологию websockets совместно с MQTT клиентом в броузере. Сейчас это самый модный тренд.

Кстати оба компонента есть в бесплатной RTOS MQX от Freescale.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможно вам поможет это (+ остальные статьи автора гляньте). Разумеется, т.к. оно для Arduino, использовать в серьёзном проекте не будете, но зато можно посмотреть, как там реализовано это:

полноценный веб-сервер, динамически обновляющий контент без остановки сервера, поддерживающий в полном объёме HTML5, CSS3, JavaScript, Ajax, Processig, THREE.js, сторонние библиотеки и т.д.

Брать тут.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...