使用网络处理控制arduino(javascript)

时间:2013-03-22 18:19:27

标签: java web arduino processing

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

经过研究,我似乎相信最好的方法将是javascript(从arduino上读取数据时,PHP似乎有问题)。

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

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

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

非常感谢帮助!

以下是代码:(注释已删除)

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++;
}
}
}

3 个答案:

答案 0 :(得分:1)

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

您可以使用node.js或PC上的某些内容编写基本HTTP服务,并对数据请求进行仲裁,以便不从浏览器直接向设备发出请求。

有意义的是,浏览器会严格控制客户端对硬件接口的JS访问,如果这确实是你正在尝试的那样。

答案 1 :(得分:1)

正如Drew R指出的那样,你可以通过Serial读取一个快速的“服务器”应用程序来读取Arduino数据,然后通过HTTP将其广播到你需要的地方。

我建议您查看cosm,它可能会为您做一些工作,并为您构建的Arduino设备提供一个很好的js API。 另请查看他们的examples

答案 2 :(得分:1)

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

某种服务器层可能是最好的解决方案,但如果您打算在JS中完成所有操作,我认为这是可行的方法。