PaulS:
The setTimeout() method is actually part of the same class that parseInt(), etc. are in. So, myFile.setTimeout() will work.
But, before you set it to a small value, try setting it to a large value, and see if you see any change. I do not think that parseInt() is what is taking the time. If you set the time out value to 10 seconds (the default is one second), and the program takes no longer, then setting it to a smaller value will not speed the program up.
Hi again. I tried that, but nothing changed. So I tried the millis() method you suggested:
- First, I called the Serial.println(millis()) just when the fuction starts, just before calling the file to open, just after that, just before calling the file to close and just after that. And the result is:
millis just when draw curve starts :
23486
millis before first file opening:
23529
millis after first file opening:
23555
millis just before first file close:
27621
millis before second file opening:
27637
millis after second file opening:
27680
millis before second file closing:
31795
millis after second file closing:
31808
After that i can say that calling the function, the file to open or to close does not take much time.
So I called the Serial.println(millis()) after eatch file treatment (inside while(myFile.available())) and I got this :
millis just when draw curve starts :
16321
millis before first file opening:
16364
millis after first file opening:
16389
millis after every line treatement (file1):
16433
millis after every line treatement (file1):
16487
millis after every line treatement (file1):
16541
millis after every line treatement (file1):
16595
millis after every line treatement (file1):
16649
millis after every line treatement (file1):
16703
millis after every line treatement (file1):
16757
millis after every line treatement (file1):
16812
millis after every line treatement (file1):
16866
millis after every line treatement (file1):
16919
millis after every line treatement (file1):
16973
millis after every line treatement (file1):
17028
millis after every line treatement (file1):
17082
millis after every line treatement (file1):
17136
millis after every line treatement (file1):
17189
millis after every line treatement (file1):
17244
millis after every line treatement (file1):
17298
millis after every line treatement (file1):
17352
millis after every line treatement (file1):
17406
millis after every line treatement (file1):
17461
millis after every line treatement (file1):
17514
millis after every line treatement (file1):
17568
millis after every line treatement (file1):
17623
millis after every line treatement (file1):
17677
millis after every line treatement (file1):
17731
millis after every line treatement (file1):
17784
millis after every line treatement (file1):
17839
millis after every line treatement (file1):
17893
millis after every line treatement (file1):
17947
millis after every line treatement (file1):
18001
millis after every line treatement (file1):
22009
millis just before first file close:
22035
millis before second file opening:
22080
millis after second file opening:
22123
millis after every line treating and plotting:
22180
millis after every line treating and plotting:
22238
millis after every line treating and plotting:
22295
millis after every line treating and plotting:
22352
millis after every line treating and plotting:
22410
millis after every line treating and plotting:
22466
millis after every line treating and plotting:
22523
millis after every line treating and plotting:
22581
millis after every line treating and plotting:
22638
millis after every line treating and plotting:
22695
millis after every line treating and plotting:
22753
millis after every line treating and plotting:
22810
millis after every line treating and plotting:
22866
millis after every line treating and plotting:
22924
millis after every line treating and plotting:
22981
millis after every line treating and plotting:
23038
millis after every line treating and plotting:
23096
millis after every line treating and plotting:
23153
millis after every line treating and plotting:
23211
millis after every line treating and plotting:
23267
millis after every line treating and plotting:
23324
millis after every line treating and plotting:
23382
millis after every line treating and plotting:
23439
millis after every line treating and plotting:
23496
millis after every line treating and plotting:
23554
millis after every line treating and plotting:
23611
millis after every line treating and plotting:
23667
millis after every line treating and plotting:
23725
millis after every line treating and plotting:
23782
millis after every line treating and plotting:
23839
millis after every line treating and plotting:
27846
millis before second file closing:
27873
millis after second file closing:
27917
As you can see, there is a delay (about 4000ms) between the treatment last line treatment and the file closing. (I am calling parseInt 4 times * 4 timeout = 4000ms?).
What do you think?.
(This is the code with millis() printing: )
void drawcurve (int prm, String filex) {
Serial.println("millis just when draw curve starts :");
Serial.println(millis());
tft.fillScreen(TFT_BLACK);
//TFTPrint("thisparam:"+String(prm), 240, 160, 2, 2, TFT_WHITE, TFT_RED);
affgraph = 1;
float maxv = -32767;//was using integers
float minv = 32767;
Serial.println("millis before first file opening:");
Serial.println(millis());
myFile = SD.open(filex);
Serial.println("millis after first file opening:");
Serial.println(millis());
if (myFile) {
int zz = 0;
while (myFile.available()) {
int w1 = myFile.parseInt();
int x1 = myFile.parseInt();
int y1 = myFile.parseInt();
int z1 = myFile.parseInt();
switch (prm) {
case 1:
zz = x1; break;
case 2:
zz = y1; break;
case 3:
zz = z1; break;
}
if (w1 != 0 || x1 != 0 || z1 != 0 || y1 != 0) {
if ((zz / 100) > maxv) {
maxv = (zz / 100);
}
if ((zz / 100) < minv) {
minv = (zz / 100);
}
}
Serial.println("millis after every line treatement (file1):");
Serial.println(millis());
}
}
Serial.println("millis just before first file close:");
Serial.println(millis());
myFile.close();
Serial.println("millis before second file opening:");
Serial.println(millis());
myFile = SD.open(filex);
Serial.println("millis after second file opening:");
Serial.println(millis());
if (myFile) {
float yy = 0;
while (myFile.available()) {
int w2 = myFile.parseInt();
int x2 = myFile.parseInt();
int y2 = myFile.parseInt();
int z2 = myFile.parseInt();
switch (prm) {
case 1:
yy = x2; break;
case 2:
yy = y2; break;
case 3:
yy = z2; break;
}
int minvm = minv;
int maxvm = maxv;
maxvm = maxvm + 1;
float ech = (maxv + 1 - minv) / 5;
// yy=x;
if (w2 != 0 || x2 != 0 || z2 != 0 || y2 != 0) {
Graph( w2, yy / 100, 40, 260, 400, 200, 0, 60, 10, minvm, maxvm, ech, "Light", "Time", "L it", TFT_BLUE, TFT_WHITE, TFT_WHITE, TFT_WHITE, TFT_BLACK, affgraph);
// TFTPrint(String(maxv), 100, 150, 2, 2, TFT_BLACK, TFT_RED);
// TFTPrint(String(minv), 100, 180, 2, 2, TFT_BLACK, TFT_RED);
// TFTPrint(String(minvm), 100, 210, 2, 2, TFT_BLACK, TFT_RED);
// TFTPrint(String(maxvm), 100, 240, 2, 2, TFT_BLACK, TFT_RED);
// TFTPrint(String(ech), 100, 270, 2, 2, TFT_BLACK, TFT_RED);
}
Serial.println("millis after every line treating and plotting:");
Serial.println(millis());
}
Serial.println("millis before second file closing:");
Serial.println(millis());
myFile.close();
Serial.println("millis after second file closing:");
Serial.println(millis());
}
else {
TFTPrint("can't find " + filex, 0, 150, 2, 2, TFT_BLACK, TFT_RED);
}
}