使用cordova-plugin-ble-central仅读取空对象

时间:2019-05-17 02:44:26

标签: cordova bluetooth bluetooth-lowenergy cordova-plugins

我正在尝试插件 cordova-plugin-ble-central ,以便将蓝牙设备与我的应用程序连接。我可以成功找到,连接和发现我的蓝牙设备,但是 ble.read()函数返回的每个结果都是一个空对象{}。 Android和iOS的结果相同。

我制作了一个小型应用程序,可以发现每个蓝牙设备,并尝试从中读取每个可用的值,但是无论扫描的设备是什么,我总是会得到空{}。

下面是我的脚本: JavaScript

document.addEventListener('deviceready', function(){

    var device_id = '';
    $('#output').prepend('<p>Device ready</p>');

    $('#button_test_ble').click(function(){
        $('#buttons').html('');
        ble.scan([], 5, function(device) {
            $('#buttons').prepend('<button type="button" class="btn btn-sm btn-default" data-device_id="'+device.id+'">'+device.name+'</button>')
        }, function(error) {
            $('#output').prepend('<p class="text-danger">scan: '+JSON.stringify(error)+'</p>');
        });
    });

    $('#buttons').on('click', 'button', function(){
        device_id = $(this).data('device_id');
        $('#output').html('');
        $('#button_connect').trigger('click');
    });

    $('#button_connect').click(function(){
        ble.connect(device_id, function(r) {
            let characteristics = '';
            $.each(r.characteristics, function (t, item) {

                if (item.properties.includes("Read")) {
                    ble.read(device_id, item.service, item.characteristic,
                        function(data){
                            $('#output').prepend('<p class="text-info">'+item.service+' '+item.characteristic+' - Read: '+JSON.stringify(data)+'</p>');
                        },
                        function(failure){
                            $('#output').prepend('<p class="text-danger">read: '+JSON.stringify(failure)+'</p>');
                        }
                    );
                }
            });

            $('#output').prepend('<p class="text-info">connect: '+JSON.stringify(r)+'</p>');
        }, function(error) {
            $('#output').prepend('<p class="text-danger">connect: '+JSON.stringify(error)+'</p>');
        });
    })

    $('#button_disconnect').click(function(){
        ble.disconnect(device_id, function(error) {
            $('#output').prepend('<p class="text-info">Disconnect: '+JSON.stringify(error)+'</p>');
        }, function(error) {
            $('#output').prepend('<p class="text-danger">Disconnect: '+JSON.stringify(error)+'</p>');
        });
    });

});

HTML

<div class='container'>
    <div class='row'>
        <div class='col-xs-12'>
            <h1>Bluetooth Low Energy (BLE) Central Plugin</h1>
        </div>
        <div class='col-xs-4'>
            <button type='button' class='btn btn-block btn-default' id='button_test_ble'>
                Test BLE
            </button>
        </div>
        <div class='col-xs-4'>
            <button type='button' class='btn btn-block btn-default' id='button_connect'>
                Connect BLE
            </button>
        </div>
        <div class='col-xs-4'>
            <button type='button' class='btn btn-block btn-default' id='button_disconnect'>
                Disconnect
            </button>
        </div>
    </div>
    <div class='row'>
        <div class='col-xs-12' id='buttons'></div>
    </div>
    <div class='row'>
        <div class='col-xs-12' id='output'></div>
    </div>
</div>

您能告诉我我哪里错了吗?

谢谢!

0 个答案:

没有答案