2013-12-12 80 views
9

我使用USB将Arduino连接到我的笔记本电脑,并且可以使用Processing读取串行数据。如何从JavaScript读取串行端口数据

有什么办法可以将这些数据实时获取到本地浏览器中吗?例如,显示串口值的文本字段?它不必连接到互联网。

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... 
+1

你应该看看这个:https://github.com/rwaldron/johnny-five。也许它可以帮助你。 – kmas

回答

10

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

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

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

+0

谢谢!我已经尝试过使用浏览器扩展(Seriality),但它只适用于OS X上的Safari。看来我再也不能避免查看Node.js! – Kokodoko

+0

...虽然要求有点让我感到困惑。的XCode?命令行工具?蟒蛇? (但不是最新的?)...对于这样一个简单的问题来说,弄清楚这似乎相当多。 – Kokodoko

+1

除了node.js还有其他选项。我只是认为node.js会非常有用,因为socket.io模块在浏览器中完成了大部分繁重的工作。如果你决定使用Python,PHP,Ruby等,你将不得不安装和配置一个web服务器并编写你自己的WebSocket实现,你将不会有后备。 –

1

我有一个类似的问题需要解决。我的数据采集系统(DAQ)(比如你的arduino)以HTTP,TCP,FTP和串口方式传输数据。我必须在服务器上捕获它,然后将其实时发送到我的网页。

我写的黑客在服务器上使用了nodejs,并使用nodejs的“net”模块使用TCP套接字将DAQ连接到服务器,并使用socket.io将服务器连接到HTML页面。

代码和上下文可以在“How to get sensor data over TCP/IP in nodejs?”中找到。

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

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

+0

我看了一下,但它涉及很多步骤,并严重依赖外部服务在线。使用Chrome扩展程序,我基本上可以脱机并仍然可以访问串行端口。 – Kokodoko