реклама на сайте
подробности

 
 
> передача данных по одному байту по блютус, нужен ли протокол?
Zelepuk
сообщение Feb 24 2014, 18:56
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Задался вопросом:
если я хочу передавать простые команды по 1 байту от телефона в моё устройство (микроконтроллер+блютус модуль), нужен ли протокол с контролем целосности данных? или можно просто так слать/принимать. Данные по 1 байту и всего возможно всего 10 различных байт (10 команд)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 10)
adnega
сообщение Feb 24 2014, 19:50
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Zelepuk @ Feb 24 2014, 22:56) *
Задался вопросом:
если я хочу передавать простые команды по 1 байту от телефона в моё устройство (микроконтроллер+блютус модуль), нужен ли протокол с контролем целосности данных? или можно просто так слать/принимать. Данные по 1 байту и всего возможно всего 10 различных байт (10 команд)

Вот хорошие 14 команд с контролем целостности: 0x11, 0x22, 0x33... 0xEE.
Go to the top of the page
 
+Quote Post
редактор
сообщение Feb 25 2014, 07:45
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315



И чем же они хороши? С таким же успехом можно взять 0x10, 0x21,0x32 ...0xFE
все равно байтовое сравнение, для простоты реализуемое через switch(){}

Формально протокол можно не делать.Но Рано или поздно возникнет вопрос:Что делать если команда не распозналась?" Ну не попадает она в список объявленных? Логичный ответ, запросить повтор - а это уже зачатки протокола. Да и передающее устройство никогда не знает принята его команда или нет. Оно конечно можно слать команду постоянно, раз в N-цать мс если мощности батареи не жалко. Это уж как пожелаете.


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
uriy
сообщение Feb 25 2014, 10:05
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



В блютуз в SPP протоколе данные не будут повреждены. Они либо придут либо нет.
Go to the top of the page
 
+Quote Post
MK2
сообщение Feb 25 2014, 13:40
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 30-10-10
Пользователь №: 60 535



Цитата(uriy @ Feb 25 2014, 13:05) *
В блютуз в SPP протоколе данные не будут повреждены. Они либо придут либо нет.

Работая с модулями HC-05, заметил такую вещь:
при разрыве соединения с платкой, данные на UART в блютуз модуль HC все равно слались в цикле. потом при восстановлении подключения эти данные все равно доходили в правильном порядке!
Т.е. достоверность приема так же есть в протоколе BlueTooth? или так просто реализован стэк в этом модуле?
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Feb 25 2014, 18:04
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(adnega @ Feb 24 2014, 23:50) *
Вот хорошие 14 команд с контролем целостности: 0x11, 0x22, 0x33... 0xEE.


Надо брать команды с максимальным расстоянием Хемминга.
http://ru.wikipedia.org/wiki/%D0%A0%D0%B0%...%BD%D0%B3%D0%B0



Цитата(MK2 @ Feb 25 2014, 17:40) *
Работая с модулями HC-05, заметил такую вещь:
при разрыве соединения с платкой, данные на UART в блютуз модуль HC все равно слались в цикле. потом при восстановлении подключения эти данные все равно доходили в правильном порядке!
Т.е. достоверность приема так же есть в протоколе BlueTooth? или так просто реализован стэк в этом модуле?


Блутуз имеет два вида соединения один надежный SCO (connection oriented) и используется для передачи данных, а другой ACL (connection less) используется для потоковых соединений как например аудио или видео. Точно как TCP и UDP.
Имея возможность программировать апликацию внутру чипа CSR вы можете выбрать любой из них для соединения.
Go to the top of the page
 
+Quote Post
adnega
сообщение Feb 26 2014, 07:28
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Tarbal @ Feb 25 2014, 22:04) *
Надо брать команды с максимальным расстоянием Хемминга.

Согласен, это первое что мне пришло в голову когда сказали "обоснуй".
Потом подумал, решил что в последовательном канале нужно скорее защищать от сдвига байна на один бит из-за рассинхронизации.
В итоге решил, что в BT все давным-давно сделано и лучше если команды будут наглядными для пользователя: буквы 'w' - записать,
'r' - считать, 'f' - выключить, 'o' - включить и т.п. - в терминалке отлаживать проще будет. И не стал писать)
Go to the top of the page
 
+Quote Post
uriy
сообщение Feb 27 2014, 05:27
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Цитата
Т.е. достоверность приема так же есть в протоколе BlueTooth? или так просто реализован стэк в этом модуле?
Про достоверность приема мне ничего не известно, возможно и есть. Похоже вам повезло что стек в модуле автоматом восстанавливает соединение и отсылает накопленный буфер.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Feb 27 2014, 07:59
Сообщение #9


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



При передаче одного байта через BT по SSP получить ошибку нереально.
Если отойти от теории, то совсем недавно проверял конструкцию, в которой данные гонялись в обоих направлениях
со скоростью UART (скорость в эфире всегда одинакова) чуть менее мегабита.

Данные либо приходят верные, либо не приходят вообще. Так как гонял по SSP кодированный звук, то контролировал еще и на слух.

Т.е. забота о целостности - это забота BT.
А вот забота о самом соединении - вовремя делать реконнект, или НЕ делать реконнект, когда этого делать не надо - это забота внешняя.

И если речь идет ровно об одно байте, который не зависит от предыдущих, то надо и передавать 1 байт и не думать.
Но если передавать что-то длинное, то тут чуть сложнее.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Feb 28 2014, 13:24
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(adnega @ Feb 26 2014, 10:28) *
Согласен, это первое что мне пришло в голову когда сказали "обоснуй".
Потом подумал, решил что в последовательном канале нужно скорее защищать от сдвига байна на один бит из-за рассинхронизации.
В итоге решил, что в BT все давным-давно сделано и лучше если команды будут наглядными для пользователя: буквы 'w' - записать,
'r' - считать, 'f' - выключить, 'o' - включить и т.п. - в терминалке отлаживать проще будет. И не стал писать)


Если вы используете SCO, а вы его будете использовать поскольку UART профайл использует его, то вы получите все свои байты в целости и сохранности. В таком случае забейте на расстояния хемминга. Никаких ошибок связи у вас не будет.

Сообщение отредактировал Tarbal - Feb 28 2014, 13:25
Go to the top of the page
 
+Quote Post
uriy
сообщение Mar 3 2014, 12:38
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Цитата
Если вы используете SCO, а вы его будете использовать поскольку UART профайл использует его
Ошибочка! UART не использует SCO. SCO для звука используется
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 21:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01449 секунд с 7
ELECTRONIX ©2004-2016