如何通过处理检测我的 arduino 连接到哪个串行端口?

时间:2021-04-07 12:57:49

标签: arduino serial-port processing

所以我正在为 arduino 为 uni 作业创建一个用户界面。作业需要别人在自己的电脑上运行我的代码,所以需要想办法自动找到arduino连接的端口。

到目前为止,我已经编写了这个函数,它在 setup() 中运行,它循环遍历 Serial.list 中的每个端口并向每个端口发送一条消息。

然后 arduino 应向串行端口打印响应,然后应读取该响应以确认连接。

void serial_port_setup() {
  delay(5000);
  String[] port_list = Serial.list();
  for (int i = 0; i < port_list.length; i++) {
    Serial test_port = new Serial(this, port_list[i], 115200);
    test_port.write('i');
    print("writing to port: ");
    println(port_list[i]);
    delay(500);
    if (test_port.available() > 0) {
      println("port available");
      String serial_string = test_port.readStringUntil('\n');
      if (serial_string.equals("initialising port")) {
        myPort = test_port;
        println("port found");
        break;
      }
    }
  }
  println("couldnt find a port");
}

我拥有的 arduino 代码是

void setup() {
  Serial.begin(115200);
}

void loop() {
  while (Serial.available()) {
    if (Serial.read() == 'i') {
      Serial.println("initialising port");
      Serial.println("yay it worked");  
    } 
  }
}

当我运行此代码时,会打印这些输出行

writing to port: COM1
writing to port: COM3
couldnt find a port

因此,即使 arduino 连接到 COM3,它也不会响应消息,或者从一开始就不会写入消息。 那么为什么这不起作用呢?有没有更好的方法来找到合适的串口?

0 个答案:

没有答案