Я пытаюсь записать некоторые данные в текст с помощью устройства Samsung Gear 2. Я использую Tizen sdk. У меня есть следующий код, который я нашел от Tizen turorial for filesystem. Я могу нормально создать файл с моим кодом в папке с документами, но кажется, что я не мог написать что-то в этот файл. Мой файл пуст. EDIT: Мой код может записать значение сердечного ритма, но кажется, что каждый раз, когда он переписывается в том же месте файла. Наконец, я получил только одно значение для сердечного ритма. Как можно записать все значения сердечного ритма во время работы приложения.Запись файла в файловую систему Tizen
window.onload = function() {
var initial = new Date().getTime();
var dataLength = 500;
var dps = []; // dataPoints
var historyDataLength = 5;
var history = [];
var temp = "nada";
function onsuccess(files) {
var testFile = null;
try{
testFile = documentsDir.createFile("test.txt");
if (testFile !== null) {
testFile.openStream(
"w",
function(fs){
fs.write(temp);
fs.close();
}, function(e){
console.log("Error " + e.message);
}, "UTF-8"
);
}
}
catch (e) { // file already exist -> append content
testFile = documentsDir.resolve('test.txt');
if(testFile !== null)
{
testFile.openStream(
"w",
function(fs){
fs.write(temp);
fs.close();
}, function(e){
console.log("Error " + e.message);
}, "UTF-8"
);
}
}
}
function onerror(error) {
console.log("The error " + error.message + " occurred when listing the files in the selected folder");
}
var chart = new CanvasJS.Chart("chartContainer",{
title :{
fontColor: "#ccc",
text: "Heart Rate"
},
backgroundColor: "#222",
data: [{
color: "#CD5C5C",
type: "line",
dataPoints: dps
}]
});
var lastSecond = -1;
var updateChart = function (heartrate) {
time = new Date().getTime() - initial;
console.log("[" + time + ", " + heartrate + "]");
temp = heartrate;
console.log("tempVar"+ temp);
tizen.filesystem.resolve(
'documents',
function(dir){
documentsDir = dir; dir.listFiles(onsuccess,onerror);
}, function(e) {
console.log("Error" + e.message);
}, "a"
);
dps.push({
x: time/1000.0,
y: heartrate
});
if (dps.length > dataLength)
{
dps.shift();
}
var second = Math.round(time/1000.0);
console.log(history.length);
if(lastSecond != second) {
// TODO use avg heart rate instead of smapshot.
history.push({
x: second,
y: heartrate
});
if(history.length > historyDataLength) {
history.shift();
}
lastSecond = second;
}
if(dps.length >= dataLength) {
chart.render();
}
var hrchart = "<center>" + heartrate + "bps</center><table width='100%' cellpadding=4px>";
for(var i = history.length - historyDataLength; i >= 0 && i < history.length; i++) {
hrchart += "<tr><td align='right' width='50%'>" + history[i].x + "s</td><td width='50%'>" + history[i].y + "bps</td></tr>";
}
hrchart += "</table>";
$('#textbox').html(hrchart);
};
updateChart(0);
updateChart(250);
for(var i = 0; i < dataLength; i++) {
updateChart(0);
}
document.addEventListener('tizenhwkey', function(e) {
if(e.keyName == "back")
tizen.application.getCurrentApplication().exit();
});
window.webapis.motion.start("HRM", onchangedCB);
function onchangedCB(hrmInfo)
{
if(hrmInfo.heartRate > 0) {
// add eventListener for tizenhwkey
document.addEventListener('tizenhwkey', function(e) {
if(e.keyName == "back")
tizen.application.getCurrentApplication().exit();
});
updateChart(hrmInfo.heartRate);
} else {
$('#textbox').html("No heart rate detected.");
}
}
}
В консоли, все console.log сообщения печатаются. Во-вторых, как я могу закрыть процесс записи с помощью кнопки? Это команда, которая останавливает процесс записи.
Я немного изменяю свой код. Мне удается написать один раз мой но я хочу написать переменную heartrate в файл с помощью функции append. Почему она просто перезаписывает переменную каждый раз? –
Потому что вы не используете режим «append». Вы создаете новый файл и открываете его для Это не то же самое, что «добавление». – usr2564301
Вы имеете в виду «w», чтобы изменить его на «a». Я меняю его и, похоже, работает, но это правильно одно значение рядом с другим. Я попытался добавить ' \ n 'новый символ линии, но кажется, что он не может распознать этот символ. –