
BLE для Arduino: пишем команды, а не дескрипторы
AndreyRodin 25 минут назад BLE для Arduino: пишем команды, а не дескрипторы 7 мин 1K .NET * Arduino * DIY или Сделай сам Разработать Bluetooth LE устройство на Arduino не так уж сложно. А вот на стороне клиента...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. AndreyRodin 25 минут назад BLE для Arduino: пишем команды, а не дескрипторы 7 мин 1K . NET * Arduino * DIY или Сделай сам Разработать Bluetooth LE устройство на Arduino не так уж сложно. А вот на стороне клиента организовать нормальный обмен командами и ответами — тут начинается настоящая боль.
Хочется просто отправить команду и сразу получить ответ. Или чтобы устройство само отправляло координаты, пока едет машинка. Без погружения в GATT и без асинхронных танцев с бубном.
Технические детали
Я подготовил две библиотеки — для Arduino и для . NET (MAUI, WPF, WinForms), которые скрывают все сложности BLE за простым текстовым протоколом. Возможности:Текстовый протокол: удобно логировать и отлаживать.
Простота использования: не нужно разбираться в тонкостях GATT, характеристиках, дескрипторах, буферизации. Кроссплатформенность: единый API для MAUI (Android/iOS), WPF и WinForms. Надежность: автоматическая сборка фрагментированных пакетов, ожидание ответа и таймауты.
Расширенные сценарии: удобная работа с BLE-устройством с доступом к нативным объектам. Код для Arduino: скетч за минутуЗагружаем библиотеку BleCommands и пишем:#include BLECommandsServer server; void setup() { Serial. begin(9600); while (!
Отраслевые последствия
begin("BLECommands server . onCommand("PING", (const String& command, const String& args) -> ) . onCommand("ECHO", (const String& command, const String& args) -> ) .
onCommand("GET", (const String& command, const String& args) -> ); } void loop() { server. poll(); }Первый пробел в строке — разделитель команды и аргументов. Это позволяет удобно обрабатывать такие команды, как GET MAC и GET NAME.
Можно также переопределить обработчик неизвестных команд:server. setFallbackHandler((const String& input) -> );Код для клиента C#: ещё минутаusing var transport = await ArduinoClient. CreateTransportAsync(deviceName); if (transport == null) { Console.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





