GalileoSky и работы с блютуз

Работа c Bluetooth

BTInit – инициализация bluetooth
Функция предназначена для инициализации bluetooth

BTInit()

BTReceive – принять bluetooth-сообщение
Функция предназначена для принятия bluetooth-сообщений.

new btMessage[BTMSG]

BTReceive(const btMessage[], const timeout)

  • btMessage – получаемое сообщение
  • timeout – время ожидания получения данных

main()

{

const timeout = 2000

const LEN_MAC = 6

new message[BTMSG] // объявление структуры сообщения


BTInit() // инициализация BLUETOOTH

while(1)

{

if ( BTReceive(message, timeout) )

{

Diagnostics("\nMAC: %X:%X:%X:%X:%X:%X", message.mac{0}, message.mac{1}, message.mac{2}, message.mac{3}, message.mac{4}, message.mac{5})

Diagnostics( "RSSI: %d", (message.rssi | 0xFFFFFF00) )

Diagnostics( "Data: size %d", message.dataSize )

DiagnosticsHex( message.data, message.dataSize )

}

Delay(1000)

}

}

В Конфигураторе 5.2.02 при использовании прошивки 45 добавлены функции работы по Bluetooth
Добавлена новая структура:
BTPARAMS{
mac; // массив 6 байт - должен содержать мак адрес устройства, к которому направлена команда
uuid16; // тип адреса uuid false - 2 байтовый, true - 16 байтовый,  должен содержать тип uuid
uuid; // массив 16 байт - должен содержать uuid характеристики с которой совершается операция
}
  • BTInit(const amountDev, const devMacs[]{6}) - инициализация для работы с BT
  • Параметры:  (оба параметра можно опустить, тогда принимать пакеты будет от всех устройств)
  • const amountDev - количество устройств, от которых хотим получать рекламные пакеты
  • const devMacs[]{6} - массив с mac адресами устройств, от которых хотим получать рекламные пакеты

  • BTReceive(BTMSG, timeout) - принять рекламное сообщение
  • BTMSG - ссылка  на структуру, для полученного сообщения
  • const  timeout - максимальное время ожидания получения рекламного сообщения

  • BTConnectTo(const addr{6}, [const timeout]) - подключиться к устройству bluetooth
  • Параметры: 
  • const addr{6}   - массив с mac адресом устройства
  • const timeout - [параметр не обязательный] - Общее время на подключение, по умолчанию это 2 минуты
  • BTDisconnectFrom(const addr{6}) - отключится от устройства
  • Параметры:
  • const addr{6}   - массив с mac адресом устройства
  • BTReadChar(BTParam, dataPrtToRead[],const dataMaxSize) - чтение характеристики подключенного устройства в буфер
  • Параметры:
  • BTParam - структура с заполненными параметрами, мак, uuid
  • dataPrtToRead[] - ссылка на массив куда будут записаны прочитанные данные
  • const dataMaxSize - размер переданного под запись данных буфера
  • BTWriteChar(BTParam, dataPrtToWrite[], const dataLen , [const withResponse]) - запись буфера в характеристику подключенного устройства
  • Параметры:
  • BTParam - структура с заполненными параметрами, мак, uuid
  • const  dataPrtToWrite[] - массив данных для записи в характеристику
  • const  dataLen  - количество байт для записи
  • const withResponse - [параметр не обязательный] - Тип запроса на запись, false - запись без подтверждения, true  - запись с подтверждением

  • BTNotifySize(BTParam, const timeout) - ожидание и получение размера следующей нотификации
  • BTParam - структура с заполненными параметрами, мак, uuidconst  timeout - максимальное время ожидания получения уведомления
  • BTNotifyRetrieve(BTParam, pData[], const dataMaxSize,  const timeout) - получение уведомлений от подключенного устройства
  • Для каждой пары устройство(mac) - характеристика(uuid), своя отдельная очередь. 
  • Параметры:
  • BTParam - структура с заполненными параметрами, мак, uuid
  • pData[] - массив для полученных данных в уведомлении
  • const dataMaxSize - размер переданного под запись данных буфера
  • const  timeout - максимальное время ожидания получения уведомления

  • BTSubscribe(BTParam) - подписка на уведомление от характеристики
  • Параметры:
  • BTParam - структура с заполненными параметрами, мак, uuid

  • BTUnsubscribe(BTParam) - отмена подписки уведомлении от характеристики
  • Параметры:
  • BTParam - структура с заполненными параметрами, мак, uuid

  • BTGetCharsAmount(const addr{6}, &amount) - получение количества характеристик в подключенном устройстве
  • Параметры:
  • const addr{6}   - массив с mac адресом устройства
  • amount - ссылка на переменную куда будет записано количество характеристик

  • BTGetChar(BTParam, const num) - получение uuid характеристики
  • Параметры:
  • BTParam - структура с заполненными параметрами, мак адрес подключенного устройства. Ответ будет также записан в эту структуру (в поля uuid, uuid16)
  • num - номер характеристики для получения
  • Cканирование работает автоматически - без необходимости его включать и выключать. 
Коды ответа для всех функций 
 1 - успех, в функциях получения данных 1...x - количество принятых байт
 0 - время выполнения команды превышено, таймаут
-1 - неверное кол-во или неправильные аргументы
-2 - состояние устройства к которому обращена команда не позволяет ее выполнить (отключено, не подписано, уже подключено)
-3 - общая ошибка, необходима диагностика
-4 - получен отказ от внешнего устройства 


Команды из Конфигуратора

Все параметры команд передаются в шестнадцатеричном формате без "0х"

  • BTCONNECT XXXXXXXXXXXX - подключение к устройству с MAC адресом XXXXXXXXXXXX
  • BTDISCONNECT XXXXXXXXXXXX - отключение от устройства с MAC адресом XXXXXXXXXXXX
  • BTREADCHAR XXXXXXXXXXXX, YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY  - чтение характеристики с UUID YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY   (может так же быть формата YYYY) в устройстве с MAC адресом XXXXXXXXXXXX
  • BTWRITECHAR XXXXXXXXXXXX, YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY, DD..DD  - запись данных (DD .. DD ) в характеристику с UUID YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY   (может так же быть формата YYYY) в устройстве с MAC адресом 
  • BTSUBSCRIBE XXXXXXXXXXXX, YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY  - подписка на уведомления от характеристики с UUID YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY   (может так же быть формата YYYY) в устройстве с MAC адресом XXXXXXXXXXXX
  • BTUNSUBSCRIBE XXXXXXXXXXXX, YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY  - отмена подписки уведомлений от характеристики с UUID YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY   (может так же быть формата YYYY) в устройстве с MAC адресом XXXXXXXXXXXX
Уведомления пока приходят в "Диагностику" в формате  - > Char update. Mac:XXXXXXXXXXXX Uuid: YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY Data: DD..DD 
Примеры:
BTCONNECT 7a01b72e4f3e
BTDISCONNECT 7a01b72e4f3e
BTSUBSCRIBE 7a01b72e4f3e,0100010200001000800009805f9b34fb
BTUNSUBSCRIBE 7a01b72e4f3e,0100010200001000800009805f9b34fb
BTWRITECHAR 7a01b72e4f3e,0100010200001000800009805f9b34fb,091213
BTREADCHAR 7a01b72e4f3e,0000010200001000800009805f9b34fb
Поиск информации по сайту мониторинга транспорта TREKBERRY
© TREKBERRY 2017-2024, Дмитрий В.М. Все права защищены.
Копирование материала без ссылки на источник запрещено. Информация размещенная на сайте не является публичной офертой. Часть текстов написано нейросетью, может содержать не точности. На сайте может быть реклама и иметь рекламные вставки.