2015-11-13 3 views
1

Я работаю над универсальным приложением, и я пытаюсь определить, работает ли он на настольном компьютере или на реальном устройстве IoT (Raspberry PI 2). В соответствии с рекомендацией, я пытаюсь использовать контрактный API проверку, однако это возвращает true даже на настольном компьютере:Как обнаружить работу на реальном устройстве?

ApiInformation.IsApiContractPresent("Windows.Devices.DevicesLowLevelContract", 1, 0); 

Очевидно, когда я пытаюсь вызвать GpioController.GetDefault(), он не на рабочем столе, но как ни странно с FileNotFoundException: "The specified module could not be found."

Итак, каков правильный способ обнаружения реального устройства?

Спасибо за вашу помощь,

Дьёрдь

Edit:

На некоторых рабочих столах GpioController.GetDefault() возвращает null, в то время как на других машинах он терпит неудачу с FileNotFoundException.

Edit:

Моя цель состоит в том, чтобы убедиться, что я могу смело назвать какие-либо конкретные интерфейсы GPIO или IoT Ключевыми без примерки уловов блоков везде для обработки исключений при запуске на устройстве без IoT.

ответ

0

Вы можете найти тип устройства, ваше приложение работает на по

Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily 

Источник: https://msdn.microsoft.com/en-us/library/windows/apps/windows.system.profile.analyticsversioninfo.aspx

Microsoft действительно предлагает, чтобы максимизировать охват с универсальными приложениями, проверяя возможности вместо того, чтобы просто проверить семейство устройств. Существует статья обо всем, что здесь: https://msdn.microsoft.com/en-us/library/windows/apps/dn894631.aspx

+0

Спасибо за ваш ответ, Том. Рассматриваемый вами класс «AnalyticsInfo» предназначен для «профилирования» (см. Https://msdn.microsoft.com/en-us/library/windows/apps/windows.system.profile.analyticsinfo), что означает для меня, что это существует для регистрации и диагностики. Да, я согласен, Microsoft рекомендует использовать контракты API (см. Https://blogs.windows.com/buildingapps/2015/09/15/dynamically-detecting-features-with-api-contracts-10-by-10/), чтобы обнаружить функции, именно поэтому я пытаюсь их использовать, однако он возвращает неверные данные. –

+0

Проверьте ответ от Daniel Meixner по этой ссылке: http://stackoverflow.com/questions/30479171/windows-10-uap-determine-if-device-is-iot-eg-raspberry-pi-2 Он предлагает проверить если тип GpioController присутствует, я еще не пробовал себя. –

+0

спасибо за подсказку, но, к сожалению, IsTypePresent для класса GpioController также возвращает true на рабочем столе :( –

0

Это зависит от того, какой аспект «реального устройства» вы хотите проверить. Использование информации о контракте API не является хорошим прокси-сервером, как вы уже нашли (хотя он должен вернуть null, а не сбой, на рабочем столе - это ошибка). Использование AnalyticsInfo может быть разумным прокси, но вы должны быть осторожны при получении новых значений с течением времени, а также на самом деле идентифицируете тип ОС, а не физическое оборудование. Перечисление аппаратных устройств - лучший способ обнаружения аппаратного обеспечения, но они могут возникать и динамически, поскольку пользователь подключает и отключает их.

Что вы ищете, чтобы сделать по-другому на основе ответа?

+0

Я просто хочу решить, могу ли я использовать классы GpioController и GpioPin, иначе они не сработают, потому что нет GPIO, доступных на текущее оборудование.Так что я действительно не забочусь о типе ОС или семействе устройств, я хочу знать, доступен ли API. У меня создалось впечатление, что это цель контрактов API. Спасибо за ваш ответ, Peter. –

+0

Я могу подтвердить, что на некоторых десктопах 'GpioController.GetDefault()' возвращает 'null', а на других машинах он терпит неудачу с' FileNotFoundException'. Strange. –

+0

Peter, страница MSDN в классах 'AnalyticsInfo', что он существует «для целей профилирования» и сообщения в блоге (https://blogs.windows.com/buildingapps/2015/09/15/dynamically-detecting-features-with-api-contracts-10-by-10/) из e Команда Windows 10 рекомендует использовать контракты API для обнаружения функций. Я что-то неправильно понимаю? –

 Смежные вопросы

  • Нет связанных вопросов^_^