arduino - 如何通过处理检测我的 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,它也不会响应消息,或者从一开始就不会写入消息。那么为什么这不起作用呢?有没有更好的方法来找到正确的串口?
解决方案
推荐阅读
- batch-file - 批量搜索、查找和删除目录、子目录和文件?
- reactjs - 在功能组件中的成功回调期间,箭头函数不起作用
- c - MSVC:是否可以启用特定的语言扩展(即不是一次全部)?
- json - jq 中的 `in` 运算符。但是,它不像我想要的那样工作
- swift - 并行执行合并发布者会创建竞争条件
- android - JKS Keystore 条目不包含证书,别名:* - Expo Android
- java - 应用程序从后台返回,从 google play 安装后
- r - R中是否有一种巧妙的方法来获得加权地理质心?
- numpy - 何时将 pytorch 张量放在 GPU 上?
- reactjs - 从带有封面图像的 React Document 生成 PDF