如何通过处理检测我的 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,它也不会响应消息,或者从一开始就不会写入消息。 那么为什么这不起作用呢?有没有更好的方法来找到合适的串口?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)