首页 > 解决方案 > 如何通过处理检测我的 arduino 连接到的串行端口?

问题描述

因此,我正在为 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,它也不会响应消息,或者从一开始就不会写入消息。那么为什么这不起作用呢?有没有更好的方法来找到正确的串口?

标签: arduinoserial-portprocessing

解决方案


推荐阅读