BleCommands.Windows
3.5.1
dotnet add package BleCommands.Windows --version 3.5.1
NuGet\Install-Package BleCommands.Windows -Version 3.5.1
<PackageReference Include="BleCommands.Windows" Version="3.5.1" />
<PackageVersion Include="BleCommands.Windows" Version="3.5.1" />
<PackageReference Include="BleCommands.Windows" />
paket add BleCommands.Windows --version 3.5.1
#r "nuget: BleCommands.Windows, 3.5.1"
#:package BleCommands.Windows@3.5.1
#addin nuget:?package=BleCommands.Windows&version=3.5.1
#tool nuget:?package=BleCommands.Windows&version=3.5.1
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.
- Unlimited message length: Receive UTF-8 strings of any length.
- Ready-to-use companion: The dedicated library for Arduino/ESP32 implements the server side of the protocol out of the box.
- Advanced scenarios: Direct access to native device, service, and characteristic 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();
For details on the protocol, transport lifecycle, and extending the transport, see BLE Transport.
| 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 (>= 3.5.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.5.1 | 53 | 10/8/2026 |
| 3.5.0 | 89 | 10/1/2026 |
| 3.4.0 | 98 | 9/25/2026 |
| 3.3.4 | 92 | 9/21/2026 |
| 3.3.3 | 104 | 9/17/2026 |
| 3.3.2 | 110 | 9/7/2026 |
| 3.3.1 | 115 | 9/5/2026 |
| 3.3.0 | 117 | 8/25/2026 |
| 3.2.0 | 118 | 8/12/2026 |
| 3.1.2 | 119 | 8/9/2026 |
| 3.1.1 | 122 | 8/6/2026 |
| 3.1.0 | 132 | 7/31/2026 |
| 3.0.0 | 120 | 7/27/2026 |
| 2.0.2 | 126 | 7/12/2026 |
| 2.0.1 | 126 | 7/3/2026 |
| 2.0.0 | 130 | 7/2/2026 |
| 1.1.0 | 136 | 6/25/2026 |
| 1.0.6 | 140 | 6/18/2026 |
| 1.0.5 | 130 | 6/11/2026 |
| 1.0.4 | 133 | 6/2/2026 |