Share via


Développer des applications de premier plan

Découvrez les langues prises en charge sur Windows 10 IoT Standard ainsi que les types d’applications UWP et non UWP pris en charge sur IoT Core.

Notes

Visual Studio génère une erreur chiffrée lors du déploiement sur une image IoT RS5 (ou RS4 avec OpenSSH activée), sauf si un Kit de développement logiciel (SDK) de RS4 ou supérieur est installé, auquel Visual Studio peut accéder.

Types d'applications

Applications de la plateforme Windows universelle (UWP)

IoT Core est un système d’exploitation centré sur UWP et les applications UWP sont son type d’application principal.

plateforme Windows universelle (UWP) est une plateforme d’applications commune à toutes les versions de Windows 10, y compris Windows 10 IoT Standard. UWP est une évolution de Windows Runtime (WinRT). Vous trouverez plus d’informations et une vue d’ensemble d’UWP ici.

Visual Studio est l’outil principal pour l’écriture d’applications UWP pour IoT Core et en général. Vous trouverez une liste détaillée des exigences de compatibilité pour Visual Studio ici.

Applications UWP traditionnelles

Les applications UWP fonctionnent simplement sur IoT Core, comme elles le font sur d’autres éditions Windows 10. Une application Xaml simple et vide dans Visual Studio se déploie correctement sur votre appareil IoT Core comme sur un téléphone ou un PC Windows 10. Tous les langages et modèles de projet UWP standard sont entièrement pris en charge sur IoT Core.

Il existe quelques ajouts au modèle d’application UWP traditionnel pour prendre en charge les scénarios IoT et toute application UWP qui en tire parti aura besoin des informations correspondantes ajoutées à son manifeste. En particulier, l’espace de noms « iot » doit être ajouté au manifeste de ces applications UWP standard.

À l’intérieur de l’attribut <Package> du manifeste, vous devez définir le xmlns iot et l’ajouter à la liste IgnorableNamespaces. Le xml final doit ressembler à ceci :

<Package
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
  xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
  xmlns:iot="http://schemas.microsoft.com/appx/manifest/iot/windows10"
  IgnorableNamespaces="uap mp iot">

Applications en arrière-plan

En plus des applications d’interface utilisateur traditionnelles, IoT Core a ajouté un nouveau type d’application UWP appelé « Applications en arrière-plan ». Ces applications n’ont pas de composant d’interface utilisateur, mais ont plutôt une classe qui implémente l’interface « IBackgroundTask ». Ils inscrivent ensuite cette classe en tant que « StartupTask » pour s’exécuter au démarrage du système. Étant donné qu’il s’agit toujours d’applications UWP, elles ont accès au même ensemble d’API et sont prises en charge à partir du même langage. La seule différence est qu’il n’y a pas de point d’entrée d’interface utilisateur.

Chaque type de IBackgroundTask obtient sa propre stratégie de ressources. Cela est généralement restrictif pour améliorer l’autonomie de la batterie et les ressources de l’ordinateur sur les appareils où ces applications en arrière-plan sont des composants secondaires des applications d’interface utilisateur au premier plan. Sur les appareils IoT, les applications en arrière-plan étant souvent la fonction principale de l’appareil, ces tâches StartupTasks obtiennent une stratégie de ressources qui met en miroir les applications d’interface utilisateur au premier plan sur d’autres appareils.

L’exemple suivant montre le code nécessaire pour générer une application d’arrière-plan C# qui clignote sur une LED :

namespace BlinkyHeadlessCS
{
    public sealed class StartupTask : IBackgroundTask
    {
        BackgroundTaskDeferral deferral;
        private GpioPinValue value = GpioPinValue.High;
        private const int LED_PIN = 5;
        private GpioPin pin;
        private ThreadPoolTimer timer;

        public void Run(IBackgroundTaskInstance taskInstance)        {
            deferral = taskInstance.GetDeferral();
            InitGPIO();
            timer = ThreadPoolTimer.CreatePeriodicTimer(Timer_Tick, TimeSpan.FromMilliseconds(500));

        }
        private void InitGPIO()
        {
            pin = GpioController.GetDefault().OpenPin(LED_PIN);
            pin.Write(GpioPinValue.High);
            pin.SetDriveMode(GpioPinDriveMode.Output);
        }

        private void Timer_Tick(ThreadPoolTimer timer)
        {
            value = (value == GpioPinValue.High) ? GpioPinValue.Low : GpioPinValue.High;
            pin.Write(value);
        }
    }
}

Vous trouverez des informations détaillées sur les applications d’arrière-plan ici.

Applications non UWP

IoT Core prend en charge certains types d’applications Win32 traditionnelles, comme les applications console Win32 et les services NT. Ces applications sont générées et exécutées de la même façon que sur Windows 10 Desktop. En outre, il existe un modèle de projet Console IoT Core C++ pour faciliter la création de telles applications à l’aide de Visual Studio.

Il existe deux limitations main sur ces applications non-UWP :

  1. Aucune prise en charge de l’interface utilisateur Win32 héritée : IoT Core ne contient pas d’API permettant de créer des fenêtres classiques (HWND). Les méthodes héritées telles que CreateWindow() et CreateWindowEx() ou toute autre méthode qui traite les handles Windows (HWND) ne sont pas disponibles. Par la suite, les frameworks qui dépendent de ces API, notamment MFC, Windows Forms et WPF, ne sont pas pris en charge sur IoT Core
  2. Applications C++ uniquement : Actuellement, seul C++ est pris en charge pour le développement d’applications Win32 sur IoT Core.

Langages de programmation

IoT Core prend en charge un large éventail de langages de programmation.

langues In-Box

Les langues UWP traditionnelles sont fournies avec prise en charge dans Visual Studio par défaut. Toutes les langues In-Box prennent en charge les applications d’interface utilisateur et d’arrière-plan

  • Langages
    • C#
    • C++
    • JavaScript
    • Visual Basic

Câblage Arduino

Arduino Wiring nécessite le téléchargement des « modèles de projet Windows IoT Core » à partir de Visual Studio Tools-Extensions> et Mises à jour Manager. Arduino Wiring prend uniquement en charge les applications en arrière-plan. Vous pouvez également générer des composants Windows Runtime à l’aide de C#, C++ ou Visual Basic, puis référencer ces bibliothèques à partir de n’importe quel autre langage.

C# et Visual Basic (VB)

C# et VB sont tous deux pris en charge en tant qu’applications UWP et ont accès à la partie du .NET Framework disponible pour les applications UWP. Ils prennent en charge les applications d’interface utilisateur créées avec Xaml, ainsi que les applications d’arrière-plan. Vous pouvez également créer des composants Windows Runtime qui peuvent être utilisés à partir d’autres langages pris en charge.

Exemples :

JavaScript

Vous pouvez utiliser JavaScript pour générer des applications d’interface utilisateur et d’arrière-plan. Les applications d’interface utilisateur fonctionnent de la même façon que sur toutes les éditions UWP. Les applications d’arrière-plan sont nouvelles pour IoT Core, mais sont simples. L’exemple de code suivant montre la sortie du nouveau modèle de projet JS :

// The Background Application template is documented at http://go.microsoft.com/fwlink/?LinkID=533884&clcid=0x409
(function () {
    "use strict";

    // TODO: Insert code here for the startup task

})();

C++

Avec C++, vous pouvez créer des applications d’interface utilisateur Xaml ou DirectX, ainsi que des projets en arrière-plan UWP et des applications Win32 non-interface utilisateur .

Exemples :

Notes

Pour ceux qui prévoient d’écrire leur application en C++, vous devez case activée la case UWP C++ lors du téléchargement.

C++ pour Visual Studio

?### Arduino Câblage

Avec la prise en charge d’Arduino Wiring, vous pouvez créer des applications dans Arduino Wiring pour de nombreux composants et périphériques populaires dans l’écosystème IoT.

Notre Guide du projet Arduino Wiring fournit des instructions complètes sur la façon de configurer pour créer ces applications. Les exemples copiés et liés ci-dessous vous aideront à commencer à créer les vôtres. Vous pouvez même créer des composants WinRT dans Arduino qui peuvent ensuite être utilisés à partir d’autres langages.

Exemple de code BlinkyL’exemple complet de code et la documentation sont disponibles sur notre page d’exemples et vous trouverez le code complet ci-dessous :

void setup()
{
    // put your setup code here, to run once:

    pinMode(GPIO5, OUTPUT);
}

void loop()
{
    // put your main code here, to run repeatedly:

    digitalWrite(GPIO5, LOW);
    delay(500);
    digitalWrite(GPIO5, HIGH);
    delay(500);
}