如何从JavaScript读取串口数据

时间:2013-12-12 16:42:21

标签: javascript arduino processing sensor

我使用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...

2 个答案:

答案 0 :(得分:11)

无法从Web浏览器直接访问本地计算机。出于安全原因,浏览器对机器资源的访问权限非常有限。

要做到这一点,一个选项是为您选择的浏览器编写扩展名。尽管扩展也有各种限制。

选项二是使用本地服务器来提供所需的功能。我个人建议使用node.js(它重量轻,快速且易于实现)。您可以使用https://github.com/rwaldron/johnny-five(如@kmas建议)或https://github.com/voodootikigod/node-serialport来读取/写入串行数据,您可以使用http://socket.io/创建简单服务并通过浏览器连接到它。 Socket.io在现代浏览器中使用WebSockets,并且非常适合实时连接。

答案 1 :(得分:1)

我遇到了类似的问题需要解决。我的数据采集系统(DAQ)(与您的arduino一样)在HTTP,TCP,FTP以及串行中传数据。我必须在服务器上捕获它,然后将其实时发送到我的网页。

我编写的hack在服务器上使用nodejs,并使用" net"使用TCP套接字将DAQ连接到服务器。 nodejs的模块,使用socket.io将服务器连接到HTML页面。

代码和上下文可以在" How to get sensor data over TCP/IP in nodejs?"。

中找到

我使用TCP,因为我想长距离传输数据。您需要将套接字协议修改为串行。

对于串行到TCP重定向,您可以使用来自sensorMonkey for Windows的bloom或他们的processing sketch for * nix / Mac OS。