在没有运行 Arduino IDE 的情况下处理“RuntimeException:打开串行端口 COM3 时出错:端口繁忙”

问题描述 投票:0回答:1

我尝试使用串行连接将 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 未运行,我也总是收到此错误。

谢谢你。

arduino processing
1个回答
0
投票

我不确定我是否理解您想要做什么。您发布的代码对我来说毫无意义。也许用文字解释你想要完成什么。同时,请看看您是否可以运行这个简单的演示(替换您系统的 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.");
}
© www.soinside.com 2019 - 2024. All rights reserved.