win_ble 0.0.5 copy "win_ble: ^0.0.5" to clipboard
win_ble: ^0.0.5 copied to clipboard

PlatformWindows
outdated

WinBle Plugin to use Bluetooth Low Energy in Flutter Windows Desktop

WinBle #

WinBle Plugin to use Bluetooth Low Energy in Flutter Windows

Getting Started #

add this package to pubspec.yaml file

win_ble: ^0.0.4

requires Windows version >= 10.0.15014

Make Sure to Add this code in your project's =>

/windows/runner/main.cpp file , otherwise Windows Console will open on running Application

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 --------- >

Usage #

First initialize WinBle by Calling this Method

 WinBle.initialize();

Dispose WinBle after using , by Calling

 WinBle.dispose();

To Get Bluetooth Status , Call

  WinBle.bleState.listen((BleState state) {
    // Get BleState (On, Off, Unknown, Disabled, Unsupported)
  });

To Start Scan , Call

 WinBle.startScanning();
 StreamSubscription? scanStream = WinBle.scanStream.listen((event) {
  // Get Devices Here
 });

To Stop Scan , Call

  WinBle.stopScanning();
  scanStream?.cancel();

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
    });

To Disconnect

  await WinBle.disconnect(address);

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);

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
    });

Additional information #

Thanks to noble-winrt for initial BleServer Code

This is Just The Initial Version feel free to Contribute or Report any Bug!

39
likes
140
points
10.5k
downloads

Publisher

verified publisherrohitsangwan.in

Weekly Downloads

WinBle Plugin to use Bluetooth Low Energy in Flutter Windows Desktop

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

flutter, path_provider

More

Packages that depend on win_ble