Marcofon
Marcofon

Reputation: 49

I'm trying to write on a text file some data in a Tizen wearable application for Samsung Gear S

I'm very new to the world of coding and i'm a bit in trouble. I want to get heart rate data from a web app running in a Tizen web app for a Samsung Gear S. The web app is a sample from Samsung and it works, of course. I found some code snippets from the dev site of Tizen for writing on the filesystem. In fact i can create a folder under the usr's Documents folder with a text file in it, but i'm able only to obtain something like [Object object] in the text file. So, something is written, but i'm clearly not writing what i want. Some help will be appreciated. Thanks in advance!

Marco

/**
         * Value of current heart rate.
         *
         * @memberof models/heartRate
         * @private
         * @type {object}
         */
        heartRate = null,

        /**
         * Object represents Heart Rate Monitor data.
         *
         * @memberof models/heartRate
         * @private
         * @type {object}
         */
        heartRateData = {};



    /**
     * Sets heart rate and time values received from sensor.
     * Returns heart rate data.
     *
     * @memberof models/heartRate
     * @private
     * @param {object} heartRateInfo
     * @returns {object}
     */
    function setHeartRateData(heartRateInfo) {
        var pData = {
            rate: heartRateInfo.heartRate,
            rrinterval: heartRateInfo.rRInterval
        };

        heartRateData = pData;
        return pData;
    }

    /**
     * Returns last received motion data.
     *
     * @memberof models/heartRate
     * @private
     * @returns {object}
     */
    function getData() {
        return heartRateData;
    }

    /**
     * Resets heart rate data.
     *
     * @memberof models/heartRate
     * @private
     */
    var newDir, newFile;
    tizen.filesystem.resolve("documents", function(dir) 
        {
           newDir = dir.createDirectory("newDir");
           newFile = newDir.createFile("beats.txt");
           newFile.openStream(
            "w",
            function(fs) {
                 fs.write(getData());
                 fs.close();
            }, function(e) {
                 console.log("Error " + e.message);
            }, "UTF-8");
        });


    tizen.filesystem.resolve("documents", function(dir) 
            {
              var file = dir.resolve("newDir/beats.txt");
               file.openStream(
                    "r", 
                    function(fs) {
                        var text = fs.read(file.fileSize);
                        fs.close();
                        console.log(text);
                    }, function(e) {
                        console.log("Error " + e.message);
                    }, "UTF-8");
            });



    function resetData() {
        heartRateData = {
            rate: '-',
            rrinterval: '-'
        };
    }

    /**
     * Handles change event on current heart rate.
     *
     * @memberof models/heartRate
     * @private
     * @param {object} heartRateInfo
     * @fires models.heartRate.change
     */
    function handleHeartRateInfo(heartRateInfo) {
        setHeartRateData(heartRateInfo);
        event.fire('change', getData());
    }

    /**
     * Starts the sensor and registers a change listener.
     *
     * @memberof models/heartRate
     * @public
     */
    function start() {
        resetData();
        heartRate.start(
            CONTEXT_TYPE,
            function onSuccess(heartRateInfo) {
                handleHeartRateInfo(heartRateInfo);
            },
            function onError(error) {
                console.log('error: ', error.message);
            }
        );
    }

    /**
     * Stops the sensor and unregisters a previously registered listener.
     *
     * @memberof models/heartRate
     * @public
     */
    function stop() {
        heartRate.stop(CONTEXT_TYPE);
    }

Upvotes: 1

Views: 512

Answers (2)

Marcofon
Marcofon

Reputation: 49

I managed to write something putting your code directly inside the function(fs); but, i can see only one heart rate and one RR interval. How can i write a sequence of data? Thank you!

var newDir, newFile;
    tizen.filesystem.resolve("documents", function(dir) 
        {
           newDir = dir.createDirectory("newDir");
           newFile = newDir.createFile("beats.txt");
           newFile.openStream(
            "w",
            function(fs) {
                 var data = getData();
                 fs.write("rate : " + data.rate);
                 fs.write("RR interval : " + data.rrinterval);
                 fs.close();
            }, function(e) {
                 console.log("Error " + e.message);
            }, "UTF-8");
        });

    tizen.filesystem.resolve("documents", function(dir) 
            {
           var file = dir.resolve("newDir/beats.txt");
               file.openStream(
                    "r", 
                    function(fs) {
                        var text = fs.read(file.fileSize);
                        fs.close();
                        console.log(text);
                    }, function(e) {
                        console.log("Error " + e.message);
                    }, "UTF-8");
            });

Upvotes: 1

pius lee
pius lee

Reputation: 1174

What format do you want to write in to file?

function setHeartRateData(heartRateInfo) {
    var pData = {
        rate: heartRateInfo.heartRate,
        rrinterval: heartRateInfo.rRInterval
    };

    heartRateData = pData;
    return pData;
}

This function make and return a object that has two property. (rate, rrinterval) and also set data to global heartRateData

function getData() {
    return heartRateData;
}

getData() return global hearRateData

        function(fs) {
             fs.write(getData());
             fs.close();
        }, function(e) {
             console.log("Error " + e.message);
        }, "UTF-8");

fs.write(getData()); it try to write a object to file.
So object is translate to string by default toString() method.
object.toString() return [Object object] so file is written only the [Object object]

If you want to make it sense. try formating to object and properties from getdata().

For Example:

var data = getData();
fs.write("rate : " + data.rate);
fs.write("RR interval : " + data.rrinterval);

If you reaplce fs.write(getData()); to this code.
file will be written like it.

rate : [some number of rate]
RR interval : [some number of RR interval]

Upvotes: 1

Related Questions