Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Escribir datos en USB HID usando Javascript, HTML5 o cualquier lenguaje de plataforma cruzada (compatible con Android)

He escrito una interfaz de usuario en HTML5 y JavaScript. Elegí esta implementación para compartir el mismo código entre Android Chrome y Windows 8 RT.

Ahora, mi siguiente objetivo es escribir datos en un USB HID. El dispositivo con el que estoy comunicando es tratado como un HID. Estoy mencionando esta parte en caso de que hay una manera de escribir en un dispositivo HID en lugar de un dispositivo USB RAW.

  • SecurityException: Permiso Negación: lectura (sólo en emulador)
  • Android ScrollView no respeta el margen inferior del niño
  • ¿Por qué el "" BluetoothAdapter: startLeScan (): null "" ocurrió cuando BLE Scan en Android?
  • Formato de archivo Android NinePatch .png?
  • Android Lint - Cómo ocultar una advertencia 'El recurso Xxx parece no estar utilizado'
  • Cambiar el icono del cajón de navegación en la barra de acción de Android
  • He hecho muchas investigaciones al respecto. Pero, las especificaciones HTML5 están cambiando tan a menudo que tal vez me perdí algo.

    De todos modos, ¿alguien puede sugerir un lenguaje o implementación que pueda utilizar para compartir código común para acceder a un dispositivo USB en Android y Windows 8 RT? Si no hay una forma de compartir entre los dos, ¿qué tal una sugerencia para obtener la comunicación USB sólo en Android?


    A continuación se muestra mi investigación junto con las conclusiones:

    • Silverlight: NO SOPORTADO. En términos de plugin web, no es compatible con Windows 8 RT o Android

    • Flash: Posible opción. Soportado en ambos sistemas operativos, aunque eliminaron el soporte para Android con el lanzamiento de Jelly Bean

    • HTML5: NO SUSPENDIDO

      • Mirado a la API de GamePad, pero parece apoyar solamente la lectura de un gamepad
      • Observó Etiqueta de dispositivo, pero esta etiqueta ya no existe en el borrador actual. He leído que el "navegador" objeto lo sustituye en Javascript, pero parece completamente diferente. Además, el dispositivo sólo tiene como objetivo la adquisición de vídeo y audio
    • JavaScript: NO SUSPENDIDO. Desde mi entendimiento, esto es porque sería un riesgo de seguridad.

    • Aplicación empaquetada de Chrome: UNSUPPORTED. No está seguro sobre el soporte en Windows 8 RT. Pero, no es compatible con Android Chrome, tampoco.

      • Existe una API USB que logra exactamente lo que necesito, pero la API solo está disponible para una aplicación empaquetada
    • Java Applet: UNSUPPORTED. No está seguro sobre el soporte en Windows 8 RT. Pero, no es compatible con Android Chrome, tampoco.

      • Muchos recursos disponibles sobre cómo comunicarse con dispositivos USB. Sin embargo, dado que los applets java no son compatibles con smartphones, esto no es compatible.
    • Un par de puestos útiles

      • Cómo enviar y recibir datos a puerto serie o puerto USB en asp.net?
      • ¿Es posible acceder al USB desde la aplicación web para cruzar los navegadores cruzados?
      • ¿Es posible proporcionar javascript API para controlar USB, LPT, dispositivos COM?

  • ¿Cómo obtener el número de compilación / versión de tu aplicación de Android?
  • Añadir biblioteca java al proyecto Android Studio con el repositorio maven
  • ¿Qué pasó con la java de Emacs?
  • Quiero reproducir un video de mis archivos o carpeta en bruto
  • Xamarin construir acción de advertencia XA0101
  • Añadir opaco "sombra" (esquema) a Android TextView
  • 5 Solutions collect form web for “Escribir datos en USB HID usando Javascript, HTML5 o cualquier lenguaje de plataforma cruzada (compatible con Android)”

    Realmente he pensado en cómo hacer cosas similares a esta ….

    Aquí está es una manera segura de hacerlo si tiene control sobre la computadora que tiene el dispositivo USB conectado:

    Haga que la computadora con el dispositivo USB ejecute un servidor web como apache / php. Haga que sólo escuche localhost.

    A continuación, en la página html que se está viendo, ejecute una publicación ajax en localhost / somescript.php (o cgi o cfm o lo que sea).

    En php / cgi script se comunica con el dispositivo USB y luego devuelve una cadena json al navegador diciendo que algo sucedió.


    ACTUALIZAR:


    Otro enfoque consiste en utilizar protocolos de URL personalizados. Crea un ejecutable y "lo instala" en el equipo cliente junto con su protocolo de url personalizado.

    A continuación, puede invocar el archivo ejecutable desde el navegador mediante su protocolo de url personalizado.

    Hay una alternativa más Web Socket.Create un servidor de socket web que tendrá acceso al dispositivo usb en el sistema local.

    Conecte su servidor web utilizando Web Socket de Web Application.Web Socket tiene estándar Api

    Puedes hacer algo como esto

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

    Puede crear su servidor web sokcet utilizando RFC 6455

    Para el navegador más antiguo que se puede pensar en el servidor http también.

    Por favor, eche un vistazo a JSFS. Funciona de manera similar al enfoque de Chris_vr y ya es una solución de trabajo.

    https://github.com/jsfsproject/jsfs . Es gratis y tiene licencia bajo GPL.

    Si el dispositivo USB que desea controlar es una impresora de código de barras, puede utilizar jZebra

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

    Este es un applet que se comunica directamente con las impresoras conectadas localmente.

    ¿Qué tal esto?

    Escribir en un puerto serie:

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

    Más en http://developer.chrome.com/apps/app_hardware.html

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.