Как приручить свой Bluetooth. Часть 1

Я собираюсь вести рассказ не столько о Bluetooth, сколько по вопросу —

как в Линуксе создать простое средство (программу) для работы с устройством, которое подключено к последовательному каналу и выполняет AT-команды.

Ну вот так длинное определение темы.

Давайте начнем наше движение с краткого введения в AT-команды.

AT-команды

Сегодня в мире производится уже достаточно много устройств, которые работают в паре с микроконтроллером по последовательному каналу — UART (USART). Мы будем рассматривать только те устройства, которые взаимодействуют с процессором посредством так называемых AT-команд.

Вот несколько примеров таких устройств:

  • старые модемы для соединения компов посредством телефоннх линий,
  • автотестеры для диагностики автомобилей (например, ELM327),
  • Bluetooth-девайсы (собственно, на их примере мы и будем создавать нашу программу)

AT-команды — это обычные текстовые команду, которые начинаются с двух букв — «AT».

Префикс «AT» образовался от двух первых букв слова «attention» (в переводе на русский — «внимание»). Такой способ взаимодействия процессора и оборудования придумала компания Hayes в 1977 году. Всё это хорошо и не на один раз расписано в интернете.

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

AT+VERSION?

Заметьте, здесь символы «AT» и имя команды отделяются знаком ‘+’, а на конце команды присутствует вопросительный знак.

Вот так выглядит команда к устройству Bluetooth для определения его имени:

AT+NAME?

А вот команда для установки пароля «1234»:

AT+PSWD=1234

Заметили знак равенства, который отделяет  параметр от имени команды?

У других устройств способ формирования команд может немного отличаться от способа формирования команд Bluetooth.

Вот, например, так выглядят некоторые команды телефонного модема:

ATH — поднять трубку
ATZ — программный сброс модема
ATDP1234567 — набрать номер в кодово-импульсном режимеATDT1234567 — набрать номер в тоновом режиме

Эти команды отличаются тем, что здесь префикс и имя команда пишутся слитно. Так же слитно в команде присутствует параметр (номер, по которому модем звонить).

А вот пример AT-команд автотестера:

AT Z — программный сброс автосканера
AT I — узнать версию прошивки автосканераAT VR — покажет напряжение бортовой сети

Здесь префикс и имя команды отделены пробелом. Но если их написать слитно, то автосканер их тоже поймёт.

Но есть одна команда, которая выполняется на всех таких устройствах. Это «пустая» команда:

AT

Она ничего не делает. В ответ на неё устройство должно вернуть слово «OK». Если этого нет, то нужно разбираться, почему нет связи между управляющим процессором и устройством.

Важно понять, что все AT-команды начинаются с префикса «AT», все AT-команды текстовые (двоичных данных здесь нет), и все они завершаются символами окончания строки.

С последним нужно быть повнимательнее. Некоторые устройства требуют, чтобы команды завершались двумя символами «\r\n», другие устройства — одним символом: либо ‘\n’, либо ‘\r’.

В общем случае, строка, которую нужно направить в устройство, в контексте языка программирования С/С++ должна выглядеть примерно так:

«AT+NAME\r\n» или «AT+NAME\r»

Что касается регистра символов, то большинство устройств (если не все!) не чувствительны к регистру. Они одинаково однозначно воспринимают команды и в верхнем регистре, и в нижнем:

AT+NAME?
at+name?

На этом остановимся. Более глубокие знания находятся на просторах Интернета, и пытливые умы без труда почерпнут более конкретные знания. А мы переходим к описанию проблемы.

Advertisements

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s