win_ble

Creator: coderz1093

Last updated:

Add to Cart

Description:

win ble

WinBle #

Use the WinBle plugin to enable Bluetooth Low Energy in Flutter Windows and pure Dart projects (Windows only)
Usage #
First initialize WinBle, to initialize on Flutter Windows, get server path using await WinServer.path, and for pure dart projects ( Windows only ) Download BleServer.exe file and place in the same folder, checkout example_dart for more details
// To initialize on Flutter Windows
await WinBle.initialize(serverPath: await WinServer.path());

// For pure dart projects
await WinBle.initialize(serverPath: "Path of BLEServer.exe file");
copied to clipboard
Dispose WinBle after using
WinBle.dispose();
copied to clipboard
To Start Scan
WinBle.startScanning();

StreamSubscription? scanStream = WinBle.scanStream.listen((event) {
// Get Devices Here
});
copied to clipboard
To Stop Scan
WinBle.stopScanning();

scanStream?.cancel();
copied to clipboard
To Connect
// To Connect
await WinBle.connect(address);

// Get Connection Updates Here
StreamSubscription _connectionStream =
WinBle.connectionStreamOf(device.address).listen((event) {
// event will be a boolean , in which
// true => Connected
// false => Disconnected
});
copied to clipboard
To Disconnect
await WinBle.disconnect(address);
copied to clipboard
To get MaxMtuSize
await WinBle.getMaxMtuSize(address);
copied to clipboard
Handle Bluetooth radio
// To get rdaio status
WinBle.getBluetoothState();

// To get updates of radio state
WinBle.bleState.listen((BleState state) {
// Get BleState (On, Off, Unknown, Disabled, Unsupported)
});

// To turn on radio
WinBle.updateBluetoothState(true);

// To turn off radio
WinBle.updateBluetoothState(false);
copied to clipboard
Pairing Options
// To Pair
await WinBle.pair(address);

// To UnPair
await WinBle.unPair(address);

// To Check if Device can be Paired
bool canPair = await WinBle.canPair(address);

// To Check if Device is Already Paired
bool isPaired = await WinBle.isPaired(address);
copied to clipboard
Rest All Methods are
// To Get Services
var services = await WinBle.discoverServices(address);

// To Get Characteristic
List<BleCharacteristic> bleCharacteristics = await WinBle.discoverCharacteristics(address: address, serviceId: serviceID);

// To Read Characteristic
List<int> data = await WinBle.read(address: address, serviceId: serviceID, characteristicId: charID);

// To Write Characteristic
await WinBle.write( address: address, service: serviceID, characteristic: charID, data: data, writeWithResponse: writeWithResponse);

// To Start Subscription
await WinBle.subscribeToCharacteristic(address: address, serviceId: serviceID, characteristicId: charID);

// To Stop Subscription
await WinBle.unSubscribeFromCharacteristic(address: address, serviceId: serviceID, characteristicId: charID);

// Get Characteristic Value Updates Here
StreamSubscription _characteristicValueStream = WinBle.characteristicValueStream.listen((event) {
// Here We will Receive All Characteristic Events
});

copied to clipboard
Note #
Requires Windows version >= 10.0.15014

If windows release build opens cmd while running app, try this
Edit your /windows/runner/main.cpp file, this is a known flutter issue
if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()){
CreateAndAttachConsole();
}
// Add this Code
// <------- From Here --------- >
else{
STARTUPINFO si = {0};
si.cb = sizeof(si);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;

PROCESS_INFORMATION pi = {0};
WCHAR lpszCmd[MAX_PATH] = L"cmd.exe";
if (::CreateProcess(NULL, lpszCmd, NULL, NULL, FALSE, CREATE_NEW_CONSOLE | CREATE_NO_WINDOW, NULL, NULL, &si, &pi))
{
do
{
if (::AttachConsole(pi.dwProcessId))
{
::TerminateProcess(pi.hProcess, 0);
break;
}
} while (ERROR_INVALID_HANDLE == GetLastError());
::CloseHandle(pi.hProcess);
::CloseHandle(pi.hThread);
}
}
// <------- UpTo Here --------- >
copied to clipboard

Additional information #
Thanks to noble-winrt for initial BleServer Code
This is Just The Initial Version feel free to Contribute or Report any Bug!

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.