Прочитайте характерную ошибку BLE с evothings и rPi
У меня есть настройка rPi с запущенным узлом bleno для объявления характеристики. С evothings я тестирую как Android, так и iOS, и с обоими я получил ошибку при чтении характеристики.
Код для чтения характеристики внутри evothings:
device.readServiceCharacteristic(
'ff51b30e-d7e2-4d93-8842-a7c4a57dfb07',
'ff51b30e-d7e2-4d93-8842-a7c4a57dfb08',
function(data)
{
console.log('characteristic data: ' + evothings.ble.fromUtf8(data));
},
function(errorCode)
{
console.log('readCharacteristic error: ' + errorCode);
});
Первый переданный uuid - это идентификатор службы, который я вижу, прямо в журнале консоли. Второй uuid был проверен из кода на стороне сервера (rpi).
Когда я запускаю это, консоль входит в iOS, что произошла маловероятная ошибка. На Android это логи: ошибка 1
Для справки на сервере я следовал этому руководству: https://www.hackster.io/inmyorbit/build-a-mobile-app-that-connects-to-your-rpi-3-using-ble-7a7c2c
Я пытаюсь использовать это, чтобы узнать о BLE, но не могу найти выход из таких общих ошибок.
1 ответ
Прежде чем вы сможете прочитать характеристику, вы должны выполнить следующие шаги:
- Сканирование для устройства
- Подключиться к устройству
- Получить услугу
- Прочитайте характеристику
... кажется, что вы пытаетесь сделать № 4, не выполнив первые 3. Вот пример, полученный из Руководства по API Evothings:
var service = [];
var readData;
// Start scanning for BLE devices
evothings.ble.startScan(
onDeviceFound,
onScanError);
// This function is called when a device is detected, here
// we check if we found the device we are looking for.
function onDeviceFound(device)
{
// Stop scanning.
evothings.ble.stopScan();
// Connect.
evothings.ble.connectToDevice(
device,
onConnected,
onDisconnected,
onConnectError);
}
// Called when device is connected.
function onConnected(device)
{
console.log('Connected to device');
// Get service
service = evothings.ble.getService(device, <insert service UUID>);
// Read characteristic data
evothings.ble.readCharacteristic(
device,
<insert characteristic UUID>,
readSuccess,
readError);
}
// Called if device disconnects.
function onDisconnected(device)
{
console.log('Disconnected from device');
}
// Called when a connect error occurs.
function onConnectError(error)
{
console.log('Connect error: ' + error)
}
// Read success callback
var readSuccess = function (data) {
readData = evothings.ble.fromUtf8(data);
};
// Read error callback
var readError = function (error) {
console.log('Read error: ' + error);
}