Интерфейс Javascript с последовательным портом RS-232 - PullRequest
5 голосов
/ 26 февраля 2009

В настоящее время я работаю над проектом, который включает 4-портовый A / V-коммутатор. Этим переключателем можно управлять через RS-232.

Компьютер, который будет взаимодействовать с коммутатором, работает под управлением Vista. Я хотел бы создать гаджет боковой панели, который имеет 4 кнопки - 1 для каждого порта на коммутаторе. Когда пользователь нажимает кнопку, он переключается на этот порт.

Я немного погуглил, и кажется, что нет хорошего способа взаимодействия между javascript и rs-232.

У кого-нибудь есть предложения для меня?

Спасибо!

Ответы [ 9 ]

8 голосов
/ 26 февраля 2009

Вам нравятся запутанные хаки?

Установите веб-сервер. Используйте CGI, Python, PHP, Perl или другой метод для управления последовательным портом со страницы на веб-сервере.

Направьте элемент управления на веб-страницу.

6 голосов
/ 26 февраля 2009

Я думаю, вам нужно добавить промежуточный слой Java или Active-X. JavaScript довольно хорошо (намеренно) изолирован от ОС.

4 голосов
/ 27 февраля 2009

В частности Javascript или просто из браузера каким-то способом? А какой браузер? (IE или Firefox?) Плагины Firefox с использованием XUL + javascript довольно просты, хотя вам все равно придется реализовать что-то в XPCOM (эквивалент Mozilla ActiveX / COM) для работы с RS232.

В качестве альтернативы вы можете использовать JSDB в качестве импровизированного веб-сервера (на альтернативном порту локальной машины). Использование порта RS232 в JSDB до смешного просто:

c:\>jsdb
js>S=new Stream('com1://115200');
com1
js>S.write('\x00');    // send ASCII character 0 to the serial port
1
js>

Таким образом, ваша реализация на стороне браузера может быть любой вашей любимой закладкой / ссылкой / штукой, которая ссылается на http://localhost:9999/comport/1, где 9999 - это порт, который прослушивает JSDB, а «1» - это переключатель последовательного порта. Код JSDB прослушивает порт и отправляет соответствующую команду RS232 после анализа запроса GET из браузера.

3 голосов
/ 28 марта 2012

RealTerm имеет обширный интерфейс COM и легко управляется из JavaScript на окнах. Страница SourceForge имеет версию 2.0.0.57 и i2cchip.com имеет версию 2.0.0.70.

В подкаталоге "examples" есть пример JavaScript, который установлен по умолчанию.

К сожалению, примеры JavaScript, похоже, были удалены из более поздних версий 4 Это все еще возможно сделать, но примеров нет.

2 голосов
/ 27 февраля 2009

У меня нет решения, но здесь может быть начало.

  1. Подписанный Java-апплет даст вам доступ к системе
  2. Используйте RXTX (Java Serial COM API) для подключения к последовательным портам
  3. Апплет должен будет установить файлы в папку jre / ext. После этого перезапустите приложение.

Теперь, если вы запускаете javascript со своего компьютера, вы можете использовать HTA , чтобы иметь полный доступ к системе.

1 голос
/ 27 февраля 2009

Извините, что пишу под своим вопросом - я не зарегистрировался, поэтому теперь я не могу его редактировать.

Я хотел реализовать гаджет Vista Sidebar для этой задачи. к сожалению, похоже, что это просто HTML-документы с javascript, так что, похоже, это не будет хорошим решением для меня. Я, наверное, просто напишу небольшое приложение .Net или что-то в этом роде.

Спасибо за ваш вклад, хотя. Если у кого-то еще есть идеи, я их возьму.

1 голос
/ 26 февраля 2009

Вам необходим компонент ActiveX RS-232, который вы устанавливаете в системе, а затем создаете объект из кода JavaScript в виджете боковой панели. Обратите внимание, что не существует стандарта для создания объектов из компонентов ActiveX, это доступно только в JScript, реализации Microsoft языка, который мы все знаем как Javascript.

1 голос
/ 26 февраля 2009

Вы можете попробовать посмотреть на что-то вроде V8 и написать небольшую оболочку для библиотеки C, которая будет доступна для виртуальной машины.

0 голосов
/ 07 апреля 2009

AFAIK, среда исполнения гаджета Vista поддерживает использование подписанных элементов управления ActiveX. Вы также можете использовать Java. Вы можете создать оболочку ActiveX для .Net, которая имеет достаточную поддержку последовательных устройств. По большей части ActiveX + последовательная связь ограничена коммерческим контролем.

...