我尝试使用串行连接将 Arduino 与我的处理程序连接,但在运行草图时出现此错误。
这是我的处理程序:
import processing.serial.*;
Serial port;
void setup() {
size(400,400);
}
void draw() {
port = new Serial(this, "COM3", 115200);
println(port);
if(port.available() > 0) {
println("yes");
if(port.readStringUntil('\n').equals("test")) {
println("y");
port.write("test_nc");
}
}
}
还有我的Arduino程序
boolean isConnected = false;
boolean lookForPC = true;
void setup() {
Serial.begin(115200);
}
void loop() {
if (lookForPC) {
while (!isConnected) { //looking for pc serial connection
Serial.println("test");
delay(500);
if (Serial.available() > 0) {
if (Serial.readStringUntil('\n').equals("test_nc")) {
Serial.println("ok");
isConnected = true;
}
}
}
}
Serial.println("done");
}
我读到问题可能来自于 arduino IDE 同时侦听串行端口,但是当处理是唯一运行的程序时,我会得到相同的错误。
我尝试重新启动我的电脑并更改 Arduino 的 USB 端口,但即使 Arduino 未运行,我也总是收到此错误。
谢谢你。
我不确定我是否理解您想要做什么。您发布的代码对我来说毫无意义。也许用文字解释你想要完成什么。同时,请看看您是否可以运行这个简单的演示(替换您系统的 com 端口)。为了避免“忙”错误,我首先上传了 Arduino 代码,然后关闭编辑器并切换到“处理”。我相信对于串行事件使用serialEvent()函数比使用draw()更好。
处理代码:
import processing.serial.*;
Serial port;
String inStr; // Input string from serial port
void setup() {
surface.setVisible(false);
printArray(Serial.list());
port = new Serial(this, Serial.list()[3], 9600);
}
void draw() {
}
void serialEvent(Serial p) {
inStr = p.readStringUntil('\n');
if (inStr != null) {
inStr = trim(inStr);
println(inStr);
}
}
Arduino代码:
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("Processing is great.");
}