BleCommands.Windows
1.1.0
dotnet add package BleCommands.Windows --version 1.1.0
NuGet\Install-Package BleCommands.Windows -Version 1.1.0
<PackageReference Include="BleCommands.Windows" Version="1.1.0" />
<PackageVersion Include="BleCommands.Windows" Version="1.1.0" />
<PackageReference Include="BleCommands.Windows" />
paket add BleCommands.Windows --version 1.1.0
#r "nuget: BleCommands.Windows, 1.1.0"
#:package BleCommands.Windows@1.1.0
#addin nuget:?package=BleCommands.Windows&version=1.1.0
#tool nuget:?package=BleCommands.Windows&version=1.1.0
BleCommands
BleCommands is a simple and reliable library for exchanging text commands between devices via Bluetooth Low Energy (BLE). It provides a unified interface for .NET applications (MAUI, WPF, WinForms) and, together with the companion library for Arduino, makes it easy to control your BLE devices.
Features
- Text-based protocol: Commands are human-readable, simplifying debugging.
- Ease of use: No need to understand the intricacies of GATT, characteristics, descriptors or buffering.
- Cross-platform: A single API for MAUI (Android/iOS), WPF, and WinForms.
- Reliability: Automatic reassembly of fragmented packets, response waiting and timeouts.
- Ready-to-use companion: The dedicated library for Arduino/ESP32 implements the server side of the protocol out of the box.
- Advanced scenarios: Convenient work with a BLE device with access to native objects.
Installation
Add one of the following NuGet packages to your project:
# For MAUI applications (Android, iOS)
Install-Package BleCommands.Maui
# For Windows applications (WPF, WinForms, Console)
Install-Package BleCommands.Windows
Quick Start
If your Arduino sketch uses the Arduino companion library, then the work will be quite simple:
using var transport = await ArduinoClient.CreateTransportAsync("My BLE device");
await transport.StartAsync();
var response = await transport.SendCommandAsync("STATUS");
You can subscribe to regular messages from the device, as well as to timeout and connection loss events:
transport.ListeningTimeoutElapsed += (s, e) => { Console.WriteLine("Timeout"); };
transport.ListeningTokenReceived += (s, e) => { Console.WriteLine($"Token: {e.Text}"); };
transport.Disconnected += (s, e) => { Console.WriteLine("Device disconnected"); };
transport.StartListening(TimeSpan.FromSeconds(1));
You can work directly with Device, Service, and Characteristic objects. To release all system resources after work, simply dispose the Device object:
using var device = await new BleScanner().FindDeviceAsync("My BLE device");
var services = await device.GetServicesAsync();
var characteristics = await services.FirstOrDefault()?.GetCharacteristicsAsync();
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0-windows10.0.17763 is compatible. net10.0-windows was computed. |
-
net9.0-windows10.0.17763
- BleCommands.Core (>= 1.1.0)
- Microsoft.VisualStudio.Threading (>= 17.14.15)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.