我试图使用rosbridge在ros上发布基于Tizen的应用程序的消息,我得到一个错误
I'm trying to publish a message of a Tizen based app on ros using rosbridge and i get an error
正如标题所说,我试图使用rosbridge在ros上发布消息,因为我的应用程序是用javascript编写的。基本上,我想在运行ros的pc上投射心率数据流,以便进行一些阐述。这款应用运行在基于Tizen系统的智能手表上。如果我尝试发布几何消息,如设备方向,我没有问题,它们被发布在ros上。我尝试了传感器消息类型(特别是channelfloat32)来投射心率流,但没有成功。我调查了从传感器出来的数据类型,我发现这是javascript的数字类型数据。所以我使用了标准的消息类型(Float64,特别是因为,据我所知,基于一些搜索,显然javascript只使用这种类型的数字)没有成功。也许我可以转换变量或改变其类型,但我不知道这是否可能是一个可能的解决方案,我真的不知道如何做到这一点,也许我只需要改变ros消息的类型。正如你从我之前的问题中看到的,我对编码非常陌生,我又在同一个项目上了。
提前感谢您的帮助!
马可
代码如下:
document.addEventListener('tizenhwkey', function(e) {
if(e.keyName === "back")
window.webapis.motion.stop("HRM");
tizen.application.getCurrentApplication().exit();
});
函数连接(){
var ip;
var connection=false;
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'
});
window.webapis.motion.start("HRM", onchangedCB);
function onchangedCB(hrmInfo)
{
var data = hrmInfo.heartRate;
document.getElementById("mytext").innerHTML = 'Heart Rate= ' + data + ' bpm';
var Float64 = new ROSLIB.Message({
data:[data]
});
if(connection===true)
{
RatePub.publish(Float64);
}
else
{
document.getElementById("mytext").innerHTML = 'Heart Rate= 0 bpm';
}
}}
如果您正在从Tizen可穿戴设备读取人力资源管理数据,您可以使用 Tizen。humanactivitymonitor人类活动监测API代替使用window.webapis.motion
而不是使用
window.webapis.motion.start("HRM", onchangedCB);
function onchangedCB(hrmInfo) {
var data = hrmInfo.heartRate;
document.getElementById("mytext").innerHTML = 'Heart Rate= ' + data + ' bpm';
...
..
}
你可以试试
var dataCount = 0;
function onsuccessCB(hrmInfo)
{
console.log("Heart Rate: " + hrmInfo.heartRate);
console.log("Peak-to-peak interval: " + hrmInfo.rRInterval + " milliseconds");
dataCount++;
...
..
if (dataCount > 10){
/* Stop the sensor after detecting a few changes */
tizen.humanactivitymonitor.stop("HRM");
}
}
tizen.humanactivitymonitor.start("HRM", onsuccessCB);
并在config.xml文件
中添加必要的权限<tizen:privilege name="http://tizen.org/privilege/healthinfo"/>
<tizen:privilege name="http://tizen.org/privilege/power"/>
根据Tizen API的参考数据类型heartRate是long.
请查看Tizen人类活动监测指南和Tizen API参考详细实现。
相关文章:
- 我确实有一个表单,如果用户输入了输入,它应该检查否定或空的输入框,并抛出一条警告消息
- 我正在创建一个聊天,但每次我发送消息时,它都不会让我再发送另一条消息,就像表格一样;不起作用
- 将错误消息 JSON 传递到另一个页面模板
- 如果我们在5秒后有一个隐藏间隔,则无法获取Growl消息
- 让我们做一个地图 Topojson 没有出现 - 没有错误消息,但什么也没发生
- 淘汰抛出消息:类型错误:
不是一个函数.什么意思 - 在 JavaScript 警报消息框的“确定”按钮上分配一个值
- Chrome 打包应用 - 消息从后台传递.js传递到另一个脚本页面
- 如何将消息从 chrome 扩展程序发送到另一个扩展程序
- Php,如何打开一个小消息/表单窗口(不是新的浏览器窗口)
- 如果用户不接受JS确认消息,如何检查上一个选定的单选按钮
- Jquery 需要在下一个最近的类中显示错误消息,具体取决于输入
- 从一个 PHP 脚本发送和显示消息到另一个 PHP 脚本
- 当文本字段为空时,按下按钮后弹出一个消息框,例如Facebook
- JAVASCRIPT --> 为什么我会收到错误消息“未捕获的类型错误:数字不是一个函数”
- 使用javascript中的postMessage函数将消息从一个域发送到另一个域
- 一个不需要输入错误消息的assert函数
- 消息回调不经常返回一个值-Chrome扩展
- 指向URL的Javascript绝对路径在一个页面上有效,但在另一个页面创建ajax错误消息
- 谷歌可视化错误:容器为空.消息:一个或多个参与者未能提取()