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, Дмитрий В.М. Все права защищены.
Копирование материала без ссылки на источник запрещено. Информация размещенная на сайте не является публичной офертой. Часть текстов написано нейросетью, ChatGPT может содержать не точности.