Я был введен в Обработка, чтобы получить данные от моего Arduino около 5 часов назад. Кажется, это имеет смысл для меня, и у меня не было опыта работы с Java, но я знаком (но все еще довольно шаток) с C, C + и Matlab, так что ничего удивительного. Я собрал свой код, основанный на множестве других кодов (один метод, с которым я сравнивал, был здесь (официальный сайт) и здесь ), и, похоже, он был точным.
Моя проблема в том, что файл, создаваемый программой Processing, пуст. Кроме того, файл создается непосредственно перед тем, как данные Arduino начинают отображаться в консоли. Поэтому мне интересно, почему файл создается, но на самом деле никогда не изменяется? Я понимаю, что, возможно, файл пуст во время обработки, но когда я нажму кнопку «Стоп», я ожидаю, что будет вызываться keyPressed в соответствии с определением createWriter (ранее связанным).
import processing.serial.*;
// Dynamic constants
String portNum = "COM4"; // Choose COM port -- will vary by computer
String FileName = "test.txt"; // Name will change for data collection
// Static constants
Serial myPort; // Create object from Serial class
String val; // Data received from the serial port
PrintWriter output;
void setup() {
//String portName = Serial.list()[portNum];
myPort = new Serial(this, portNum, 9600);
output = createWriter(FileName);
}
void draw() {
if (myPort.available() > 0) { // If data is available,
val = myPort.readStringUntil('\n'); // read it and store it in val
}
if (val != null) { // For valid data
output.println(val); // print data
println(val); // To see it's working
}
}
void keyPressed() {
output.flush(); // Writes the remaining data to the file
output.close(); // Finishes the file
exit(); // Stops the program
}