達成したいのは、Tizenスマートウォッチのハートビートセンサーによって返された値の精度を高めることです。 言語がJavascriptなので、値はFloat64数値です。Tizenデバイスのハートビートセンサーから返される値の精度を向上させる
function strip(interval) {
return (parseFloat(interval).toPrecision(4));
}
が、成功しません: は、私はこのような機能を使用しようとしました。たぶん私は何か間違っている、いくつかのプログラミングの間違いをするように、私は本当に知らない。どうやら、IDEは問題なくインストールするためにパッケージをコンパイルしてビルドしますが、この機能の有無にかかわらず、何か違うものを見ることはできません。 以下に私のコード全体を掲載します。機能がいつ作成されたか確認してくださいstrip
。私はゼロを印刷したくないので、escamotage if (interval !== 0) { interval_screen = interval; }
を使用しました。 ROSトピックHeartRateIntervalにストリームされた変数をFloatのままにしておきたいことに注意してください。これが私がparseFloat関数も使用した理由です。 ありがとうございました! コード:
document.addEventListener('tizenhwkey', function(e) {
if(e.keyName === "back")
window.webapis.motion.stop("HRM");
tizen.application.getCurrentApplication().exit();
});
function Connect(){
var ip;
var connection=false;
var interval_screen = 0;
if (document.getElementById("ip").value==="")
{
ip="10.42.0.1";
}
else
{
ip=document.getElementById("ip").value;
}
var ros = new ROSLIB.Ros({
url : 'ws://' + ip +':9090'
});
ros.on('connection', function() {
connection=true;
document.getElementById("Connection_status").setAttribute("color","green");
document.getElementById("Connection_status").innerHTML = 'Connected';
tizen.power.request("SCREEN", "SCREEN_DIM");
});
ros.on('error', function(error) {
document.getElementById("Connection_status").setAttribute("color","orange");
document.getElementById("Connection_status").innerHTML = 'Error';
});
ros.on('close', function() {
document.getElementById("Connection_status").setAttribute("color","red");
document.getElementById("Connection_status").innerHTML = 'Unconnected';
connection=false;
tizen.power.release("SCREEN");
});
var RatePub = new ROSLIB.Topic({
ros : ros,
name : '/HeartRateData',
messageType : 'std_msgs/Float64'
});
var IntervalPub = new ROSLIB.Topic({
ros : ros,
name : '/HeartRateInterval',
messageType : 'std_msgs/Float64'
});
window.webapis.motion.start("HRM", onchangedCB);
function onchangedCB(hrmInfo)
{
var rate = hrmInfo.heartRate;
document.getElementById("mytext").innerHTML = 'Heart Rate= ' + rate + ' bpm';
var interval = hrmInfo.rRInterval/1000;
function strip(interval) {
return (parseFloat(interval).toPrecision(4));
}
if (interval !== 0) {
interval_screen = interval;
}
document.getElementById("mytext1").innerHTML = 'RR Interval= ' + interval_screen + ' s';
var Float64 = new ROSLIB.Message({
data:rate
});
if(connection===true)
{
RatePub.publish(Float64);
}
else
{
document.getElementById("mytext").innerHTML = 'Heart Rate = 0 bpm';
}
var Float64 = new ROSLIB.Message({
data:interval
});
if(connection===true)
{ if (interval !== 0) {
IntervalPub.publish(Float64);
}
else {
}
}
else
{
document.getElementById("mytext1").innerHTML = 'RR Interval = 0 s';
}
}}
'var interval = hrmInfo.rRInterval/1000; 'の直後に' interval.toPrecision(4); 'を使用しようとしましたが、何も変更されていません。同じ結果で 'parseFloat(interval).toPrecision(4);'も試みました。 @RC NL – Marcofon