Для реализации проекта связанных объектов. Мне нужно реализовать 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, который будет отправлять данные, когда я захочу. Но я не очень понимаю, как это работает: /
Может ли кто-нибудь мне помочь или хотя бы привести пример? Я был бы очень признателен.
С наилучшими пожеланиями.
Мне удалось реализовать следующее:
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==
.
Надеюсь это поможет.
Я внес некоторые правки выше в свой первоначальный комментарий. Если они не имеют смысла, дайте мне знать, и я постараюсь объяснить дальше.
можете ли вы поделиться образцом кода для реализации этого
Идет ли UUID характеристики BLE от производителя устройства или от метода react-native-ble-plx?
@deasydoesit, как мне получить UUID службы BLE и UUID характеристики BLE ??
Мне нужно отправить некоторые данные на соответствующее устройство BLE. Как это реализовать ??
спасибо @deasydoesit, пример работает нормально, но не могли бы вы показать нам пример для большого файла? Я создал проблему, но ответа пока нет: stackoverflow.com/questions/61386613/…
Не могли бы вы дать краткое описание того, что отличает ваш код, что заставляет его работать? Включение в ответ краткого описания того, что вы сделали с кодом, имеет большое значение, чтобы помочь другим понять ваш ответ.