BleCommands.Windows
3.3.0
See the version list below for details.
dotnet add package BleCommands.Windows --version 3.3.0
NuGet\Install-Package BleCommands.Windows -Version 3.3.0
<PackageReference Include="BleCommands.Windows" Version="3.3.0" />
<PackageVersion Include="BleCommands.Windows" Version="3.3.0" />
<PackageReference Include="BleCommands.Windows" />
paket add BleCommands.Windows --version 3.3.0
#r "nuget: BleCommands.Windows, 3.3.0"
#:package BleCommands.Windows@3.3.0
#addin nuget:?package=BleCommands.Windows&version=3.3.0
#tool nuget:?package=BleCommands.Windows&version=3.3.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 (>= 3.3.0)
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 | 63 | 10/8/2026 |
| 3.5.0 | 90 | 10/1/2026 |
| 3.4.0 | 99 | 9/25/2026 |
| 3.3.4 | 93 | 9/21/2026 |
| 3.3.3 | 105 | 9/17/2026 |
| 3.3.2 | 110 | 9/7/2026 |
| 3.3.1 | 115 | 9/5/2026 |
| 3.3.0 | 120 | 8/25/2026 |
| 3.2.0 | 118 | 8/12/2026 |
| 3.1.2 | 119 | 8/9/2026 |
| 3.1.1 | 123 | 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 |