Salut Camille,
SIOC.exe est divisé en deux:
- Une base de données de variables, avec les actions à effectuer en cas de modification de chaque variable
- Des driver USB/port parallèle pour récupérer les inputs ou répercuter les outputs sur les cartes IO
Lorsque l'on appuies sur un bouton, la partie driver va dire à la partie base de données de changer la valeur de la variable associée au switch (de même lorque tu le relaches)
La partie base de données va alors effectuer les actions prévues comme changer la valeur d'une variable par exemple. Si cette variable modifiée est reliée à un output (led par exemple), la partie driver en est informé et répercute effectivement sur la carte I/O.
Maintenant, si tu n'as pas branché de cartes que va-t-il se passer?
Tu ne recevras jamais de signification de modifications d'inputs, et donc le driver ne demandera jamais de changer de variables. Pour ce qui est des outputs, le driver ne détectant pas de carte branchée, ne fera rien, pour autant, la variable de la base de donnée sera à jour.
Cette base de donnée elle est consultable en temps réel par la console IOCP

Sur la photo, 2 variables: un switch et une LED, déclaré tels que input et output normaux dans le script SIOC.
Avec la commande entourée en rouge, on peut changer les valeurs des variables facilement et ainsi "tromper" SIOC

.
Notons que si une carte I/O était branchée, forcer un bouton sur ON alors qu'en physique il est OFF marchera aussi!!! En effet le driver fonctionne sur les changements d'état physiques et ne détectera pas de changement d'état puisque le bouton n'a jamais été actionné réellement!!!
Et si on changeait la variable d'une LED, elle s'allumerait/s'éteindrait en même temps.
Voila