Отправка данных с использованием пакета response-native-ble-plx

1

Для реализации проекта связанных объектов. Мне нужно реализовать соединение Bluetooth между различными устройствами.

Здесь цель - создать приложение в React Native, а затем отправить данные из этого приложения в мою малину. У этой малины есть подключенный модуль HC-08, который обеспечивает связь Bluetooth.

Теперь я хотел бы использовать библиотеку react-native-ble-plx для отправки данных через Bluetooth. Я могу подключить свой Android к модулю. Но я не понимаю, как отправлять данные...

Вот мой код:

constructor() {
        super()
        this.manager = new BleManager()
    }
    componentWillMount() {
        console.log("mounted")
        const subscription = this.manager.onStateChange((state) => {
            if (state === 'PoweredOn') {
                this.scanAndConnect();
                subscription.remove();
            }
        }, true);
    }

    scanAndConnect() {
        this.manager.startDeviceScan(null, null, (error, device) => {
            if (error) {
                // Handle error (scanning will be stopped automatically)
                return
            }

            console.log(device.name)

            // Check if it is a device you are looking for based on advertisement data
            // or other criteria.
            if (device.name === 'SH-HC-08') {
                // Stop scanning as it not necessary if you are scanning for one device.
                this.manager.stopDeviceScan();
                console.log('Found ${device.name}')
                this.setState({
                    device: device
                })
                // Proceed with connection.
                device.connect()
                    .then((device) => {
                        console.log(device)
                        return device.discoverAllServicesAndCharacteristics()
                    })
                    .then((device) => {
                        console.log(device)
                    })
                    .then((result) => {
                        // Do work on device with services and characteristics
                        //console.log(this.manager.characteristicsForService("00001800-0000-1000-8000-00805f9b34fb"))
                        console.log(result)
                        console.log("connected")
                    })
                    .catch((error) => {
                        // Handle errors
                        console.log(error)
                    });
            }
        });
    }

    send() {
        this.manager.writeCharacteristicWithResponseForDevice("58:7A:62:4F:EF:6D",
            this.device.serviceUUIDs[0],
            this.manager.characteristicsForDevice(this.device.id),
            "ok")
            .catch((error) => {
                console.log('error in writing data');
                console.log(error);
            })
    }

Я хотел бы иметь метод отправки, который будет отправлять данные, когда захочу. Но я не совсем понимаю, как это работает:/

Может ли кто-нибудь помочь мне или даже дать мне пример? Я был бы очень благодарен.

С наилучшими пожеланиями.

Теги:
react-native
bluetooth-lowenergy

1 ответ

0

У меня был успех:

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

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

      if (device.name ==='MyDevice') {
        this.info("Connecting to Tappy");
        this.manager.stopDeviceScan();

        device.connect()
          .then((device) => {
            this.info("Discovering services and characteristics");
            return device.discoverAllServicesAndCharacteristics()
          })
          .then((device) => {
            this.info(device.id);
            device.writeCharacteristicWithResponseForService('12ab', '34cd', 'aGVsbG8gbWlzcyB0YXBweQ==')
              .then((characteristic) => {
                this.info(characteristic.value);
                return 
              })
          })
          .catch((error) => {
            this.error(error.message)
          })
       }
   });

Где я использую 12ab, вставьте UUID вашего сервиса BLE. Аналогично, когда я использую 34cd, вставьте UUID вашей характеристики BLE. Наконец, включите кодировку base64 любого сообщения, которое вы пытаетесь отправить, где у меня есть aGVsbG8gbWlzcyB0YXBweQ==.

Надеюсь это поможет.

  • 0
    Не могли бы вы дать краткое описание того, что отличает ваш код от его работы? Включение в ваш ответ краткого описания, описывающего то, что вы сделали с кодом, в значительной степени помогает другим понять ваш ответ.
  • 0
    Я предоставил некоторые правки выше в своем оригинальном комментарии. Если они не имеют смысла, дайте мне знать, и я постараюсь объяснить дальше.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню