Javascript 如何使用react-native-ble plx发现服务UUID和特征UUID? 问题:

Javascript 如何使用react-native-ble plx发现服务UUID和特征UUID? 问题:,javascript,react-native,bluetooth-lowenergy,react-native-android,react-native-ble-plx,Javascript,React Native,Bluetooth Lowenergy,React Native Android,React Native Ble Plx,我正在尝试连接到我的蓝牙设备,但是在连接并发现所有服务和特征后,我无法前进,因为返回的信息不足。我没有收到任何服务UUID或任何特征UUID 我需要做什么才能访问UUID,然后才能读取特征 我所尝试的: 调用device.discoverAllServicesAndCharacteristics()后我的设备返回: {u 40:0,{u 65:0,{u 55:null,{u 72:null} 当我登录设备时,我得到: 06-23 16:36:54.758 4397 4597 I ReactN

我正在尝试连接到我的蓝牙设备,但是在连接并发现所有服务和特征后,我无法前进,因为返回的信息不足。我没有收到任何服务UUID或任何特征UUID

我需要做什么才能访问UUID,然后才能读取特征

我所尝试的: 调用
device.discoverAllServicesAndCharacteristics()后我的设备返回:

{u 40:0,{u 65:0,{u 55:null,{u 72:null}

当我登录设备时,我得到:

06-23 16:36:54.758  4397  4597 I ReactNativeJS: { isConnectable: null,
06-23 16:36:54.758  4397  4597 I ReactNativeJS:   rssi: null,
06-23 16:36:54.758  4397  4597 I ReactNativeJS:   serviceData: null,
06-23 16:36:54.758  4397  4597 I ReactNativeJS:   overflowServiceUUIDs: null,
06-23 16:36:54.758  4397  4597 I ReactNativeJS:   mtu: 23,
06-23 16:36:54.758  4397  4597 I ReactNativeJS:   localName: null,
06-23 16:36:54.758  4397  4597 I ReactNativeJS:   manufacturerData: null,
06-23 16:36:54.758  4397  4597 I ReactNativeJS:   txPowerLevel: null,
06-23 16:36:54.758  4397  4597 I ReactNativeJS:   id: '00:1E:C0:65:D7:DB',
06-23 16:36:54.758  4397  4597 I ReactNativeJS:   solicitedServiceUUIDs: null,
06-23 16:36:54.758  4397  4597 I ReactNativeJS:   name: 'RND7DB',
06-23 16:36:54.758  4397  4597 I ReactNativeJS:   serviceUUIDs: null,
06-23 16:36:54.758  4397  4597 I ReactNativeJS:   _manager:
06-23 16:36:54.758  4397  4597 I ReactNativeJS:    { _eventEmitter:
06-23 16:36:54.758  4397  4597 I ReactNativeJS:       { _subscriber:
06-23 16:36:54.758  4397  4597 I ReactNativeJS:          { _subscriptionsForType:
06-23 16:36:54.758  4397  4597 I ReactNativeJS:             { appStateDidChange:
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                [ { subscriber: [Circular],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    emitter:
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                     { _subscriber: [Circular],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                       isAvailable: true,
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                       _eventHandlers: { change: {}, memoryWarning: {} },
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                       currentState: 'active' },
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    listener: [Function],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    context: undefined,
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    eventType: 'appStateDidChange',
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    key: 0 } ],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:               websocketMessage: [ , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,  ],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:               websocketOpen: [ , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,  ],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:               websocketClosed: [ , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,  ],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:               websocketFailed: [ , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,  ],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:               didUpdateDimensions:
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                [ { subscriber: [Circular],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    emitter:
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                     { _subscriber: [Circular],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                       sharedSubscriber: [Circular],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                       _currentSubscription: null },
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    listener: [Function],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    context: undefined,
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    eventType: 'didUpdateDimensions',
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    key: 0 } ],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:               hardwareBackPress:
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                [ { subscriber: [Circular],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    emitter:
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                     { _subscriber: [Circular],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                       sharedSubscriber: [Circular],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                       _currentSubscription: null },
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    listener: [Function],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    context: undefined,
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    eventType: 'hardwareBackPress',
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    key: 0 } ],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:               collectBugExtraData:
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                [ { subscriber: [Circular],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    emitter:
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                     { _subscriber: [Circular],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                       sharedSubscriber: [Circular],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                       _currentSubscription: null },
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    listener: [Function: collectExtraData],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    context: null,
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    eventType: 'collectBugExtraData',
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    key: 0 } ],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:               collectRedBoxExtraData:
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                [ { subscriber: [Circular],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    emitter:
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                     { _subscriber: [Circular],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                       sharedSubscriber: [Circular],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                       _currentSubscription: null },
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    listener: [Function: collectExtraData],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    context: null,
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    eventType: 'collectRedBoxExtraData',
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    key: 0 } ],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:               url:
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                [ { subscriber: [Circular],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    emitter: { _subscriber: [Circular] },
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    listener: [Function],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    context: undefined,
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    eventType: 'url',
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    key: 0 },
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                  { subscriber: [Circular],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    emitter: { _subscriber: [Circular] },
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    listener: [Function],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    context: undefined,
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    eventType: 'url',
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    key: 1 } ],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:               toggleElementInspector:
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                [ { subscriber: [Circular],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    emitter:
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                     { _subscriber: [Circular],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                       sharedSubscriber: [Circular],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                       _currentSubscription: null },
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    listener: [Function],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    context: undefined,
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    eventType: 'toggleElementInspector',
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    key: 0 },
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                  { subscriber: [Circular],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                    emitter:
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                     { _subscriber: [Circular],
06-23 16:36:54.758  4397  4597 I ReactNativeJS:                       sharedSubscribe
在这一点上,我不知道该怎么做,因为我没有收到任何有价值的信息来进一步从特征中获取信息

根据,我需要UUID从我的设备读取

device.readCharacteristicForService(
  serviceUUID: UUID,
  characteristicUUID: UUID,
  transactionId: ?TransactionId
): Promise<Characteristic>

以下是我如何使用它,希望能有所帮助

 const { updateCharacteristic } = this.props
 const connectedDevice = await manager.connectToDevice(device.id)
 const services = await connectedDevice.discoverAllServicesAndCharacteristics()
 const characteristic = await this.getServicesAndCharacteristics(services)

getServicesAndCharacteristics(device) {
            return new Promise((resolve, reject) => {
                device.services().then(services => {
                    const characteristics = []

                    services.forEach((service, i) => {
                        service.characteristics().then(c => {
                            characteristics.push(c)

                            if (i === services.length - 1) {
                                const temp = characteristics.reduce(
                                    (acc, current) => {
                                        return [...acc, ...current]
                                    },
                                    []
                                )
                                const dialog = temp.find(
                                    characteristic =>
                                        characteristic.isWritableWithoutResponse
                                )
                                if (!dialog) {
                                    reject('No writable characteristic')
                                }
                                resolve(dialog)
                            }
                        })
                    })
                })
            })
        }

致以最诚挚的问候。

这是我如何使用它的,希望能有所帮助

 const { updateCharacteristic } = this.props
 const connectedDevice = await manager.connectToDevice(device.id)
 const services = await connectedDevice.discoverAllServicesAndCharacteristics()
 const characteristic = await this.getServicesAndCharacteristics(services)

getServicesAndCharacteristics(device) {
            return new Promise((resolve, reject) => {
                device.services().then(services => {
                    const characteristics = []

                    services.forEach((service, i) => {
                        service.characteristics().then(c => {
                            characteristics.push(c)

                            if (i === services.length - 1) {
                                const temp = characteristics.reduce(
                                    (acc, current) => {
                                        return [...acc, ...current]
                                    },
                                    []
                                )
                                const dialog = temp.find(
                                    characteristic =>
                                        characteristic.isWritableWithoutResponse
                                )
                                if (!dialog) {
                                    reject('No writable characteristic')
                                }
                                resolve(dialog)
                            }
                        })
                    })
                })
            })
        }
致以最良好的祝愿