При использовании response-native-ble-plx .isReadable для характеристики c возвращает false - PullRequest
0 голосов
/ 24 февраля 2020

Попытка получить доступ к данным GATT для измерения тактовой мощности c (0x2A63) для службы GATT 0x1818, попытка прочитать мощность, генерируемую при педалировании на педали Assioma Duo. Изначально вызывался

device.monitorCharacteristicForService("00001818-0000-1000-8000-00805F9B34FB", "00002a63-0000-1000-8000-00805f9b34fb", (error, characteristic) => {
            if (error) {
                this.error(error.message)
            return
        }
        this.updateValue(characteristic.uuid, characteristic.value)
        })

, но this.state.value все еще было пустым.

Решил проверить, была ли вообще доступна для чтения характеристика c. Вот соответствующий код

import React, { Component } from 'react';
import { BleManager } from 'react-native-ble-plx';
import { StyleSheet, Text, View, Dimensions, Button, TouchableOpacity, TextInput, Alert, Image, Linking, Platform } from 'react-native';

export default class App extends React.Component {
    constructor(){
        super()
        this.manager = new BleManager();
        this.state = {info: "h", values: {}};
    }

    async testChar(device) {
        const characteristics: [Characteristics] = await device.characteristicsForService("00001818-0000-1000-8000-00805F9B34FB");
        for (let k = 0; k<characteristics.length;k++) {
            const char: Characteristics = characteristics[k];
            console.log(`Characteristics for service: ${char.isReadable}`);
        }
    }


    scanAndConnect() {
    this.manager.startDeviceScan(null,
                                 null, (error, device) => {
      this.info("Scanning...")
      console.log(device)

      if (error) {
        this.error(error.message)
        return
      }

      if (device.name === 'ASSIOMA22702U') {
        this.info("Connecting to Assioma")
        this.manager.stopDeviceScan()
        device.connect()
          .then((device) => {
              return this.testChar(device)
          })
      }
    });
  }

Журнал для вызова .isReadable -

 LOG  Characteristics for service: false
 LOG  Characteristics for service: true
 LOG  Characteristics for service: false
 LOG  Characteristics for service: true

с характеристиками c 0x2A63, являющимися первым ложным. Почему эта характеристика c не читается?

...