Skip to content

Commencer

Bienvenue dans le guide du SDK Home I/O.
Ce guide décrit ce qu’est le SDK, comment il fonctionne et où trouver des informations supplémentaires.

Le SDK Home I/O est composé d’une bibliothèque .NET 2.0 (EngineIO.dll), de la documentation correspondante, d’outils et de quelques exemples pour vous aider à démarrer.
Cette bibliothèque permet à du code personnalisé d’accéder aux points d’E/S (Entrées/Sorties) de la simulation.

Fonctionnement

La communication inter-processus (IPC) s’effectue à travers un fichier de mémoire partagée (EngineIO.dll).
La mémoire est divisée en trois groupes : Entrées (Inputs), Sorties (Outputs) et Mémoires (Memories).

Ces groupes sont une convention que nous avons définie, en partant du point de vue d’un contrôleur.
Chaque point d’E/S — qu’il s’agisse d’une entrée, d’une sortie ou d’une mémoire — possède une adresse mémoire unique , un nom et une valeur.

Points importants à considérer lors de l’utilisation de la bibliothèque EngineIO.dll :

  • La classe MemoryMap est un Singleton, ce qui signifie qu’une seule instance peut exister à la fois. Cette instance représente une copie en cache du fichier mémoire partagé.
  • La méthode MemoryMap.Instance.Update() est responsable de la synchronisation entre votre copie en cache et le fichier mémoire partagé. Cette méthode doit être appelée chaque fois que vous souhaitez accéder aux dernières valeurs d’E/S ou recevoir des notifications d’événements.

Exemple simple montrant comment allumer et éteindre les lumières du salon à l’aide de C#.

using System;
using System.Threading;

using EngineIO;

namespace EngineIO.Samples
{
    class Program
    {
        //In this sample we are switching the living room light on and off 10 times.
        static void Main(string[] args)
        {
            //We are using a MemoryBit which we get from the MemoryMap.
            //You can find all the memory addresses at the Memory Addresses page.
            MemoryBit livingRoomLight = MemoryMap.Instance.GetBit(0, MemoryType.Output);

            for (int i = 0; i < 10; i++)
            {
                livingRoomLight.Value = !livingRoomLight.Value;

                //When using a memory value before calling the Update method we are using a cached value.
                Console.WriteLine("Light is on? " + livingRoomLight.Value);

                //Calling the Update method will write the livingRoomLight.Value to the memory map.
                MemoryMap.Instance.Update();

                Thread.Sleep(1000);
            }

            //When we no longer need the MemoryMap we should call the Dispose method to release all the allocated resources.
            MemoryMap.Instance.Dispose();

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
    }
}

Chaque groupe (Entrées, Sorties et Mémoires) prend en charge les types de données suivants :

Type de donnée Plage de valeurs Remarques
Bit True or False
Byte 0 to 255
Short -3,768 to 32,767
Int -2,147,483,648 to 2,147,483,647
Long 9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
Float -3.403 × 1038 to 3.403 × 1038
Double -1.798 × 10 308 to 1.798 × 10308
String 64 UNICODE Characters
DateTime 00:00:00, January 1, 0001 through 23:59:59, December 31, 9999 Représente un instant dans le temps, généralement exprimé sous forme de date et d’heure.
TimeSpan -10675199.02:48:05.4775808 to 10675199.02:48:05.4775807 Représente un intervalle de temps exprimé en jours, heures, minutes, secondes et fractions de seconde (positif ou négatif).

Outil Engine I/O Explorer

Vous trouverez l’outil Engine I/O Explorer à l’intérieur du fichier ZIP du SDK. Cet outil vous permet d’explorer facilement les adresses mémoire, noms, types et valeurs des points d’E/S. C’est un outil très utile lors des phases de développement.

Informations supplémentaires

Veuillez consulter les exemples inclus dans le SDK — ils montrent de bonnes pratiques sur l’utilisation de la bibliothèque EngineIO.dll.