ape*_*man 2 meteor bluetooth-lowenergy cordova-plugins
我正在尝试使用Meteor和这个Cordova插件 - https://github.com/don/cordova-plugin-ble-central - 添加到我的项目中meteor add cordova,以便连接到蓝牙LE设备(TI Sensortag).我想要做的就是,当点击链接时,连接到设备并显示消息.
我在events模板javascript 的部分中有以下代码.
Template.measure.events({'click [data-action=scan-connect-stream]':
function(event, template) {
event.preventDefault();
if (Meteor.isCordova) {
Meteor.startup(function () {
ble.connect('24:09:00:DE:00:42',
function(){
alert('Connect success');
return;
},
function(){
alert('Connect failed');
return;
});
});
}
}
});
Run Code Online (Sandbox Code Playgroud)
我的问题是,有时代码工作,我得到一个'连接成功'警报,但更多时候它无法连接并显示'连接失败'警报.在我return在成功和失败回调中添加语句之前,它根本不起作用.
我正在Android设备(meteor run android-device --verbose)上调试这个,并且可以看到adb logcatCordova插件中的BLE Connect事件正在触发但是然后没有连接.我在两个不同的手机上调试同样的问题,当使用不是TI Sensortag的BLE设备时,我猜这是插件与Meteor交互方式的问题(也许流星不等待足够长的时间)成功回调?).
有没有人使用这个插件成功使用Meteor或任何人都可以提供任何线索,我做错了什么?我应该尝试将它包装在Meteor包中,还是有任何方法可以让我们在成功或失败回调之前给插件更多时间做出响应?任何帮助将非常感激!
对于任何有类似问题的人来说,这就是为我排序的原因.我将ble.connect调用放入ble.scan函数的成功回调中.不知道为什么但是先扫描几秒钟才能完成这项任务.
Template.measure.events({
'click [data-action=scan-connect-stream]': function(event, template) {
event.preventDefault();
if (Meteor.isCordova) {
Meteor.startup(function () {
device_id = '24:09:00:DE:00:42';
ble.scan([], 5,
function(peripherals){
connectDevice(device_id);
},
function(){
alert('No devices found');
}
);
});
}
}
});
var connectDevice = function (device_id) {
ble.connect(device_id,
function(){
alert('Device ' + device_id + ' connnected');
},
function(){
alert('Couldn\'t connect to device ' + device_id);
});
}
Run Code Online (Sandbox Code Playgroud)
如果有人能够解释为什么ble.connect不能自行运作那就太好了!
编辑:看看Android代码,似乎插件的设计方式ble.scan必须在调用之前调用ble.connect.该ble.scan原因一个LinkedHashMap在Android的代码与任何发现的设备来填充.只有在设备列在设备中后,LinkedHashMap您才能使用它连接到设备ble.connect.
| 归档时间: |
|
| 查看次数: |
1128 次 |
| 最近记录: |