Как получить список подключенных сканеров в UWP

Я хочу получить список подключенных сканеров (имена) и связать имена сканеров с полем со списком для целей сканирования. Я новичок в UWP, поделитесь ссылкой или кодом.

Я только что установил библиотеку NTwain из пакета NuGet.

см. этот раздел docs.microsoft.com/en-us/windows/uwp/devices-sensors/…

Alex 09.04.2019 09:23

Спасибо за ваш ценный ответ. я хочу привязать имя сканера к выпадающему списку при загрузке страницы (путем создания метода getScannerName), как это сделать?

ketan patil 09.04.2019 11:14

Можно ли использовать TWAIN dll в UWP??

ketan patil 09.04.2019 11:18
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
739
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

i want to bind the scanner name to combobox at page load(by creating getScannerName method ) how to do that ?

Для вашего требования вы можете использовать DeviceWatcher для перечисления всех ImageScanner. Затем привяжите результат к ListView. Для получения более подробной информации вы можете обратиться к официальному примеру кода УстройствоЭнумерацияАндПиринг, сценарий 2.

private void StartWatcher()
    {
        startWatcherButton.IsEnabled = false;
        ResultCollection.Clear();

        // First get the device selector chosen by the UI.
        DeviceSelectorInfo deviceSelectorInfo = (DeviceSelectorInfo)selectorComboBox.SelectedItem;

        if (null == deviceSelectorInfo.Selector)
        {
            // If the a pre-canned device class selector was chosen, call the DeviceClass overload
            deviceWatcher = DeviceInformation.CreateWatcher(deviceSelectorInfo.DeviceClassSelector);
        }
        else if (deviceSelectorInfo.Kind == DeviceInformationKind.Unknown)
        {
            // Use AQS string selector from dynamic call to a device api's GetDeviceSelector call
            // Kind will be determined by the selector
            deviceWatcher = DeviceInformation.CreateWatcher(
                deviceSelectorInfo.Selector, 
                null // don't request additional properties for this sample
                );
        }
        else
        {
            // Kind is specified in the selector info
            deviceWatcher = DeviceInformation.CreateWatcher(
                deviceSelectorInfo.Selector,
                null, // don't request additional properties for this sample
                deviceSelectorInfo.Kind);
        }

        // Hook up handlers for the watcher events before starting the watcher

        handlerAdded = new TypedEventHandler<DeviceWatcher, DeviceInformation>(async (watcher, deviceInfo) =>
        {
            // Since we have the collection databound to a UI element, we need to update the collection on the UI thread.
            await rootPage.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () =>
            {
                ResultCollection.Add(new DeviceInformationDisplay(deviceInfo));

                rootPage.NotifyUser(
                    String.Format("{0} devices found.", ResultCollection.Count),
                    NotifyType.StatusMessage);
            });
        });
        deviceWatcher.Added += handlerAdded;

        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 rootPage.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () =>
            {
                // 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 (DeviceInformationDisplay deviceInfoDisp in ResultCollection)
                {
                    if (deviceInfoDisp.Id == deviceInfoUpdate.Id)
                    {
                        deviceInfoDisp.Update(deviceInfoUpdate);
                        break;
                    }
                }
            });
        });
        deviceWatcher.Updated += handlerUpdated;

        handlerRemoved = 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 rootPage.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () =>
            {
                // Find the corresponding DeviceInformation in the collection and remove it
                foreach (DeviceInformationDisplay deviceInfoDisp in ResultCollection)
                {
                    if (deviceInfoDisp.Id == deviceInfoUpdate.Id)
                    {
                        ResultCollection.Remove(deviceInfoDisp);
                        break;
                    }
                }

                rootPage.NotifyUser(
                    String.Format("{0} devices found.", ResultCollection.Count), 
                    NotifyType.StatusMessage);
            });
        });
        deviceWatcher.Removed += handlerRemoved;

        handlerEnumCompleted = new TypedEventHandler<DeviceWatcher, Object>(async (watcher, obj) =>
        {
            await rootPage.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () =>
            {
                rootPage.NotifyUser(
                    String.Format("{0} devices found. Enumeration completed. Watching for updates...", ResultCollection.Count),
                    NotifyType.StatusMessage);
            });
        });
        deviceWatcher.EnumerationCompleted += handlerEnumCompleted;

        handlerStopped = new TypedEventHandler<DeviceWatcher, Object>(async (watcher, obj) =>
        {
            await rootPage.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () =>
            {
                rootPage.NotifyUser(
                    String.Format("{0} devices found. Watcher {1}.", 
                        ResultCollection.Count,
                        DeviceWatcherStatus.Aborted == watcher.Status ? "aborted" : "stopped"),
                    NotifyType.StatusMessage);
            });
        });
        deviceWatcher.Stopped += handlerStopped;

        rootPage.NotifyUser("Starting Watcher...", NotifyType.StatusMessage);
        deviceWatcher.Start();
        stopWatcherButton.IsEnabled = true;
    }

Большое спасибо за ваше время и ваш ответ. :) Теперь работает. у вас есть идеи, как сканировать изображение через сканер автоподатчика в uwp. Поделитесь ссылкой или кодом. Еще раз спасибо :)

ketan patil 10.04.2019 11:36

Пожалуйста, проверьте этот документ.

Nico Zhu - MSFT 10.04.2019 11:47

Это код Windows 8 образец, и вы можете указать его код.

Nico Zhu - MSFT 10.04.2019 11:53

спасибо :) вы пробовали этот пример кода для сканирования с планшетного сканера?

ketan patil 15.04.2019 08:10

К сожалению, у нас нет планшетного сканера такого устройства.

Nico Zhu - MSFT 15.04.2019 08:12

для автоматической подачи?

ketan patil 15.04.2019 08:13

Другие вопросы по теме