J'ai écrit une interface utilisateur en HTML5 et JavaScript. J'ai choisi cette implémentation pour pouvoir partager le même code entre Android Chrome et Windows 8 RT.
Maintenant, mon prochain objectif est d’écrire des données sur un HID USB. Le périphérique avec lequel je communique est traité comme un HID. Je mentionne cette partie au cas où il serait possible d'écrire sur un périphérique HID plutôt que sur un périphérique USB RAW.
J'ai fait beaucoup de recherches sur le sujet. Mais les spécifications HTML5 changent si souvent que j'ai peut-être oublié quelque chose.
Quoi qu'il en soit, quelqu'un peut-il suggérer un langage ou une implémentation que je peux utiliser pour partager le code commun permettant d'accéder à un périphérique USB sous Android et Windows 8 RT? S'il n'y a pas moyen de partager entre les deux, pourquoi ne pas suggérer que la communication USB ne fonctionne qu'avec Android?
Ci-dessous, mes recherches et conclusions:
Silverlight: UNSUPPORTED. En termes de plug-in Web, non pris en charge sous Windows 8 RT ou Android
Flash: option possible. Pris en charge dans les deux systèmes d'exploitation, bien qu'ils aient supprimé le support pour Android avec la sortie de Jelly Bean
HTML5: UNSUPPORTED
JavaScript: UNSUPPORTED. Si j'ai bien compris, c'est parce que ce serait un risque pour la sécurité.
Application fournie avec Chrome: UNSUPPORTED. Pas sûr de la prise en charge de Windows 8 RT. Mais, il n'est pas non plus pris en charge dans Android Chrome.
Applet Java: UNSUPPORTED. Pas sûr de la prise en charge de Windows 8 RT. Mais, il n'est pas non plus pris en charge dans Android Chrome.
Quelques articles utiles
J'ai en fait réfléchi à la façon de faire des choses semblables à celles-ci ...
Voici un moyen sûr de le faire si vous avez le contrôle sur l'ordinateur auquel le périphérique USB est connecté:
Demandez à l'ordinateur avec le périphérique USB d'exécuter un serveur Web tel que Apache/php. Faites-le uniquement écouter localhost.
Ensuite, dans la page html affichée, exécutez une publication ajax sur localhost/somescript.php (ou cgi, cfm ou autre).
Dans le script php/cgi, communiquez avec le périphérique USB, puis renvoyez une chaîne JSON au navigateur en indiquant que quelque chose s'est passé.
METTRE À JOUR:
Une autre approche consiste à utiliser des protocoles d'URL personnalisés. Vous créez un fichier exécutable et «l'installez» sur l'ordinateur client avec votre protocole URL personnalisé.
Vous pouvez ensuite appeler l'exécutable à partir du navigateur à l'aide de votre protocole d'URL personnalisé.
Il existe une autre alternative à Web Socket.Créez un serveur de socket Web qui accédera au périphérique USB dans le système local.
Connectez votre serveur Web à l'aide de Web Socket à partir de Web Application.Web Socket est doté de l'API standard.
Vous pouvez faire quelque chose comme ça
var Host = "wss://localhost:25000/test";
Websokcet ws = new WebSocket(Host);
Vous pouvez créer votre serveur Web Sokcet en utilisant RFC 6455
pour les navigateurs plus anciens, vous pouvez également penser au serveur http.
S'il vous plaît jeter un oeil à JSFS. Cela fonctionne de manière similaire à l'approche de Chris_vr et est déjà une solution fonctionnelle.
https://github.com/jsfsproject/jsfs . C'est gratuit et sous licence GPL.
Si le périphérique USB que vous souhaitez contrôler est une imprimante de codes à barres, vous pouvez utiliser jZebra.
https://code.google.com/p/jzebra/
Ceci est une applet qui communique directement avec les imprimantes connectées localement.
Que dis-tu de ça?
Ecrire sur un port série:
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;
}