0

Я никогда раньше не работал с Bluetooth. Я должен отправлять данные через BLE, и я нашел ограничение в 20 байт на кусок.Упаковка 20 байтов через BLE

Отправитель - это Arduino, а приемник может быть как Android, так и Node.js на ПК.

Мне нужно отправить 9 значений, сохраненных в значениях float, так что 4 байта * 9 = 36 байт. Мне нужно 2 куска для всех моих данных через BLE. Принимающей стороне нужны оба куска для их обработки. Если некоторые данные потеряны, мне все равно.

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

Может ли кто-нибудь дать мне совет? Как примеры аналогичных ситуаций, связанных с BLE-связью?

+0

BLE отличается от классического Bluetooth многими способами, поскольку вы не можете назначить два устройства как «отправитель» и «приемник». Вам необходимо понять основной принцип профиля общих атрибутов (GATT) в BLE, который определяет, как получить доступ к службе с сервера GATT с помощью Gatt Client, который основан на UUID. –

+0

@OsmanEsen: можете ли вы быть немного более ясными, пожалуйста? Вы правы, что BLE отличается от обычного bluetooth, но мне нужно подключаться к одному устройству за раз. Вы имеете в виду, что с другим профилем я могу отправить более 20 байтов? – nkint

+0

Нет. Я много работал с устройствами BLE от Texas Instruments, у которых также есть ограничение на 20 байтов. Это ограничение является общим пределом для BLE, поэтому вы не сможете отправлять более 20 байтов за раз. –

ответ

1

Вы можете обойти ограничение по размеру, используя «Прочитать запрос BLOB» ATT. Это позволяет вам читать атрибут, а также давать смещение. Таким образом, вы можете использовать его для чтения атрибута со смещением 0, если есть больше байтов ATT_MTU, чем вы можете запросить снова со смещением в ATT_MTU * 1, если есть еще больше ATT_MTU * 2 и т. Д. (Вы можете прочитайте его в 3.4.4.5 спецификаций Bluetooth v4.1, это также в спецификации 4.0, но у меня нет этого передо мной прямо сейчас)

Если значение изменяется между запросом, я не уверен как вы могли бы найти такое изменение. У вас может быть атрибут отправки уведомлений, когда есть изменение для прерывания процесса в случае изменения значения в середине его чтения.

+0

uao. этот ответ очень точен. Более того, я могу в полной мере понять, возможно. У вас есть идея о том, как это сделать с SDK Nordic Semicondutor для Arduino? – nkint

+0

Извините, нет. Раньше я этого не использовал. Вы можете попробовать найти свои документы для «blob». –

+0

Хорошо, я попробую спасибо – nkint

Смежные вопросы