[英]How to read serial port data from JavaScript
我使用 USB 将 Arduino 连接到我的笔记本电脑,我可以使用 Processing 读取串行数据。
有什么方法可以将这些数据实时输入到本地网络浏览器中? 例如,显示串行端口值的文本字段? 它不必连接到互联网。
Processing 的 JavaScript 版本不支持以下代码,这本来是理想的解决方案。
处理代码是:
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...
无法从 Web 浏览器直接访问本地计算机。 出于安全原因,浏览器对机器资源的访问非常有限。
要做到这一点,一种选择是为您选择的浏览器编写一个扩展程序。 尽管扩展也有各种限制。
选项二是使用本地服务器来提供您需要的功能。 我个人推荐使用 node.js(它重量轻、快速且易于实现)。 您可以使用https://github.com/rwaldron/johnny-five (如@kmas 建议)或https://github.com/voodootikigod/node-serialport读取/写入串行数据,然后您可以使用http:// socket.io/创建一个简单的服务并通过浏览器连接到它。 Socket.io 在现代浏览器中使用 WebSockets,并且在实时连接方面工作得非常好。
我有一个类似的问题要解决。 我的数据采集系统 (DAQ)(如您的 arduino)以 HTTP、TCP、FTP 以及串行方式中继数据。 我必须在服务器上捕获它,然后将其实时发送到我的网页。
我写的hack在服务器上使用nodejs,使用nodejs的“net”模块使用TCP套接字将DAQ连接到服务器,并使用socket.io将服务器连接到HTML页面。
代码和上下文可以在“ 如何在 nodejs 中通过 TCP/IP 获取传感器数据? ”中找到。
我使用 TCP 是因为我想长距离传输数据。 您需要将套接字协议修改为串行。
对于串行到 TCP 重定向,您可以使用来自 Windows 的 sensorMonkey 的bloom 或其*nix/Mac OS 的处理草图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.