3

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

经过研究,我似乎认为最好的方法是 javascript(PHP 似乎在从 arduino 串行读取数据方面存在问题)。

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

我从一个简单的脚本开始,从 arduino 读取传感器数据,从处理 (Java) 运行时效果很好。当我尝试通过 Web 浏览器导出以查看时(通过在处理中使用 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++;
}
}
}
4

3 回答 3

1

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

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

于 2013-03-25T05:18:59.363 回答
1

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

我建议还看看cosm,它可能会为你做一些工作,并为你构建的 Arduino 设备提供一个很好的 js API。也看看他们的例子

于 2013-03-23T17:06:26.400 回答
1

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

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

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

于 2013-03-22T18:38:20.393 回答