我編寫了一個處理應用程序,它在接收到串行輸入時使屏幕不可見,並且在沒有串行輸入時再次可見。 (更具體地說,我通過Arduino連接了RFID閱讀器,當它讀取識別的標籤時發送信號)爲什麼我的處理應用程序需要更長的時間才能響應?
當我運行該應用程序時,它工作得很好。當我刪除我的標籤時,屏幕會變黑,當我替換它時,應用會再次隱藏。但是如果我將標籤放在閱讀器上的時間更長,那麼當我將它移除時,屏幕再次變黑時也需要更長的時間。但它不是永久性的:如果標籤保持較長時間,則響應速度較慢,反之亦然,即使多次。
爲什麼響應時間會改變?我忘了關閉某些東西,從而造成內存泄漏?某種程度上的延遲會隨着時間而增加嗎?
這是我的代碼:
import processing.serial.*;
Serial myPort; // Create object from Serial class
String val; // Data received from the serial port
void setup() {
String portName = Serial.list()[3]; //change the 0 to a\ 1 or 2 etc. to match your port
myPort = new Serial(this, portName, 9600);
fullScreen();
surface.setAlwaysOnTop(true);
background(000);
}
void draw() {
if (myPort.available() > 0)
{ // If data is available,
val = myPort.readStringUntil('\n'); // read it and store it in val
} else {
val=null;}
if (val != null && val.length() > 1) { //if a serial input is received
surface.setVisible(false); // make the screen invisible
}
else { //otherwise
surface.setVisible(true); // make the screen visible
}
delay(50); // wait for 50 ms to stop flickering
}
爲什麼你在'draw()'函數內調用'delay()'?如果你刪除它會發生什麼? –
這主要是因爲RFID閱讀器不夠好,偶爾會輸出''null''',即使有標籤要讀取。如果我將其刪除,則每次發生處理屏幕時都會變黑,這是每秒幾次。 –
刪除對'delay()'的調用之後,您是否仍然遇到響應時間問題?隨機的null值是我們可以處理的一個單獨的問題。 –