Comment lire les données du port série à partir de JavaScript
J'ai connecté un Arduino à mon ordinateur portable en utilisant le câble USB, et je peux lire le numéro de série de données à l'aide de Traitement.
Est-il possible d'obtenir ces données en temps réel dans un webbrowser? Par exemple, un champ de texte qui indique la valeur à partir du port série? Il n'a pas à être connecté à internet.
La version JavaScript de Traitement ne prend pas en charge le code suivant, qui aurait été la solution idéale.
Le code de Traitement est:
myPort = new Serial(this, Serial.list()[0], 9600);
//read a byte from the serial port
int inByte = myPort.read();
//print it
println(inByte);
//now send this value somewhere...?
//ehm...
Vous devriez regarder ceci : github.com/rwaldron/johnny-five . Peut-être que cela peut vous aider.
OriginalL'auteur Kokodoko | 2013-12-12
Vous devez vous connecter pour publier un commentaire.
Il n'existe aucun moyen d'accéder directement au local de la machine à partir du navigateur web. Pour des raisons de sécurité, les navigateurs ont un accès très limité aux ressources des machines.
Pour ce faire, une option serait d'écrire une extension pour le navigateur de votre choix. Même si les extensions ont également une variété de limites.
Deuxième Option serait d'utiliser le serveur local afin de fournir la fonctionnalité dont vous avez besoin. Personnellement, je recommande l'utilisation de node.js (il est léger, rapide et facile à mettre en œuvre). Vous pouvez lire/écrire des données en série à l'aide de https://github.com/rwaldron/johnny-five (comme @kmas suggéré) ou https://github.com/voodootikigod/node-serialport et que vous pouvez utiliser http://socket.io/ pour créer un service simple et de vous y connecter si le navigateur. Socket.io utilise les WebSockets dans les navigateurs modernes et travaille excepionally bien en temps réel les connexions.
...Bien que les exigences d'un peu de chicane moi. XCode? Outils en ligne de commande? Python? (mais pas la dernière?)... il semble tout à fait beaucoup de choses à la figure, pour une question aussi simple.
Il y a d'autres options que node.js. Je pense juste que node.js qui serait le plus utile, car le socket.io module n'a plus de soulever des poids lourds dans le navigateur pour vous. Si vous décidez d'aller avec un Python, PHP, Ruby, etc, vous devez installer et configurer un serveur web et d'écrire votre propre WebSocket mise en oeuvre et vous n'aurez pas de réserves.
J'ai récemment découvert que, localement, l'exécution de Google Chrome Apps (essentiellement des extensions) PEUVENT avoir accès aux périphériques! developer.chrome.com/apps/serial
Oui, à l'aide d'une extension que vous le pouvez. Vous pouvez également écrire votre propre bibliothèque partagée et de l'inclure à l'aide de l'une extension de navigateur. Vous pouvez également faire la même chose comme un add-on firefox par exemple. Mais cela ne fonctionne que si l'utilisateur dispose de l'extension spécifique installé dans le navigateur et cela pourrait être vraiment utile, en fonction de votre situation spécifique.
OriginalL'auteur Tsanyo Tsanev
J'ai eu le même problème à résoudre. Mon système d'acquisition de Données (DAQ) (comme votre arduino) relais de données en HTTP, TCP, FTP, ainsi que de la série. J'ai eu à le capturer sur le serveur, puis de l'envoyer à ma page web en temps réel.
Le hack que j'ai écrit utilise nodejs sur le serveur, et se connecte DAQ au serveur à l'aide de sockets TCP à l'aide de la "net" module de nodejs et se connecte au serveur de la page HTML à l'aide d'une douille.io.
Le code et le contexte peuvent être trouvés dans la "Comment obtenir les données du capteur au-dessus de TCP/IP dans nodejs?".
J'utilise TCP comme je voulais transmettre des données sur une longue distance. Vous avez besoin de modifier le support de protocole à la série.
Pour la série-à-TCP redirection, vous pouvez utiliser des fleurs à partir de sensorMonkey pour Windows ou leur le traitement de l'esquisse pour *nix/Mac OS.
OriginalL'auteur Chintan Pathak