Возможности 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? В общем, цель такая - разгрузить микроконтроллер устройства и возложить высокоуровневые задачи на компьютер клиента. |
Первый вопрос - нет.
Второй вопрос - напишите функцию кодирования ваших данных, но результат кодирования вам все равно придется передавать на сервер как параметр. Встречный вопрос - вы хотите, чтобы ваш МП можно было программировать через строку броузера? Т.е. вам безопасность не важна? |
Цитата:
Цитата:
Где бы про все это почитать? |
Почитать о JS можно хоть на этом сайте в разделах "Статьи" и "Книги".
Но мой совет, если хотите получить хороший продукт, надо составить ТЗ и заказать разработку у JS-программера. Выйдет намного быстрее и качественне. |
Если вы будете посылать запрос как POST, то параметр будет в теле запроса, если через адресную строку (GET), то в URL
Цитата:
|
Я как раз и составляю ТЗ, чтобы самому ясно представлять как можно решить эту задачу. Чтобы получилось то, что хочу я, а не то, что смог программист.
Цитата:
Я вижу здесь один недостаток организационного характера. Не получится просто нанять JS-программиста для выполнения работы и потом отпустить. Ведь добавление нового параметра, доступного для конфигурирования в моем устройстве, потребует добавления этого же параметра в перекодирующем скрипте. Короче, этот программер у нас кормится будет, а мы от него зависеть. Просто незнаю как быть. Может научить МП разбирать HTML-формы? А уж дописать или изменить эти формы я и сам смогу. Правильно рассуждаю? |
к вопросу о передаче данных по инициативе сервера
http://javascript.ru/ajax/server-push а насчот последнго, можно обучить не МП разбирать формы, а JS из набора полей "заголовок, кол-во байт, код объекта, код свойства, значение" формировать запрос удобной для МП структуры. Тогда, при условии не изменности структуры запросов, при добавлении новой команды достаточно просто добавить типовую формочку, с переопределенным полем(hidden-типа, например) |
совсем не обязательно кормить программера, Gvozd предложил хорошую идею и вполне реализуемую.
|
Насчет взаимодействия с сервером - все прояснилось. Проблема превратилась в задачу, которую решают известными методами.
Ещё хотел узнать - может ли скрипт вести журнал событий и сохранять его на диск? Или просто писать log в отдельное окно браузера, которое при желании можно сохранить (главное нужно запретить пользователю его закрыть, чтобы не потерять историю событий). |
А рассказать, как говорится, для будующих поколений?
|
Нельзя ни на диск сохранить, ни незакрываемое окно породить...
Короче, песочница... |
Если нету строгой привязки, чтоб было полностью ВЕБ, то для записи можно попробовать две технологии:
1)HTA. позволяет добавив парочку тегов сделать из обычной HTML-страницы некоторое подобие десктопного приложения. насколько помнится, с расширинными правами.точно не уверен 2)WSH.позволяет запускать скрипты написанные на JScript(!!!!) с правами системы. позволяет наворотить много чего(от настройки системы, до работы с файлами). Обе технологии являются приблудой исключительно мелкомягких.таким образом о кросбраузерности/платформенности не идет и речи. в принципе, если количество операторов и рабочих мест ограничено, решение может и сойти. Также есть другое лучшее решение)))) организовать логирование средствами сервера. кстати, еще идея. ппоставить между TCP-сервером и браузером дополнительный HTTP-сервер, с каким-либо скриптовым языком(PHP, PErl...), и на него повесить задачу обработки полей полей получаемых из браузера, и формирование машино-ориентированного запроса, логирование и т.д. ПО моему я видел что-то подобное у Nvidia, или у кого еще. хотя меня такое решение как конечного пользователя взбесило, ибо мне нафик не нужен лишний ВЕБ-сервер на МОЕМ компе)))))) ЗЫ. извините что сумбурно. время позднее а идеи прут)))) если нужны пояснения, спрашивайте |
PHP имхо тут ни к чему - это совершенно ненужное усложнение задачи.
Я так понимаю, что: 1. Есть устройство со слабеньким процессором, умеющее быть простейшим http сервером. 2. Есть браузер клиента. Разобрать GET/POST вручную - не так уж и трудно, подробно это описано тут: http://www.codenet.ru/webmast/php/HTTP-POST.php Можно упростить задачу микропроцессора: Берем форму. Простейшими яваскрипт - операциями собираем из ее данных удобный микропроцессору блок кода, формируем из этого блока еще одно поле формы, напр. с атрибутом hidden. Далее скармливаем микропроцессору этот блок - вычленить один блок данных естественно легче, чем шарахаться по всем данным, собирая по кускам нужные. Лишние поля игнорируются. Это реализовывается буквально парой команд, если вы способны написать работающий веб-сервер, вы с ними легко разберетесь. Причем сей яваскрипт - может быть легко настраиваемым, и работать по принципу перебора полей. Как визуальные редакторы, которые просто на textarea вешаются. Сохранить лог на диск - дайте пользователю скачать его. Ему придется нажать кнопочку, не более. А динамичное получение параметров - можно сделать на основе inframe - и перегружать их, например раз в несколько минут. Причем, можно один из них - сделать диспетчером. Который будет перегружаться по таймеру, и заставлять остальные - перегружаться по мере изменения параметров. уж простите, что несколько сумбурно, просто куча неизвестных - мощность МП, размеры устройства, наличие ПЗУ и РАМ и т.п. Но главное - что яваскрипт прост, и прощает многие ошибки. Поэтому я думаю, вам легко удастся реализовать то, о чем вы говорите. |
Уважаемый Shaman
Обратите внимание на таймстмпы топика. она уже давно мертва) |
Не знаю в тему, ли, но я на vb6 и inpout32.dll написал прогу, у которой в окно грузится html-пага на моём компе, а програма при попытке переход смотрит адрес.
Идея такова, что в адрес пишется что-то вроде index.html?out:adress=880&value=10& для выброса данных в порт (запрос надеюсь понятен?). или index.html?input:adress=880& для ввода, после чего, прога, распарсив запрос, кидает данные в файл port_data.tmp.html в одной папке с прогой и html-файлом. А дальше на этот файл можно натравить FileSystemObjects или iframe. Запросы пага также отсылает через iframe. Всё пашет. Прога тута (с исходниками) - http://rapidshare.com/files/157633764/prog.zip.html |
Кстати, а зачем запрос в нужном виде формировать на стороне клиента? Вполне можно это поручить и серверу. И естественно не методом POST :)
|
сервер мощностью мягко говоря не отличается, да и на нём это вроде как сложнее.
|
Ну, да, в принципе. То есть у Вас основная задача - это сформировать понятный сигнал и отправить/принять его? А по логу я думаю это элементарно, но зачем вАм лог на стороне клиента, типа его история :)
|
Цитата:
Цитата:
Цитата:
|
И даже сервер писать на ассемблере....;)
|
Часовой пояс GMT +3, время: 19:44. |