You are reading a single comment by @Robin and its replies. Click here to read the full conversation.
  • Hi,

    I am reading a CSV file.

    1587107584119.07397460937,109,0,443,5487,11174
    1587107884119.04345703125,109,0,443,5503,11198
    1587109990123.19384765625,165,0,445,5546,11242
    1587110290123.16333007812,165,0,445,5567,11271
    
    const storage = require("Storage");
    var csvFile = storage.open("activepedom.data.json", "r");
    

    Then I create an array from the entries.

    function getArrayFromCSV(file, index) {
        i = 0;
        array = [];
        now = new Date();
        while ((nextLine = file.readLine())) { //as long as there is a next line
            if(nextLine) {
                dataSplitted = nextLine.split(','); //split line, 0= time, 1=stepsCounted, 2=active, 3=stepsTooShort, 4=stepsTooLong, 5=stepsOutsideTime
                diff = now - dataSplitted[0]; //calculate difference between now and stored time
                if (diff <= history) { //only entries from the last x ms
                    array.push(dataSplitted[index]);
                }
            }
            i++;
        }
        return array;
    }
    

    To get an array with the first column from all lines in a certain timeframe (diff <= history):

    times = getArrayFromCSV(csvFile, 0);
    

    This works fine.
    But as soon as I want to use the function for other columns, I only receive empty arrays ([]).
    Example:

    times = getArrayFromCSV(csvFile, 0);
    steps = getArrayFromCSV(csvFile, 1);
    

    times is filled correctly, steps is an empty array.
    I can call each one individually, but never more than 1.
    What is wrong?

    Thanks

  • Sat 2020.04.18

    Well Good Morning @Purple-Tentacle. Did a quick hack as I don't have a device I am able to program that supports the 'Storage' module (yet) and works for me.

    Did you try entering csvFile or dump() at the command line?

    >t(1)
    [
      "109",
      "109",
      "165",
      "165"
     ]
    return 109,109,165,165
    
    >t(5)
    [
      "11174",
      "11198",
      "11242",
      "11271"
     ]
    return 11174,11198,11242,11271
    



    Rather than use the debugger, just peppered your function the ol' fashioned way, with my entries remaining far left for comparrison.


    EDIT:
    It appears NebbishHacker posted the exact moment I did, and his analysis confirms what the hack also shows. Entering either command csvFile or dump() would show the contents of memory. Or, write to the WebIDE console as in the hack.


    1 Attachment

About

Avatar for Robin @Robin started