I have this recording function that updates every 5 sec and records data as such:
void SaveToFile ()
{ //table.clearRows();
//newRow.setInt("MACH ID", table.getRowCount() - 1);
for (int i=1; i<=10; i++)
{TableRow newRow = table.addRow();
newRow.setString("MACH ID", Mach_Name[i]);
newRow.setString("CUMM UPTIME", HuUpTime[i]);
newRow.setInt("UPTIME %", round (Pr[i]));
newRow.setInt("CYCLES", Cycles[i]);
newRow.setString("LAST TIME", TimeStampArr[i]);
newRow.setString("DATE", DateStamp);
}
////////////////////////
//println("ROW COUNT= " + table.getRowCount());
Filename = "/data/"+"Infinity_Report_"+"Perpetual_V_09" + ".csv"; //DateStamp
saveTable(table, Filename);
//println("Settings Saved");
}
This is monitoring the uptime of a machine. Every day I would generate a new file but now my needs have changed.
I would like to write in the same file this data and move to a new set of rows after midnight.
If I keep “ClearRows” it deletes the previous days…
I want to keep them.
Is it possible to start clearing and re-writing only from this row to this row? ( I would increment that with each date change)/
Thanks
Mitch
I’m sorry I don’t understand.
- Not a new file every day – so, one file. ok
- don’t delete previous days, keep them. ok
- a new “set of rows” after midnight. ?
I don’t understand what “set of rows” is. Normally, if you use addRow, you add a row. There is only one file, and you don’t delete previous rows, you keep them, so this seems like what you want:
1 this is row one
2 this is row two
...
99 this is row ninety-nine
But that is the simplest thing to do, and it seems like you want something else. Could you explain a bit more what you want?
Jeremy , thanks for your help.
I know my explanations are all over…
So:
I dont want o make new files, just one and the file would have a new entry each day.
Stuff would appear like this on the CSV:
| MACH ID |
CUMM UPTIME |
UPTIME % |
CYCLES |
LAST TIME |
DATE |
| 31 |
|
0 |
0 |
|
8_29_2021 |
| 200 |
|
0 |
0 |
|
8_29_2021 |
| 700 |
|
0 |
0 |
|
8_29_2021 |
| POD1 |
|
0 |
0 |
|
8_29_2021 |
| POD2 |
|
0 |
0 |
|
8_29_2021 |
| BHX1 |
|
0 |
0 |
|
8_29_2021 |
| BHX2 |
|
0 |
0 |
|
8_29_2021 |
| EDG1 |
|
0 |
0 |
|
8_29_2021 |
| EDG2 |
|
0 |
0 |
|
8_29_2021 |
| 10 |
|
0 |
0 |
|
8_29_2021 |
| 31 |
|
0 |
0 |
|
8_30_2021 |
| 200 |
|
0 |
0 |
|
8_30_2021 |
| 700 |
|
0 |
0 |
|
8_30_2021 |
| POD1 |
|
0 |
0 |
|
8_30_2021 |
| POD2 |
|
0 |
0 |
|
8_30_2021 |
| BHX1 |
|
0 |
0 |
|
8_30_2021 |
| BHX2 |
|
0 |
0 |
|
8_30_2021 |
| EDG1 |
|
0 |
0 |
|
8_30_2021 |
| EDG2 |
|
0 |
0 |
|
8_30_2021 |
| 10 |
|
0 |
0 |
|
8_30_2021 |
Each day would create a new set of rows in the same file over and over …
Hope I clarified a bit…
Thanks
mitch
Okay, got it. You are updating every five seconds – do you save your file to disk every 5 seconds, or once per day?
If every five seconds, do you want it like this:
- today.log ← updates every five seconds
- history.log ← adds a copy of today.log once per day
or do you want it like this:
- history.log ← last 10 rows change every five seconds, and at midnight, 10 new rows appear and start changing
I decided to record once a day at 6 pm so I went:
cur_hrs = hour();
if (HourPrev !=cur_hrs ) // && Counting)
{HourPrev =cur_hrs;
if (HourPrev == 18 )
println ("Recorded at " + cur_hrs);
SaveToFile ();
}
I wonder if thats gonna work reliably and dont do only one entry per day…
Thanks a lot,
Suggestions welcome.
It depends on how reliable you need the logging to be, and how the log will be used. Most logs write to disk more often than once a day – but maybe that is all you want or need? I don’t know your requirements for the Table in your problem, or the “Infinity_Report” on disk, so I don’t know what to suggest.