使用web处理(javascript)控制arduino

使用web处理(javascript)控制arduino,java,web,arduino,processing,Java,Web,Arduino,Processing,我试图通过使用串行端口(串行=USB。我不想使用以太网屏蔽,因为我正在将USB连接到XBEE设备)通过web控制和接收来自arduino的数据 经过研究,我似乎认为最好的方法是javascript(PHP在通过串行方式从arduino读取数据时似乎有问题) 目前,我正在尝试使用处理与arduino接口 我从一个简单的脚本开始读取arduino上的传感器数据,当从processing(Java)运行时,它可以正常工作。当我尝试通过web浏览器(通过在处理过程中使用javascript)导出到视图时

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

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

目前,我正在尝试使用处理与arduino接口

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

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

非常感谢您的帮助

代码如下:(删除注释)


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

您可以使用node.js或位于PC上的其他东西编写一个基本HTTP服务,并仲裁数据请求,以便不会从浏览器直接向设备发出请求


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

正如Drew R所指出的,您可以快速启动一个“服务器”应用程序,通过串行方式读取Arduino数据,然后通过HTTP将其广播到您需要的位置

我还建议您看看哪些可以为您做一些工作,并为您构建的Arduino设备提供一个很好的JSAPI。
还可以看看他们的产品。

您是否考虑过使用类似或的产品?在机器上运行该命令,将串行端口代理为TCP端口,然后在Javascript中使用WebSocket与之通信

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

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