Aus öffentlichen Paketdaten erstellte Orientierung.
Das win_ble-Paket ermöglicht Bluetooth Low Energy (BLE)-Funktionen in Flutter-Anwendungen für Windows und reine Dart-Projekte. Speziell für Windows entwickelt, bietet es eine Brücke zu native BLE-Funktionen, sodass Entwickler Geräte entdecken, mit Peripheriegeräten verbinden, Eigenschaften lesen und schreiben sowie BLE-Operationen verwalten können. Dieses Plugin ist ideal für Anwendungen, die eine energieeffiziente drahtlose Kommunikation mit BLE-Geräten auf Windows-Plattformen erfordern. Es nutzt die Windows-Bluetooth-API über Plattformkanäle und gewährleistet eine zuverlässige Leistung innerhalb des Flutter-Ökosystems.
Anwendungsfälle
Verbindung zu BLE-Sensoren
Daten von BLE-Beacons lesen
Steuerung von BLE-fähigen IoT-Geräten
Entwicklung von Windows-exklusiven Gesundheitsüberwachungs-Apps
Näherungs-basierte Funktionen implementieren
Hauptmerkmale
Windows-spezifischer BLE-Support
Native Windows Bluetooth-API-Integration
Geräteentdeckung und Verbindungsverwaltung
Charakteristische Lese-/Schreibvorgänge
Reine Dart-Kompatibilität
Geeignet für
Windows-Desktop-App-Entwickler
IoT-Geräteintegratoren
Entwickler von Gesundheits- und Fitness-Apps
Bluetooth-zentrierte Hilfsprogramme
Plattformübergreifende Apps mit Windows-spezifischen BLE-Anforderungen
Hinweise
Beschränkt auf Windows-Plattform
Erfordert Windows 10 oder höher
Keine Unterstützung für Android/iOS
Abhängig von systemweiten Bluetooth-Berechtigungen
Kann zusätzliche Konfiguration für bestimmte Hardware erfordern
Original-README
Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.
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 WindowsawaitWinBle.initialize(serverPath: awaitWinServer.path());
// For pure dart projectsawaitWinBle.initialize(serverPath: "Path of BLEServer.exe file");
Dispose WinBle after using
WinBle.dispose();
To Start Scan
WinBle.startScanning();
StreamSubscription? scanStream = WinBle.scanStream.listen((event) {
// Get Devices Here
});
To Stop Scan
WinBle.stopScanning();
scanStream?.cancel();
To Connect
// To ConnectawaitWinBle.connect(address);
// Get Connection Updates HereStreamSubscription _connectionStream =
WinBle.connectionStreamOf(device.address).listen((event) {
// event will be a boolean , in which// true => Connected// false => Disconnected
});
To Disconnect
awaitWinBle.disconnect(address);
To get MaxMtuSize
awaitWinBle.getMaxMtuSize(address);
Handle Bluetooth radio
// To get rdaio statusWinBle.getBluetoothState();
// To get updates of radio stateWinBle.bleState.listen((BleState state) {
// Get BleState (On, Off, Unknown, Disabled, Unsupported)
});
// To turn on radioWinBle.updateBluetoothState(true);
// To turn off radioWinBle.updateBluetoothState(false);
Pairing Options
// To PairawaitWinBle.pair(address);
// To UnPairawaitWinBle.unPair(address);
// To Check if Device can be Pairedbool canPair = awaitWinBle.canPair(address);
// To Check if Device is Already Pairedbool isPaired = awaitWinBle.isPaired(address);
Rest All Methods are
// To Get Servicesvar services = awaitWinBle.discoverServices(address);
// To Get CharacteristicList<BleCharacteristic> bleCharacteristics = awaitWinBle.discoverCharacteristics(address: address, serviceId: serviceID);
// To Read CharacteristicList<int> data = awaitWinBle.read(address: address, serviceId: serviceID, characteristicId: charID);
// To Write CharacteristicawaitWinBle.write( address: address, service: serviceID, characteristic: charID, data: data, writeWithResponse: writeWithResponse);
// To Start SubscriptionawaitWinBle.subscribeToCharacteristic(address: address, serviceId: serviceID, characteristicId: charID);
// To Stop SubscriptionawaitWinBle.unSubscribeFromCharacteristic(address: address, serviceId: serviceID, characteristicId: charID);
// Get Characteristic Value Updates HereStreamSubscription _characteristicValueStream = WinBle.characteristicValueStream.listen((event) {
// Here We will Receive All Characteristic Events
});
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 --------- >