Intereting Posts

Запись данных на USB HID с использованием Javascript, HTML5 или любого кросс-платформенного языка (поддерживает Android)

Я написал пользовательский интерфейс в HTML5 и JavaScript. Я выбрал эту реализацию, чтобы я мог использовать один и тот же код между Android Chrome и Windows 8 RT.

Теперь моя следующая задача – записать данные в USB HID. Устройство, с которым я общаюсь, рассматривается как СПРЯТАННЫЙ. Я упоминаю эту часть, если есть способ написать HID-устройство, а не USB-устройство RAW.

Я провел много исследований по этому вопросу. Но спецификации HTML5 меняются так часто, что, возможно, я что-то пропустил.

В любом случае, может кто-нибудь предложить язык или реализацию, которые я могу использовать для совместного использования общего кода для доступа к USB-устройству на Android и Windows 8 RT? Если между ними нет возможности поделиться ими, как насчет предложения по обмену USB только на Android?


Ниже приведены мои исследования и выводы:

  • Silverlight: UNSUPPORTED. С точки зрения веб-плагина, не поддерживаемого в Windows 8 RT или Android

  • Вспышка: Возможная опция. Поддерживается в обеих операционных системах, хотя они удалили поддержку Android с выпуском Jelly Bean

  • HTML5: UNSUPPORTED

    • Посмотрел API GamePad, но, похоже, он поддерживает только чтение с геймпада
    • Посмотрел на тег устройства, но этот тег больше не существует в текущем черновике. Я читал, что объект «навигатор» заменяет его в Javascript, но он кажется совершенно другим. Кроме того, устройство предназначено только для приобретения видео и аудио
  • JavaScript: UNSUPPORTED. По моему мнению, это связано с тем, что это будет угроза безопасности.

  • Приложение Chrome Packaged: UNSUPPORTED. Не уверен в поддержке Windows 8 RT. Но он также не поддерживается в Android Chrome.

    • Существует API USB, который выполняет именно то, что мне нужно, но API доступен только для упакованного приложения
  • Java-апплет: UNSUPPORTED. Не уверен в поддержке Windows 8 RT. Но он также не поддерживается в Android Chrome.

    • Доступно много ресурсов, касающихся связи с USB-устройствами. Однако, поскольку java-апплеты не поддерживаются на смартфонах, это оказывается неподдерживаемым.
  • Несколько полезных сообщений

    • Как отправлять и получать данные на последовательный порт или порт USB в asp.net?
    • Доступ к USB из веб-приложения для кросс-кросс-браузера возможен вообще?
    • Возможно ли предоставить javascript API для управления USB, LPT, COM-устройствами?

Я действительно думал о том, как делать что-то похожее на это ….

Вот один из способов сделать это, если у вас есть контроль над компьютером, на котором установлено устройство USB:

Попросите компьютер с USB-устройством запустить веб-сервер, такой как apache / php. Попросите его только слушать localhost.

Затем на просматриваемой html-странице выполните пост ajax в localhost / somescript.php (или cgi или cfm или что-то еще).

В скрипте php / cgi обмениваются данными с USB-устройством, а затем возвращают строку json в браузер, говоря, что что-то произошло.


ОБНОВИТЬ:


Другой подход заключается в использовании пользовательских протоколов URL. Вы создаете исполняемый файл и устанавливаете его на клиентский компьютер вместе с вашим пользовательским протоколом url.

Затем вы можете вызывать исполняемый файл из браузера, используя свой собственный протокол url.

Существует еще один альтернативный веб-узел Socket.Create сервер веб-сокета, который будет обращаться к USB-устройству в локальной системе.

Подключите веб-сервер с помощью веб-сокета из веб-приложения. У Socket есть стандартный Api

Вы можете сделать что-то подобное

var host = "wss://localhost:25000/test"; Websokcet ws = new WebSocket(host); 

Вы можете создать свой веб-сервер sokcet с помощью RFC 6455

Для более старого браузера вы также можете думать о http-сервере.

Посмотрите на JSFS. Он работает аналогично подходу Chris_vr и уже является рабочим решением.

https://github.com/jsfsproject/jsfs . Он бесплатный и лицензируется под лицензией GPL.

Если устройство USB, которым вы хотите управлять, является принтером штрих-кода, вы можете использовать jZebra

https://code.google.com/p/jzebra/

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

Как насчет этого?

Запись на последовательный порт:

 var writeSerial=function(str) { chrome.serial.write(connectionId, str2ab(str), onWrite); } // Convert string to ArrayBuffer var str2ab=function(str) { var buf=new ArrayBuffer(str.length); var bufView=new Uint8Array(buf); for (var i=0; i<str.length; i++) { bufView[i]=str.charCodeAt(i); } return buf; } 

Подробнее на странице http://developer.chrome.com/apps/app_hardware.html