2016-09-21 9 views
0

Я очень новичок в мире кодирования, и я немного в беде. Я хочу получать данные о частоте сердечных сокращений из веб-приложения, работающего в веб-приложении Tizen для Samsung Gear S. Веб-приложение является образцом от Samsung, и это работает, конечно. Я нашел некоторые фрагменты кода с сайта-разработчика Tizen для записи в файловой системе. На самом деле я могу создать папку в папке Документы usr с текстовым файлом в ней, но я могу только получить что-то вроде [Объект объекта] в текстовом файле. Итак, что-то написано, но я явно не пишу то, что хочу. Некоторая помощь будет оценена. Заранее спасибо!Я пытаюсь записать в текстовом файле некоторые данные в загружаемом приложении Tizen для Samsung Gear S

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); 
    } 

ответ

0

В каком формате вы хотите написать, чтобы файл?

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

    heartRateData = pData; 
    return pData; 
} 

Эта функция создает и возвращает объект, имеющий два свойства. (rate, rrinterval), а также набор данных для глобальной heartRateData

function getData() { 
    return heartRateData; 
} 

getData() возвращение глобальной hearRateData

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

fs.write(getData()); это попытаться написать object в файл.
Так что объект переводится в строку по умолчанию toString().
object.toString() возвращение [Object object] так файл записывается только [Object object]

Если вы хотите, чтобы это ощутить. попробуйте создать объект и свойства от getdata().

Для примера:

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

Если вы reaplce fs.write(getData()); этому коду.
файл будет написан как он.

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

Благодарим вас за ответ и извините заранее за мое незнание. :) Если я получил его, я также должен установить переменные данные, прежде чем я могу изменить fs.write() правильно? Я могу установить его, например, после объявления функции getData? Еще раз спасибо, я знаю, что я настоящий глупый нооб, но разработка веб-приложений на основе Tizen - это не совсем моя область работы;) – Marcofon

+0

Я попытался объявить данные после getData, и я попытался использовать: fs.write ("rate : "+ data.rate); но теперь, в текстовом файле, я получаю rate: undefined. – Marcofon

+0

У меня есть другой вопрос. Если я что-то изменил в fs.write(), почему он не может написать что-то новое в текстовом файле? Я пытаюсь объяснить: если я использую, например: fs.write ("rate:" + data.rate); У меня есть файл со скоростью: undefined. Если я поставлю также fs.write («RR interval:» + data.rrinterval); и если я перекомпилирую проект, я ожидаю увидеть также RRinterval: undefined, но, похоже, я вижу, что только если я отменил свой экземпляр эмулятора и если я его повторно инициализирую. Я знаю, что это совсем другой вопрос, извините. Я краду слишком много времени от тебя! Еще раз спасибо! – Marcofon

0

Мне удалось написать что-то, помещая ваш код непосредственно внутри функции (fs); но я вижу только один сердечный ритм и один интервал RR. Как я могу написать последовательность данных? Спасибо!

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"); 
      }); 
+0

Любые предложения?UPDATE: теперь, я не знаю, почему, текстовый файл показывает скорость: - и интервал RR: -. Код не тронут. Я понятия не имею! – Marcofon