【问题标题】:How to read serial port data from JavaScript如何从 JavaScript 读取串口数据
【发布时间】:2013-12-12 16:42:20
【问题描述】:

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

【问题讨论】:

标签: javascript arduino processing sensors


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢!我已经尝试过使用浏览器扩展程序(Seriality),但它只适用于 OS X 上的 Safari。看来我不能再避免查看 Node.js!
  • ...虽然这些要求让我有些困惑。 X代码?命令行工具? Python? (但不是最新的?)......对于这样一个简单的问题,似乎需要弄清楚很多。
  • 除了node.js还有其他选项。我只是认为 node.js 是最有用的,因为 socket.io 模块为您在浏览器中完成了大部分繁重的工作。如果您决定使用 Python、PHP、Ruby 等,则必须安装和配置网络服务器并编写自己的 WebSocket 实现,这样就不会有后备。
  • 我最近发现本地运行的谷歌浏览器应用程序(基本上是扩展)可以访问本地外围设备! developer.chrome.com/apps/serial
  • 是的,您可以使用本地扩展。您还可以编写自己的共享库并使用浏览器扩展将其包含在内。例如,您也可以像 Firefox 附加组件一样执行此操作。但这仅适用于用户在浏览器中安装了特定扩展程序并且它可能非常有用,具体取决于您的具体情况。
【解决方案2】:

我有一个类似的问题要解决。我的数据采集系统 (DAQ)(就像您的 arduino)以 HTTP、TCP、FTP 和串行方式中继数据。我必须在服务器上捕获它,然后实时发送到我的网页。

我编写的 hack 在服务器上使用 nodejs,并使用 nodejs 的“net”模块使用 TCP 套接字将 DAQ 连接到服务器,并使用 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。

【讨论】:

  • 我看过,但它涉及很多步骤,并且严重依赖于在线的外部服务。使用 Chrome 扩展程序,我基本上可以离线并且仍然可以访问串口。
猜你喜欢
  • 1970-01-01
  • 2017-09-06
  • 1970-01-01
  • 2015-12-31
  • 1970-01-01
  • 2016-04-04
  • 2018-12-13
  • 1970-01-01
相关资源
最近更新 更多