串口输出未传输到文件(使用处理)

时间:2018-05-29 14:20:53

标签: arduino processing

我无法将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代码或处理代码的特定顺序?还有什么可能是问题?

1 个答案:

答案 0 :(得分:0)

正如你所说:

  

从Arduino传感器收集了大量数据后,文件仍为空。

我假设您通过Arduino IDE串行控制台监视Arduino的串行输出。但串行协议无法“提供”Arduino IDE控制台和您处理脚本。

您是否尝试在不打开串行控制台的情况下运行Arduino和Processing脚本?

修改

当然,您的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)收听,您需要设置修改mySerial以按地址添加数组的第二项:

mySerial = new Serial( this, Serial.list()[1], 9600 );