keyPressed是否已正确激活?

时间:2018-06-26 23:37:34

标签: file-io arduino processing

大约5个小时前,我被介绍给Processing来从Arduino获取数据。这对我来说似乎很有意义,而且我以前没有Java经验,但是对C,C +和Matlab熟悉(但仍然很不稳定),所以没有什么突然的。我根据许多其他代码(我比较过的一种方法是here (official site)here)将我的代码放在一起,似乎很合适。

我的问题是处理中创建的文件为空。此外,该文件是在Arduino的数据开始在控制台中显示之前创建的。所以我想知道为什么创建了文件却从未真正更改过?我知道在Processing运行时文件可能是空的,但是当我按下停止按钮时,我希望按照Processing的createWriter定义(先前已链接)调用keyPressed。

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
}

1 个答案:

答案 0 :(得分:0)

  

当我按下停止按钮时,我希望keyPressed会被调用

这不是<?php //and here I need to use de first.php $value variable ?> 函数的工作方式。当您按下键盘上的某个键时,keyPressed()函数将触发。按下停止按钮时不会触发。

尝试单击您的草图窗口(在弹出的窗口中,而不是编辑器中),然后按键盘上的一个键。

如果这没有达到您的期望,那么听起来您将来会遇到debuggingkeyPressed()函数是否按预期运行? draw()变量是否打印出您所期望的?如果您在val函数中添加了println()语句,它会打印出来吗?

尝试从一个简单的例子开始。摆脱掉arduino的东西,只输出一个硬编码的文件。然后,如果您遇到困难,可以发布MCVE以及更具体的问题。祝你好运!