Невозможно прочитать характеристическое значение службы информации об устройстве, получая все нулевые значения с помощью BLE - PullRequest
0 голосов
/ 13 ноября 2018

Я занимаюсь проектированием центральных и периферийных приложений на двух разных телефонах Android.Я сделал следующее, чтобы добавить службу информации об устройстве и ее характеристики

val DEVICE_INFO_SERVICE_UUID = "0000180a-0000-1000-8000-00805f9b34fb"
val MANUFACTURER_UUID = "00002a29-0000-1000-8000-00805f9b34fb"
val HARDWARE_UUID = "00002a27-0000-1000-8000-00805f9b34fb"
val FIRMWARE_UUID = "00002a26-0000-1000-8000-00805f9b34fb"

val deviceInfoService = BluetoothGattService(UUID.fromString(DEVICE_INFO_SERVICE_UUID), BluetoothGattService.SERVICE_TYPE_PRIMARY)
        val manufactureChar = BluetoothGattCharacteristic(UUID.fromString(MANUFACTURER_UUID), BluetoothGattCharacteristic.PROPERTY_READ, BluetoothGattCharacteristic.PERMISSION_READ)
        val hardwareChar = BluetoothGattCharacteristic(UUID.fromString(HARDWARE_UUID), BluetoothGattCharacteristic.PROPERTY_READ, BluetoothGattCharacteristic.PERMISSION_READ)
        val firmwareChar = BluetoothGattCharacteristic(UUID.fromString(FIRMWARE_UUID), BluetoothGattCharacteristic.PROPERTY_READ, BluetoothGattCharacteristic.PERMISSION_READ)
        manufactureChar.setValue("Avantari Technologies Pvt ltd.")
        hardwareChar.setValue("v2.1.0")
        firmwareChar.setValue("v2.1.1")
        deviceInfoService.addCharacteristic(manufactureChar)
        deviceInfoService.addCharacteristic(hardwareChar)
        deviceInfoService.addCharacteristic(firmwareChar)
mGattServer!!.addService(deviceInfoService)

, и с периферийного устройства я делаю следующее, чтобы прочитать его.

override fun onServicesDiscovered(gatt: BluetoothGatt, status: Int) {
        super.onServicesDiscovered(gatt, status)
        if (status == BluetoothGatt.GATT_SUCCESS) {
            val leServiceList: List<BluetoothGattService> = gatt.services
            for (mBluetoothGattService in leServiceList) {
                if (mBluetoothGattService.uuid.toString().equals(DEVICE_INFO_SERVICE_UUID, ignoreCase = true)) {
                    for (mBluetoothGattCharacteristic in mBluetoothGattService.characteristics) {
                        when {
                            mBluetoothGattCharacteristic.uuid.toString().equals(HARDWARE_UUID, ignoreCase = true) ->
                                Log.d(TAG, "Hardware Version : ${mBluetoothGattCharacteristic.value}")

                            mBluetoothGattCharacteristic.uuid.toString().equals(FIRMWARE_UUID, ignoreCase = true) ->
                                Log.d(TAG, "Firmware Version : ${mBluetoothGattCharacteristic.value}")
                            mBluetoothGattCharacteristic.uuid.toString().equals(MANUFACTURER_UUID, ignoreCase = true) ->
                                Log.d(TAG, "Manufacturer Name : ${mBluetoothGattCharacteristic.value}")
                        }
                    }
                }
            }
        }
    }

, но здесь на периферийном устройстве я получаю нользначения после того, как услуги были обнаружены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...