Korzystam z DeviceWatcher, aby uzyskać DeviceInformation dla sparowanego urządzenia Bluetooth w aplikacji UWP. Ustawić DeviceWatcher się jak toUzyskiwanie nazwy portu COM znanego urządzenia Bluetooth w urządzeniu UWP
var requestedProperties = new string[] { "System.Devices.Aep.DeviceAddress", "System.Devices.Aep.IsConnected" };
var deviceWatcher = DeviceInformation.CreateWatcher("(System.Devices.Aep.ProtocolId:=\"{e0cbf06c-cd8b-4647-bb8a-263b43f0f974}\")", requestedProperties, DeviceInformationKind.AssociationEndpoint); // ClassGuid = {e0cbf06c-cd8b-4647-bb8a-263b43f0f974} includes all Bluetooth devices
deviceWatcher.Added += DeviceWatcher_Added;
deviceWatcher.Updated += DeviceWatcher_Updated;
deviceWatcher.Start();
Gdy obsługi zdarzeń DeviceWatcher_Added nazywa I sprawdzić, czy urządzenie jest jednym Jestem zainteresowany zaznaczając jego nazwę i to, że oferuje usługę RfcommServiceId.SerialPort.Uuid.
Kiedy mam DeviceInformation dla urządzenia Bluetooth, jestem zainteresowany, w jaki sposób mogę uzyskać dla niego port COM? Widzę to w Menedżerze urządzeń, gdzie jest wymienione jako "Standardowe łącze szeregowe przez Bluetooth (COM8)", ale nie widzę, jak programowo uzyskać "COM8" w UWP.
Próbowałem dokonywania DeviceInformation w SerialDevice, dzięki czemu mogłem wtedy dostać SerialDevice.PortName (por this odpowiedź), ale moje wezwanie do SerialDevice.FromIdAsync(deviceInfo.Id)
nie z System.Exception: Dane jest nieprawidłowy.
(NB Niektóre kuszących odpowiedzi, jak this i this, korzystać z funkcji zarządzania Windows Intrumentation WMI ale nie są one dostępne w UWP).
Jak upewnić się, że deviceInfo.Id jest id Twojego urządzenia (COM8)? Czy możesz pokazać pełny kod zrobić ten wyjątek: 'System.Exception: dane są nieprawidłowe'? –
Pełny kod jest [tutaj] (https://github.com/dumbledad/BluetoothCOMGleaner) – dumbledad
Biorąc pod uwagę, że znasz już 'deviceInfo.Name', zastanawiasz się, czy możesz uzyskać" Id "z tego? '(czekać na DeviceInformation.FindAllAsync (SerialDevice.GetDeviceSelector())) Single (di => di.Name == deviceInfo.Name) .Id' –