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

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

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

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

Вот мой код:

constructor() {
        super()
        this.manager = new BleManager()
    }
    componentWillMount() {
        console.info("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.info(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's not necessary if you are scanning for one device.
                this.manager.stopDeviceScan();
                console.info(`Found ${device.name}`)
                this.setState({
                    device: device
                })
                // Proceed with connection.
                device.connect()
                    .then((device) => {
                        console.info(device)
                        return device.discoverAllServicesAndCharacteristics()
                    })
                    .then((device) => {
                        console.info(device)
                    })
                    .then((result) => {
                        // Do work on device with services and characteristics
                        //console.info(this.manager.characteristicsForService("00001800-0000-1000-8000-00805f9b34fb"))
                        console.info(result)
                        console.info("connected")
                    })
                    .catch((error) => {
                        // Handle errors
                        console.info(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.info('error in writing data');
                console.info(error);
            })
    }

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

Может ли кто-нибудь мне помочь или хотя бы привести пример? Я был бы очень признателен.

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
8 252
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мне удалось реализовать следующее:

scanAndConnect() {
    this.manager.startDeviceScan(null, null, (error, device) => {
      this.info("Scanning...");
      console.info(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==.

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

Не могли бы вы дать краткое описание того, что отличает ваш код, что заставляет его работать? Включение в ответ краткого описания того, что вы сделали с кодом, имеет большое значение, чтобы помочь другим понять ваш ответ.

vielkind 15.08.2018 20:38

Я внес некоторые правки выше в свой первоначальный комментарий. Если они не имеют смысла, дайте мне знать, и я постараюсь объяснить дальше.

deasydoesit 15.08.2018 20:41

можете ли вы поделиться образцом кода для реализации этого

Raj Hirani 31.03.2019 06:16

Идет ли UUID характеристики BLE от производителя устройства или от метода react-native-ble-plx?

socca1157 02.09.2019 04:05

@deasydoesit, как мне получить UUID службы BLE и UUID характеристики BLE ??

chirag prajapati 09.09.2019 09:22

Мне нужно отправить некоторые данные на соответствующее устройство BLE. Как это реализовать ??

FortuneCookie 21.11.2019 05:12

спасибо @deasydoesit, пример работает нормально, но не могли бы вы показать нам пример для большого файла? Я создал проблему, но ответа пока нет: stackoverflow.com/questions/61386613/…

raddaoui 23.04.2020 14:40

Другие вопросы по теме