Безголовое сопряжение UWP Bluetooth без ввода пользовательского PIN-кода

В настоящее время я создаю автономное приложение UWP, работающее в Windows 10 IoT Core. Мне нужно подключить мобильные устройства к киоску через Bluetooth (RFCOMM) для сбора данных. Мне нужно иметь возможность инициировать сопряжение с мобильных устройств.

Я экспериментировал со всеми примерами приложений Bluetooth UWP, но в основном экспериментировал с Пример C # для перечисления устройств и сопряжения < / em> - в частности, Сценарий 9 - Сопряжение настраиваемых устройств. Я могу успешно выполнить сопряжение с возглавляемым приложением UWP с помощью контактов, но мне не удалось успешно выполнить сопряжение с моим автономным приложением UWP - я получаю либо «неудачный» результат, либо результат «тайм-аут аутентификации», когда пытаюсь инициировать сопряжение.

Как подключиться к безголовому UWP-приложению без пользовательского интерфейса, чтобы получить пин-код? Я мог бы жить с приложением UWP, имеющим жестко запрограммированный контакт вместо случайного вывода для каждой попытки сопряжения, но я не уверен, возможно ли это или нет?


person gerfen    schedule 25.09.2019    source источник


Ответы (1)


Вы можете попробовать следующий код. При поступлении входящих запросов на сопряжение вызывается handlerUpdater.

            handlerUpdated = new TypedEventHandler<DeviceWatcher, DeviceInformationUpdate>(async (watcher, deviceInfoUpdate) =>
            {
                // Since we have the collection databound to a UI element, we need to update the collection on the UI thread.
                await MainPage.Current.UIThreadDispatcher.RunAsync(CoreDispatcherPriority.Low, async () =>
                {
                    // Find the corresponding updated DeviceInformation in the collection and pass the update object
                    // to the Update method of the existing DeviceInformation. This automatically updates the object
                    // for us.
                    foreach (BluetoothDeviceInformationDisplay deviceInfoDisp in bluetoothDeviceObservableCollection)
                    {
                        if (deviceInfoDisp.Id == deviceInfoUpdate.Id)
                        {
                            if (deviceInfoDisp.DeviceInformation.Pairing.CanPair)
                            {
                                await deviceInfoDisp.DeviceInformation.Pairing.Custom.PairAsync(DevicePairingKinds.ConfirmOnly);
                            }

                            deviceInfoDisp.Update(deviceInfoUpdate);
                            break;
                        }
                    }
                });
            });
            deviceWatcher.Updated += handlerUpdated;
person Michael Xu - MSFT    schedule 25.09.2019
comment
Спасибо за ответ. Я обновил DeviceWatcherHelper в примере Device Enumeration and Pairing C #, чтобы добавить предложенный код. К сожалению, я все еще получаю ошибку тайм-аута аутентификации. Есть ли у вас другие предложения? Я думаю, что для сообщества Windows 10 IoT Core было бы весьма полезно иметь работающее приложение-образец UWP без головы, которое демонстрирует сопряжение без булавки. Я был бы более чем счастлив отправить его, но мне нужны дополнительные рекомендации. - person gerfen; 10.10.2019