arduino - 串行输出未传输到文件(使用处理)
问题描述
我无法将 Arduino 传感器数据保存到文本文件中。我正在将传感器数据写入串行端口并使用从串行端口读取该数据并将其写入文件的处理程序。
这是我用于处理的代码。
import processing.serial.*;
Serial mySerial;
PrintWriter output;
void setup() {
mySerial = new Serial( this, Serial.list()[0], 9600 );
output = createWriter( "data.txt" );
}
void draw() {
if (mySerial.available() > 0 ) {
String value = mySerial.readString();
if ( value != null ) {
output.println( value );
}
}
}
void keyPressed() {
output.flush(); // Writes the remaining data to the file
output.close(); // Finishes the file
exit(); // Stops the program
}
数据没有从我的 Arduino 串行监视器传输到 .txt 文件。在我从 Arduino 传感器收集了相当多的数据后,该文件仍然是空的。首先运行 Arduino 代码或处理代码是否有特定的顺序?还有什么问题?
解决方案
正如你所说:
在我从 Arduino 传感器收集了相当多的数据后,该文件仍然是空的。
我假设您正在通过 Arduino IDE 串行控制台监控 Arduino 的串行输出。但是串行协议不能“馈送”Arduino IDE 控制台和您的处理脚本。
那么您是否尝试在不打开串行控制台的情况下运行 Arduino 和处理脚本?
编辑:
当然,您的 Arduino 和处理脚本之间的波特率( 9600 )是否匹配?
mySerial = new Serial( this, Serial.list()[0], 9600 );
编辑#2:
在代码的 setup() 部分中,您正在定义您不想监听的串行端口:(Serial.list()
数组的第一项)
mySerial = new Serial( this, Serial.list()[0], 9600 );
但是,例如在 Os X 上,Serial.list()[0] 是蓝牙传入端口。
我所做的是Serial.list()
通过添加打印整个数组
print(Serial.list());
就在之后void setup() {
您可以在处理控制台中读取端口列表,我的是:
/dev/cu.Bluetooth-Incoming-Port /dev/cu.usbmodem1411 /dev/tty.Bluetooth-Incoming-Port /dev/tty.usbmodem1411
因为您想从 Arduino ( ) 收听cu.usbmodem1411
,您需要设置 modifymySerial
以寻址数组的第二项,如下所示:
mySerial = new Serial( this, Serial.list()[1], 9600 );
推荐阅读
- java - 在 Spring Boot 应用程序中使用 AOP 记录方法调用及其参数
- python - 如何从 Windows 中的任何目录使用 manim
- angular - brotli 压缩后部署 Angular 8 项目
- complex-event-processing - Esper / NEsper EPL 声明
- node.js - 用 nodejs 编写 .conf 文件
- google-calendar-api - Google Calendars API - 插入事件 - 通过电子邮件通知组织者
- apache-spark - Pyspark:向过滤器函数添加参数
- python - csv写双引号
- python - 有没有办法将 8 通道图像传递给 CNN 的 keras?
- javascript - 以角度发射两个组件之间的属性值