我想实现的目标是尝试增加Tizen智能手表心跳传感器返回值的精度。 值是Float64数字,因为语言是Javascript。 我试图用这样的功能:提高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