Avatar for user149667

user149667

Member since Sep 2022 • Last active Apr 2024
  • 1 conversations
  • 3 comments

Most recent activity

  • in Bangle.js
    Avatar for user149667

    Thank you very much @Gordon
    I am using BangleJs2. I will use the arraybuffer and share the code very soon.
    Thanks again.

  • in Bangle.js
    Avatar for user149667

    New to both Bangle and JavaScript.
    I am currently trying to save all the HRM, accelerometer and magnetometer output's individual average and standard deviation once in minute. The code below is giving me Interpreter error: LOW_MEMORY.

    Please help.

    Bangle.setCompassPower(1);
    filename = "trolololo.csv";
    
    var allData = require("Storage").open(filename, "a");
    Bangle.setHRMPower(1);
    
    const buffer = {
      start: null,
      end: null,
      data: []
    };
    const maxSamples = 100;
    
    const computeBufferAverage = () => {
      let sum = [], sum2 = [], mean = [], std = [];
      const nrows = maxSamples;
      const ncols = buffer.data[0].length;
      for(let i=0;i<ncols;i++) {
        sum[i] = 0;
        sum2[i] = 0;
        mean[i] = 0;
        std[i] = 0;
      }
    
      for (const data of buffer.data) {
        for (let i=0; i<ncols; i++) {
          sum[i] += data[i];
          sum2[i] += data[i]*data[i];
        }
      }
    
      for (let i=0; i<ncols; i++) {
        mean[i] = sum[i] / nrows;
        std[i] = Math.sqrt(nrows*sum2[i] - Math.pow(sum[i], 2))/(nrows-1);
      }
    
      return {mean: mean, std: std};
    };
    
    Bangle.on('HRM-raw', function(hrm) {
        const hrmRaw = [
          "HRM:",
          hrm.raw,
          hrm.filt,
          hrm.bpm,
          hrm.confidence
        ];
      const compass = Bangle.getCompass();
      const accel = Bangle.getAccel();
    
      if (buffer.data.length === 0) {
        buffer.start = Math.floor(Date.now());
      }
      if (buffer.data.length < maxSamples) {
        buffer.data.push([
          a.x, a.y,a.z,c.x,c.y,c.z,c.dx,c.dy,c.dz,hrm.r­aw,hrm.filt,hrm.bpm,hrm.confidence
        ]);
      } else {
        buffer.end = Math.floor(Date.now());
    
        const result = computeBufferAverage();
        const str = [
          buffer.start,
          buffer.end,
          result.mean.join(","),
          result.std.join(",")
        ].join(",");
        print(str+"\n");
        allData.write(str);
        allData.write("\n");
        buffer.data.length = 0;
      }
    
    });
    
Actions