【问题标题】:Controlling arduino using processing over the web (javascript)使用网络处理控制 arduino (javascript)
【发布时间】:2013-03-12 17:16:27
【问题描述】:

我正在尝试使用串行端口(串行 = USB。我不想使用以太网屏蔽,因为我正在将 USB 连接到 XBEE 设备)通过网络控制和接收来自我的 arduino 的数据。

经过研究,我似乎认为最好的方法是 javascript(PHP 似乎无法通过串行方式从 arduino 读取数据)。

目前我正在尝试使用 Processing 与 arduino 交互。

我从一个简单的脚本开始,从 arduino 读取传感器数据,当从处理 (Java) 运行时它工作正常。当我尝试通过 Web 浏览器导出以查看时(通过在处理中使用 javascript),我在浏览器中看到除了传感器数据本身之外的所有内容。

我的理解(更像是猜测)是,由于某种原因,从 Web 浏览器调用 COM 端口时不会打开(可能是安全问题?)。在 PC (WIN7) 和 MAC (OSX) 上都会出现同样的现象。

我们将不胜感激!

这是代码:(已删除cmets)

import processing.serial.*;
Serial myPort;      
int xPos = 1;      

void setup () {

size(400, 300);        

println(Serial.list());

myPort = new Serial(this, Serial.list()[0], 9600);

myPort.bufferUntil('\n');

background(0);
}
void draw () {

}

void serialEvent (Serial myPort) {

String inString = myPort.readStringUntil('\n');

if (inString != null) {

inString = trim(inString);

float inByte = float(inString);
inByte = map(inByte, 0, 1023, 0, height);


stroke(127,34,255);
line(xPos, height, xPos, height - inByte);


if (xPos >= width) {
xPos = 0;
background(0);
}
else {

xPos++;
}
}
}

【问题讨论】:

    标签: java web arduino processing


    【解决方案1】:

    这可能是在回避问题,但听起来您需要在设备和 HTTP 服务之间实现一层分离。

    您可以使用 node.js 或 PC 上的其他东西编写基本的 HTTP 服务并仲裁数据请求,这样请求就不会从浏览器直接发送到设备。

    浏览器会严格控制客户端 JS 对硬件接口的访问是有道理的,如果这确实是您正在尝试的话。

    【讨论】:

      【解决方案2】:

      正如 Drew R 指出的那样,您可以创建一个快速的“服务器”应用程序,该应用程序通过串行读取 Arduino 数据,然后通过 HTTP 将其广播到您需要的内容。

      我还建议您查看cosm,它可能会为您完成一些工作,并为您构建的 Arduino 设备提供一个不错的 js API。 也看看他们的examples

      【讨论】:

        【解决方案3】:

        您是否考虑过使用 ser2netWindows Serial Proxy 之类的东西?在机器上运行它以将串行端口代理到 TCP 端口,然后在 Javascript 中使用 WebSockets 与之对话。

        某种服务器层可能是最好的解决方案,但如果你打算在 JS 中完成这一切,我认为这是要走的路。

        【讨论】:

          猜你喜欢
          • 2012-01-03
          • 2023-03-08
          • 1970-01-01
          • 2011-02-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-20
          相关资源
          最近更新 更多