#javascript #html #tizen
#javascript #HTML #tizen
Вопрос:
как вы можете видеть из моего предыдущего вопроса, я очень новичок в мире программирования. Я попытался разработать приложение для устройства Tizen (Samsung Gear S), которое считывает частоту сердечных сокращений и показывает ее. Я использовал шаблоны и попытался записать данные в файловую систему, но столкнулся с некоторыми проблемами и начал разрабатывать простое приложение, которое будет отображать частоту сердечных сокращений на экране. Я использовал некоторые фрагменты кода с сайта разработчиков Tizen, и я смог консольно регистрировать данные. Теперь я хочу передать эти данные в «текстовое поле, подобное текстовому полю» (извините за эти слова :)), которое в конечном итоге будет отображаться на экране приложения при запуске. Сначала я попробовал использовать супер простое приложение, которое показывало строку hello world в текстовом поле, и это сработало. Теперь я пытаюсь настроить код для своих целей. Я хочу, чтобы поток данных отображался в поле непрерывно, а не только один раз, и, возможно, мне придется использовать другой тип кода. Ниже приведен мой код, извините за глупый вопрос, но я был назначен на вещь, совершенно далекую от знаний. Заранее спасибо за помощь! Tizen sdk имеет язык Javascript для основных файлов и язык HTML и CSS для графического интерфейса веб-приложения.
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<meta name="description" content="A single-page template generated by Tizen Wearable Web IDE"/>
<title>Tizen Wearable Web IDE - Tizen Wearable - jQuery</title>
<link rel="stylesheet" href="css/style.css" />
</head>
<body>
<div class=contents>
<div style='margin:auto;'>
<span class=content_text id=textbox>Basic</span>
<input type="text" id="mytext">
</div>
</div>
<script type="text/javascript" src="js/jquery-1.9.1.js"></script>
<script type="text/javascript" src="js/main.js"></script>
</body>
</html>
JAVASCRIPT:
var counter = 0;
function onchangedCB(hrmInfo)
{
console.log("Heart Rate: " hrmInfo.heartRate);
console.log("Peak-to-peak interval: " hrmInfo.rRInterval " milliseconds");
counter ;
if (counter > 10)
{
/* Stop the sensor after detecting a few changes */
tizen.humanactivitymonitor.stop("HRM");
}
}
tizen.humanactivitymonitor.start("HRM", onchangedCB);
function onsuccessCB(hrmInfo)
{
console.log("Heart rate: " hrmInfo.heartRate);
}
function onerrorCB(error)
{
console.log("Error occurred: " error.message);
}
tizen.humanactivitymonitor.getHumanActivityData("HRM", onsuccessCB, onerrorCB);
var data = hrmInfo.heartRate;
document.getElementById("mytext").value = data;
document.addEventListener('tizenhwkey', function(e) {
if(e.keyName === "back") {
try {
tizen.humanactivitymonitor.stop("HRM");
tizen.application.getCurrentApplication().exit();
} catch (error) {
console.error("getCurrentApplication(): " error.message);
}
}
});
Комментарии:
1. в журнале консоли я получаю эти строки, и, конечно же, появляется ошибка: js/main.js (19) :Ошибка ссылки: не удается найти переменную: hrmInfo js/main.js (10) : Частота сердечных сокращений: 100
2. Вы получаете сообщение об ошибке? Код выглядит так, как будто вы уже пытались записать его в текстовое поле. С какими проблемами вы сталкиваетесь?
3. Привет! Да, ошибка — это та, которую я написал в комментарии, и в ней говорится, что он не может найти переменную hrmInfo. И думаю, это потому, что я пишу неправильный тип кода, поскольку я полный новичок. Я вижу текстовое поле, но оно, конечно, пустое. И, возможно, это также не лучший способ написать в приложении то, что я хочу! Я действительно продвигаюсь вперед только с попытками, только с супер базовыми знаниями.
Ответ №1:
Я думаю, проблема в том, что document.getElementById("mytext").value = data;
и предыдущая строка не в нужном месте. Я рекомендую добавить эти строки в onchangedCB
, над или под консольными строками. Ожидается, что это место hrmInfo
будет определено, поскольку оно передается в качестве параметра onchangedCB
.
Комментарии:
1. хорошо, спасибо за вашу точку зрения. Но я должен также написать строку var data = hrmInfo.HeartRate; в функции onchangedCB? Спасибо за вашу помощь!
2. Хорошо, я написал что-то вроде этого:
function onchangedCB(hrmInfo) { console.log("Heart Rate: " hrmInfo.heartRate); console.log("Peak-to-peak interval: " hrmInfo.rRInterval " milliseconds"); var data = hrmInfo.heartRate; document.getElementById("mytext").value = data; }
и я вижу скорость! Большое вам спасибо! Я также попытался изменить скорость онлайн (я использую эмулятор шестеренок), и он обновляет значение в режиме реального времени, я думаю! Как вы думаете, есть ли лучший способ отобразить эти данные на экране приложения?3. Я имею в виду что-то отличное от текстового поля, поскольку, на самом деле, я не хочу редактировать свои данные, я только хочу их видеть.