Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Возможности JavaScript для управления hardware-объектом (https://javascript.ru/forum/misc/1162-vozmozhnosti-javascript-dlya-upravleniya-hardware-obektom.html)

AZbest 17.04.2008 16:35

Возможности JavaScript для управления hardware-объектом
 
Поскольку на форуме javascript.ru тусуются самые крутые гуру по web-программированию, хочу задать вам свой вопрос. Сразу скажу, что я не web-программист, я занимаюсь разработкой электронной аппаратуры и firmware к ней.

Так вот, как любое современное оборудование моя "железка" собирается управлятся через web-интерфейс. Принципиально всё ясно - я завожу на своём микроконтроллере (это такой слабенький процессор) tcp-сервер, обрабатываю http-запросы и выдаю код странички. В самом простом случае это уже получилось.

Далее, мне нужно обновлять web-страничку при изменении состоянии моего устройства. Пишу java-скрипт, по тайм-ауту обновляющий страничку (или её часть), тоесть отсылающий запрос моему серверу и постоянно отвлекающий мой микроконтроллер от решения его задач. Вопрос: а может ли web-сервер по своей инициативе обновить данные на web-страничке пользователя? То есть изменить их на страничке тогда, когда они действительно изменились, а не заставлять браузер постоянно себя опрашивать.

Второй вопрос - передача данных от браузера к микроконтроллеру. Пользователь расставляет на страничке галочки, выбирает конфигурацию и нажимает кнопку "Передать". Что получит сервер? Строку вида "http://javascript.ru/forum/newthread.php?do=postthread&f=3"? То есть придется разбирать все эти ?do=&? А может ли java-скрипт сформировать серверу сообщение, понятное для микропроцессора, типа 7E 87 F6 00 0A?

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

vandy 17.04.2008 17:26

Первый вопрос - нет.
Второй вопрос - напишите функцию кодирования ваших данных, но результат кодирования вам все равно придется передавать на сервер как параметр. Встречный вопрос - вы хотите, чтобы ваш МП можно было программировать через строку броузера? Т.е. вам безопасность не важна?

AZbest 17.04.2008 18:02

Цитата:

Сообщение от vandy
вы хотите, чтобы ваш МП можно было программировать через строку броузера?

Надо-бы сделать авторизацию. Понимаю.

Цитата:

Сообщение от vandy
результат кодирования вам все равно придется передавать на сервер как параметр

Поясните пожалуста, как эти параметры передаются на сервер. В теле http-запроса? Или как строка URL? Если в теле запроса, то можно его перекодировать на стороне клиента, а не разбирать микроконтроллером. Не так ли?

Где бы про все это почитать?

vandy 17.04.2008 18:39

Почитать о JS можно хоть на этом сайте в разделах "Статьи" и "Книги".

Но мой совет, если хотите получить хороший продукт, надо составить ТЗ и заказать разработку у JS-программера. Выйдет намного быстрее и качественне.

vandy 17.04.2008 18:43

Если вы будете посылать запрос как POST, то параметр будет в теле запроса, если через адресную строку (GET), то в URL

Цитата:

Если в теле запроса, то можно его перекодировать на стороне клиента, а не разбирать микроконтроллером.
Поясните

AZbest 18.04.2008 09:00

Я как раз и составляю ТЗ, чтобы самому ясно представлять как можно решить эту задачу. Чтобы получилось то, что хочу я, а не то, что смог программист.

Цитата:

Сообщение от vandy
Поясните

Поясняю. Задумано, что браузер пошлет POST-запрос, предварительно обработанный Java-скриптом. Скрипт должен перекодировать данные из HTML-формы в удобную для МП форму типа "заголовок, кол-во байт, код объекта, код свойства, значение".

Я вижу здесь один недостаток организационного характера. Не получится просто нанять JS-программиста для выполнения работы и потом отпустить. Ведь добавление нового параметра, доступного для конфигурирования в моем устройстве, потребует добавления этого же параметра в перекодирующем скрипте. Короче, этот программер у нас кормится будет, а мы от него зависеть. Просто незнаю как быть. Может научить МП разбирать HTML-формы? А уж дописать или изменить эти формы я и сам смогу.

Правильно рассуждаю?

Gvozd 18.04.2008 09:37

к вопросу о передаче данных по инициативе сервера
http://javascript.ru/ajax/server-push
а насчот последнго, можно обучить не МП разбирать формы, а JS из набора полей "заголовок, кол-во байт, код объекта, код свойства, значение" формировать запрос удобной для МП структуры.
Тогда, при условии не изменности структуры запросов, при добавлении новой команды достаточно просто добавить типовую формочку, с переопределенным полем(hidden-типа, например)

vandy 18.04.2008 10:23

совсем не обязательно кормить программера, Gvozd предложил хорошую идею и вполне реализуемую.

AZbest 18.04.2008 10:48

Насчет взаимодействия с сервером - все прояснилось. Проблема превратилась в задачу, которую решают известными методами.

Ещё хотел узнать - может ли скрипт вести журнал событий и сохранять его на диск? Или просто писать log в отдельное окно браузера, которое при желании можно сохранить (главное нужно запретить пользователю его закрыть, чтобы не потерять историю событий).

vandy 18.04.2008 10:51

А рассказать, как говорится, для будующих поколений?


Часовой пояс GMT +3, время: 21:25.