Чтение только пустых объектов с помощью cordova-plugin-ble-central - PullRequest
0 голосов
/ 17 мая 2019

Я экспериментирую с плагином cordova-plugin-ble-central , чтобы подключить устройство Bluetooth к моему приложению. Я могу успешно найти, подключить и обнаружить мое устройство Bluetooth, но каждый результат, возвращаемый функцией ble.read () , является пустым объектом {}. Одинаковый результат как для Android, так и для iOS.

Я создал небольшое приложение, которое обнаруживает каждое устройство Bluetooth и пытается прочитать все доступные значения из них, но я всегда получаю пустой {} независимо от того, какое устройство сканировало.

Ниже мой сценарий: 1010 * 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>

Не могли бы вы сообщить мне, где я не прав?

Спасибо!

...