- Messages
- 23 106
- Réactions
- 3 332
- Points
- 3 526
C'est quoi SIOC? SIOC pour Semantically Interlinked Online Communities est un logiciel gratuit développé par Manuel Vélez basé sur un langage puissant de programmation qui permet de lié des interrupteurs, des voyants, des encodeurs, et des affichages à un simulateur de vol par lintermédiaire de cartes d'interface Opencockpits.
Télécharger la dernière version de SIOC sur le site dOpencockpits et décompresser le pour obtenir un setup qui vous permettra d'installer SIOC dans un dossier avec plusieurs fichiers.
Pourquoi SIOC?
Pré-requis pour SIOC
Les autres programmes
Présentation de SIOC
SIOC utilise 3 modules pour unir des variables (FSUIPC, IOCP et IOCARD). Pour interagir avec SIOC, des variables prennent la valeur du résultat d'un évenement lancer par un des modules cité ci dessus et grâce à un script correspondant associé permet dinteragir avec les IOcards.
Le module IOcards permet de connecter vos cartes à votre ordinateur, mais certains produits ont leur propre logiciel IOCARD et peuvent se connecter au serveur IOCP du SIOC par leur propre client IOCP.
Le module FSUIPC qui est connecté a votre simulateur de vol les variables SIOC sont de type envoi ou réception.
Note : Les envois et réceptions sont possible par le lien FSUIPC INOUT
Le mode Client IOCP qui est différent du serveur propre IOCP de SIOC c'est à dire des autres variables qui sont dans un autre serveur et avec lequel on accède depuis notre module client. SIOC peut donc être relié à un autre serveur IOCP permettant ainsi a SIOC daccéder aux variables de ce simulateur ou un serveur IOCP qui se trouve en réseau avec le notre par exemple sur un réseau locale par le port ethernet.
A==> IOCards Module indique la version de SIOC utilisé (5.0/B5) et lorsque les cartes sont bien branchés (running). Pour le screen vu qu aucune carte n'est branché j'ai lindication (stopped).
B==> FSUIPC Module indique le statut de FSUIPC (ok), la version de FSUIPC et le simulateur utilisé (dVK pour P3D, FSX pour Flight Sim, FS2004)
C==> IOCP Server indique l'adresse et le port quutilise SIOC pour communiquer avec d'autres logiciels. Dans le 2ème screen le nombre de clients connectés est de 1 car PROSIM a été configuré pour être mis en relation avec SIOC. Plus d'informations sur configurer SIOC avec PROSIM.
D==> IOCP Module #0 indique les autres variables qui sont dans un autre serveur et avec lequel on accède depuis notre module client comme par exemple XPUIPC pour X-Plane.
E==> IOCP Module #1 voir au dessus
F==> Devices affiche les cartes connectés à l'ordinateur, le numéro IDX (c'est lui qui va déterminer sur quelle carte une variable doit créer un événement, par exemple vous avez 2 master et vous voulez utiliser une fonction pour la variable 15 mais sur la deuxième Master) et le numéro de device (change à chaque fois qu'on change de port USB sur l'ordinateur ou sur un hub USB. Ce numéro doit être reporté dans le fichier sioc.ini, et ne concerne que ce fichier).
G==> LOG permet de visualiser les opérations que vous effectuer dans SIOC.
1==> Empt'y Script recharge et utilise un fichier vide pour le serveur IOCP.
2==> Edit Script lance Configsioc.exe pour modifier directement le fichier (.ssi).
3==> SIOC Monitor permet de visualiser l'état de toutes les entrées, sorties, axes analogiques gérés par la carte USB Expansion.
4==> Config Devices permet de gérer les cartes relié a l'ordinateur.
5==> Reload recharge les modifications effectués dans le fichier (.ssi), pour transmettre la nouvelle configuration au simulateur.
6==> Edit .INI appelle le fichier sioc.ini, pour le modifier.
7==> IOCP Console permet de voir ce qui se passe dans SIOC.
8==> Multi Scripts permet de diviser les différents scripts afin déviter d'avoir le meme script pour tout un cockpit.
9==> Setup permet d'activer/des'activer certains paramètres.
10==> Tray et Exit Tray execute SIOC en tâche de fond, et affiche une icône de contrôle est affichée dans la barre de tâches et Exit déconnecte tous les modules et ferme SIOC.
Premier pas avec SIOC
Le fichier SIOC.INI
Les variables de SIOC
On emploie le plus souvent le nom de "variable" , mais on rencontre aussi le nom "offset", pour désigner la même chose, elles sont définies comme le souhaite l'utilisateur. Ces variables SIOC peuvent être liées à pas mal de choses (Link).
On peut lier des variables à FSUIPC, donc leur demander dagir sur un offset de la liste de Peter Dowson dans tous les sens, la variable SIOC va:
Définition d'un numéro de variable?
Exemple : VAR100, name COMMANDEDETRAIN, Link FSUIPC_INOUT, Offset $0BE8, lenght 4
SIOC peut admettre 9999 numéros de variables définis par l'utilisateur. Comme il y a de la place entre 0000 et 9999, on créera des "classes" de variables, ce qui permettra d'ajouter facilement des variables nouvelles, et de faciliter la lecture du code.
Par exemple :
0000 pour la variable dinitialisation
0001 à 0299 pour les variables de commande FS ($...),
0300 à 0399 pour les subroutines,
0400 à 0499 pour les interrupteurs, et si on a besoin de plus de 100 variables pour les interrupteurs par exemple ? On ajoute un 1 et on commence une série 1400 à 1499... Pour certains types d'avions complexes, on pourra aussi grouper les variables par système avion, par exemple toutes les variables des moteurs ensemble, etc...
Les variables peuvent nêtre définies que par un numéro. Lorsque le fichier .ssi grossit, et cela vient très vite, il devient impossible de comprendre le programme à la lecture de simples numéros, on ne sait plus à quoi cela correspond, il faut chercher plus haut, ou plus bas dans le programme pour avoir la définition de ce numéro. Pour éviter cette perte de temps, SIOC permet de nommer les variables, c'est l'objet de la fenêtre "NAME" à côté du numéro.
Exemple : Var 0400, name LEDTRAINGAUCHE, Link IOCARD_OUT, Output 15
Nommer nos variables est une habitude à prendre dès maintenant, pour toutes les variables, cela permet de se relire facilement, mais cela permet aussi déchanger des fichiers avec d'autres utilisateurs, qui sans variables nommées seraient complètement perdus.
Dans un même programme, mieux vaut également toujours employer le même langage pour nommer des variables: par exemple toutes les variables d'affichage par diode commenceront par LED. Chacun peut définir le langage qui lui convient, l'essentiel étant que tout le monde le comprenne immédiatement.
Exemple : Var 0400, name LEDTRAINGAUCHE, Link IOCARD_OUT, Output 15
Vous pouvez employé une forme anglaise pour nommer vos variables, exemple la fonction train d'atterrissage gauche s'appellera GEAR_LEFT plutôt que TRAIN_GAUCHE, ceci toujours pour faciliter les échanges de fichiers.
Les actions sont souvent décrites en français derrière le signe // d'un fichier texte, ou dans la case "Description" de la fenêtre des "Paramètres" ce qui améliore grandement la compréhension.
Vous remarquerez que le nombre de caractères pour nommer ou pour faire la description d'une variable est limité. Egalement, le nom d'une variable doit être un seul mot, donc pas despace, pas de tiret - , seulement des soulignés _ .
Si vous entrez GEAR-SW au lieu de GEAR_SW, la fenêtre de création des paramètres refusera de se fermer, pour vous avertir de l'erreur.
La variable dinitialisation
Cette variable non obligatoire, portant le numéro 0000 et qu'on peut nommer INI ou INIT, est un peu spéciale.
Le principe de SIOC est que ses variables ne sont pas lues en boucle, mais uniquement lorsquelles changent de valeur. Si aucune instruction ne vient changer la valeur d'une variable, SIOC reste en veille mais si un "évènement" survient, un interrupteur qu'on bascule, alors SIOC réagit immédiatement et corrige les données par lintermédiaire de son interprète FSUIPC.
La seule exception est la variable 0000 dinitialisation, qui est lue et exécutée s'ystématiquement au démarrage de SIOC. C'est donc l'endroit idéal pour mettre les paramètres qu'on souhaite voir exécuter avant tout vol comme par exemple le frein de parking, le train sorti, les volets rentrées, la batterie sur OFF ect....
Au démarrage donc en suivant l'exemple ci-dessus, le frein de parking sera toujours serré, le train sera toujours sorti, les volets seront toujours remis à zéro et la batterie sur toujours sur OFF.
Vous avez peut être remarqué que la fenêtre des paramètres de certaines variables comporte une case "INITIAL VALUE". Les valeurs INITIAL VALUE sont souvent utilisées avec les afficheurs, si on souhaite par exemple que, au démarrage, la vitesse verticale affichée soit égale à 200 pieds/minute, mais cela marche tout aussi bien avec la variable INIT.
La variable dinitialisation est toujours prioritaire au démarrage de SIOC, si on demande que les volets soient rentrés, mettre FLAPS=0 dans la variable INI suffit. Mais sil n'y a rien dans la variable INI concernant une variable, c'est lINITIAL VALUE qui est prise en compte, SIOC modifie la valeur de la variable en conséquence.
Les variables locales
Il sagit de variables intermédiaires, très pratiques pour simplifier lécriture, à l'intérieur d'un même script.
Par exemple, la variable $07D4 pour l'altitude. Si on veut obtenir l'altitude en pieds, il faut diviser la valeur de cette variable par 19975.37 car 3.28084 mètres est égale a 65536 donc 100 pieds est égale à 19975.37 (Peter Dowson).
Supposons que nous voulions nous servir de $07D4 (notre variable altitude) pour faire une alarme de déclenchement d'un son lorsque l'altitude de l'avion sera + ou - 500 pieds par rapport à l'altitude demandée au sélecteur daltitude.
Il va falloir définir des variables intermédiaires avec une définition:
Si la variable Altitude divisée par 19975.433 + 500 pieds est égale à la valeur de la variable de lecture de laltimètre, alors un son est émis.
On peut simplifier largement cette écriture en définissant une variable locale. Nous dirons une fois pour toutes que la variable locale L0=ALTI/19975.433 (L0 c'est L "zéro", car la suivante s'appellera L1, etc... jusqu'à L2).
Les définitions de variables intermédiaires seront :
ALTI_1=L0
ALTI_2=L0 + 500
ALTI_3=L0 - 500
Dès qu'un calcul intervient et se répète, une variable locale simplifie bien les choses.
Ces variables locales ne sont valables qu'à l'intérieur d'un même script (groupe de commandes, ou sous-ensemble de programmation, entre un { et un } en texte, exécuté lorsque la variable change de valeur).
Les variables locales peuvent avoir une valeur numérique, décimale ou entière, positive ou négative, dans ce cas nous les appellerons L0, L1 et L2, car il n'y en a que trois à notre disposition.
Elles peuvent aussi avoir une valeur dite "booléenne" c'est à dire 1 ou 0, VRAI ou FAUX. Dans ce cas nous les appellerons C0, C1 et C2. Evidemment, les variables locales C correspondront souvent à une variable sur un interrupteur, ayant la valeur 0 ou 1.
On peut aussi combiner les variables locales L avec les C dans une même formule.
Les variables internes
Il peut arriver que certaines fonctions présentes sur un avion style PMDG ne correspondent à aucune variable correspondante dans la liste de Fsuipc et donc dans FSX ou P3D.
Puisqu'il n'existe pas de variable, il suffit den créer une. On peut créer une variable portant n'importe quel numéro, par exemple var 500. On pourra lui associer une variable dinterrupteur, une variable de sortie Output pour une diode, et mettre dans le script toutes les commandes habituelles IF, ELSE..
Exemple :
Var 500, name CAB_DOOR // Porte cabine
Var 400, name CAB_DOOR_SW, Link IOCARD_SW, Input 45 // Bouton de déverrouillage cabine
Var 650, name CAB_DOOR_LED, Link IOCARD_OUT, Output 40 // Led déverrouillage cabine
La variable ainsi créer est non liée, puisque ne correspondant à rien dans FSUIPC, mais parfaitement fonctionnelle, puisque l'interrupteur de la var 400 pourra très bien déterminer que la var 500 = 1 si lui même est = 1.
La variable suit l'interrupteur, donc CAB_DOOR = CAB_DOOR_SW, mais c'est l'interrupteur qui commande, donc la commande en question est à mettre dans le script de la variable interrupteur, et non dans la variable 500 CAB_DOOR. La LED suit sa variable, mais c'est la variable qui commande.
Exemple :
Var 500, name CAB_DOOR // Porte cabine
>V &CAB_DOOR_LED = &CAB_DOOR
Var 400, name CAB_DOOR_SW, Link IOCARD_SW, Input 45 // Bouton de déverrouillage cabine
>V &CAB_DOOR = CAB_DOOR_SW
Var 650, name CAB_DOOR_LED, Link IOCARD_OUT, Output 40 // Led déverrouillage cabine
Les modules
Les attributs
Les commandes
Les opérateurs logiques
Les autres fonctions
Télécharger la dernière version de SIOC sur le site dOpencockpits et décompresser le pour obtenir un setup qui vous permettra d'installer SIOC dans un dossier avec plusieurs fichiers.
Pourquoi SIOC?
- Logiciel Freeware.
- Cartes d'interface à prix coûtant montées ou en kit.
- Nombreuses cartes diverses pour diverses applications.
- Possibilité de connecter de nombreuses entrées, sorties leds, afficheurs 7 segments, moteurs, servos, manettes relais.
- Possibilité de paramétrage énorme et implémentation de fonctions non prises en charge par FS.
Pré-requis pour SIOC
- Le programme Sioc.exe pour exécuter votre programme.
- Un éditeur de texte tel que Notepad, pour écrire votre script.
- Le fichier Sioc.ini qui est un fichier texte modifiable manuellement dans un éditeur de texte Notepad, ou avec le programme dédié Configsioc.exe. Ce fichier est lu s'ystématiquement par Sioc.exe lors de son lancement afin de révéler votre matériel et votre configuration. Sioc.ini définit quel fichier sioc.exe doit exécuter et il est impossible de modifier ce comportement. Il répertorie aussi toutes les cartes d'interface reliées au PC, ainsi que la configuration réseau si lon désire utiliser IOCP. Indiquer les bons paramètres dans le fichier sioc.ini est essentiel.
- Le programme Config-sioc.exe pour compiler votre script dans un fichier exécutable (.ssi).
- Le programme Siocmonitor.exe pour vérifier si votre matériel fonctionne correctement.
Les autres programmes
- FSUIPC qui est un add-in permettant de lié SIOC à votre simulateur (P3D par exemple). Plus d'informations FSUIPC.
- IOCP qui est un protocole de communication qui permet de saffranchir de FSUIPC si on le souhaite. Il prend la forme de iocpserver.dll dans le dossier modules de FS/P3D.
- USBCheck qui permet d'afficher dans une fenêtre le nom et le numéro de device de tous les périphériques USB connectés au PC. A télécharger sur Opencockpits
Présentation de SIOC
SIOC utilise 3 modules pour unir des variables (FSUIPC, IOCP et IOCARD). Pour interagir avec SIOC, des variables prennent la valeur du résultat d'un évenement lancer par un des modules cité ci dessus et grâce à un script correspondant associé permet dinteragir avec les IOcards.
Le module IOcards permet de connecter vos cartes à votre ordinateur, mais certains produits ont leur propre logiciel IOCARD et peuvent se connecter au serveur IOCP du SIOC par leur propre client IOCP.
- Pour le mode de connection SW qui gère les switches a des variables reliés directement aux entrées de la Master ou/et INput card ainsi lors d événement d'une ou de ces variables, une modification de l'état dentrée mettra ces variables en valeur =0 quand elle est inactive et valeur = 1 quand elle est active. Ce type de mode est réception.
- Pour le mode de connection sortie OUT qui gère les sorties (ex diodes) a des variables reliés directement aux sorties de la Master ou/et Outcard ainsi lors d événement d'une ou de ces variables, une modification de l'état de sortie mettra ces variables en valeur =0 quand elle est inactive et valeur différent de 0 quand elle est active. Ce type de mode est envoi.
- Pour le mode de connection Digits qui gère les affichages 7 segments a des variables reliés directement aux sorties de la Display card ainsi outre le numéro digit 1er digit à utiliser il faudra introduire les chiffres qui compose le nombre à afficher et des fois le paramètre type pour définir des manière différentes selon l'utilisation. Ce type de mode est envoi.
- Pour le mode connection Encodeur qui gère laccroissement ou la diminution d'une variable à un moment donné reliés directement aux sorties encodeur de la Master ou Encoders card par exemple pour modifier le HDG ou des valeur du MCP. La variable est modifié dans un premier temps lors de laccroissement ou la diminution de la valeur et aussi lorsque l'état est nul c'est à dire que il n'y a pas daccroissement ou de diminution. Il faut indiquer l'entrée sur la carte, laccélération et le type dencodeur. Ce type de mode est réception.
- Pour le mode connection Analogique qui gère laccroissement ou la diminution d'une variable à un moment donné reliés directement aux sorties analogique de la Master ou USB Axes card par exemple pour modifier le potentiomètre des manettes de gaz. La variable est modifié dans un premier temps lors de laccroissement ou la diminution de la valeur et aussi lorsque l'état est nul c'est à dire que il n'y a pas daccroissement ou de diminution. Il faut indiquer l'entrée sur la carte, laccélération et le type danalogique. Ce type de mode est réception.
- Pour le mode connection Servo qui gère laccroissement ou la diminution d'une variable à un moment donné reliés directement aux sorties servo de la USB servo motors card par exemple pour modifier le servomoteur des gauges. La variable est modifié dans un premier temps lors de laccroissement ou la diminution de la valeur et aussi lorsque l'état est nul c'est à dire que il n'y a pas daccroissement ou de diminution. Il faut indiquer l'entrée sur la carte, laccélération et le type de servo. Ce type de mode est envoi.
- Pour le mode connection Motor qui gère les moteurs DC pas à pas reliés directement aux sorties motor de la USB stepper motors card par exemple pour l'horloge du chronographe ou lanémomètre. La différence avec le Servomoteur est que les servomoteurs sont faciles à utiliser et assez fiable, ils sont souvent beaucoup plus bruyant et moins précis que les moteurs pas à pas donc tout dépend de l'utilisateur. Ce type de mode est envoi.
Le module FSUIPC qui est connecté a votre simulateur de vol les variables SIOC sont de type envoi ou réception.
- Pour le mode envoi FSUIPC OUT il faut indiquer un offset de destination (ex : $0B12), la longueur de la variable de destination (voir SDK FSUIPC et des fois une valeur initiale. (le mode envoi peut servir a paramétrer le train d'atterissage).
- Pour le mode réception FSUIPC IN il faut aussi un offset d'origine et une longueur de variable, le système fera une lecture à intervalle régulier (réglable dans le fichier ini) permettant en cas de changement de la valeur de l'offset lenvoie d'un événement à la variable associé. (le mode réception, peut servir a paramétrer un événement lors d'un décrochage pour lallumage du lampe par exemple ou lorsque qu'on est en dessous du Glide lallumage de Below GS...).
Note : Les envois et réceptions sont possible par le lien FSUIPC INOUT
Le mode Client IOCP qui est différent du serveur propre IOCP de SIOC c'est à dire des autres variables qui sont dans un autre serveur et avec lequel on accède depuis notre module client. SIOC peut donc être relié à un autre serveur IOCP permettant ainsi a SIOC daccéder aux variables de ce simulateur ou un serveur IOCP qui se trouve en réseau avec le notre par exemple sur un réseau locale par le port ethernet.
A==> IOCards Module indique la version de SIOC utilisé (5.0/B5) et lorsque les cartes sont bien branchés (running). Pour le screen vu qu aucune carte n'est branché j'ai lindication (stopped).
B==> FSUIPC Module indique le statut de FSUIPC (ok), la version de FSUIPC et le simulateur utilisé (dVK pour P3D, FSX pour Flight Sim, FS2004)
C==> IOCP Server indique l'adresse et le port quutilise SIOC pour communiquer avec d'autres logiciels. Dans le 2ème screen le nombre de clients connectés est de 1 car PROSIM a été configuré pour être mis en relation avec SIOC. Plus d'informations sur configurer SIOC avec PROSIM.
D==> IOCP Module #0 indique les autres variables qui sont dans un autre serveur et avec lequel on accède depuis notre module client comme par exemple XPUIPC pour X-Plane.
E==> IOCP Module #1 voir au dessus
F==> Devices affiche les cartes connectés à l'ordinateur, le numéro IDX (c'est lui qui va déterminer sur quelle carte une variable doit créer un événement, par exemple vous avez 2 master et vous voulez utiliser une fonction pour la variable 15 mais sur la deuxième Master) et le numéro de device (change à chaque fois qu'on change de port USB sur l'ordinateur ou sur un hub USB. Ce numéro doit être reporté dans le fichier sioc.ini, et ne concerne que ce fichier).
G==> LOG permet de visualiser les opérations que vous effectuer dans SIOC.
1==> Empt'y Script recharge et utilise un fichier vide pour le serveur IOCP.
2==> Edit Script lance Configsioc.exe pour modifier directement le fichier (.ssi).
3==> SIOC Monitor permet de visualiser l'état de toutes les entrées, sorties, axes analogiques gérés par la carte USB Expansion.
4==> Config Devices permet de gérer les cartes relié a l'ordinateur.
5==> Reload recharge les modifications effectués dans le fichier (.ssi), pour transmettre la nouvelle configuration au simulateur.
6==> Edit .INI appelle le fichier sioc.ini, pour le modifier.
7==> IOCP Console permet de voir ce qui se passe dans SIOC.
8==> Multi Scripts permet de diviser les différents scripts afin déviter d'avoir le meme script pour tout un cockpit.
9==> Setup permet d'activer/des'activer certains paramètres.
10==> Tray et Exit Tray execute SIOC en tâche de fond, et affiche une icône de contrôle est affichée dans la barre de tâches et Exit déconnecte tous les modules et ferme SIOC.
Premier pas avec SIOC
Le fichier SIOC.INI
Les variables de SIOC
On emploie le plus souvent le nom de "variable" , mais on rencontre aussi le nom "offset", pour désigner la même chose, elles sont définies comme le souhaite l'utilisateur. Ces variables SIOC peuvent être liées à pas mal de choses (Link).
On peut lier des variables à FSUIPC, donc leur demander dagir sur un offset de la liste de Peter Dowson dans tous les sens, la variable SIOC va:
- une variable peut envoyer (ou écrire) une information à FSUIPC.
- une variable peut recevoir (ou lire) une information de FSUIPC et ce sera FSUIPC IN.
- une variable peut faire les deux et ce sera FSUIPC INOUT.
- une variable peut être "liée" à une carte d'interface comme une entrée sur sa carte Master, comme les variables commandant les interrupteurs, ou une sortie (diode), ou un afficheur (Display), ou une carte additionnelle comme la carte Servos.
- une variable peut être liée à un module IOCP.
- une variable peut être liée à rien du tout, et dans ce cas le changement de valeur de la variable en question nagira que sur elle-même. Une variable non liée est précédée d'un carré blanc.
Définition d'un numéro de variable?
Exemple : VAR100, name COMMANDEDETRAIN, Link FSUIPC_INOUT, Offset $0BE8, lenght 4
SIOC peut admettre 9999 numéros de variables définis par l'utilisateur. Comme il y a de la place entre 0000 et 9999, on créera des "classes" de variables, ce qui permettra d'ajouter facilement des variables nouvelles, et de faciliter la lecture du code.
Par exemple :
0000 pour la variable dinitialisation
0001 à 0299 pour les variables de commande FS ($...),
0300 à 0399 pour les subroutines,
0400 à 0499 pour les interrupteurs, et si on a besoin de plus de 100 variables pour les interrupteurs par exemple ? On ajoute un 1 et on commence une série 1400 à 1499... Pour certains types d'avions complexes, on pourra aussi grouper les variables par système avion, par exemple toutes les variables des moteurs ensemble, etc...
Les variables peuvent nêtre définies que par un numéro. Lorsque le fichier .ssi grossit, et cela vient très vite, il devient impossible de comprendre le programme à la lecture de simples numéros, on ne sait plus à quoi cela correspond, il faut chercher plus haut, ou plus bas dans le programme pour avoir la définition de ce numéro. Pour éviter cette perte de temps, SIOC permet de nommer les variables, c'est l'objet de la fenêtre "NAME" à côté du numéro.
Exemple : Var 0400, name LEDTRAINGAUCHE, Link IOCARD_OUT, Output 15
Nommer nos variables est une habitude à prendre dès maintenant, pour toutes les variables, cela permet de se relire facilement, mais cela permet aussi déchanger des fichiers avec d'autres utilisateurs, qui sans variables nommées seraient complètement perdus.
Dans un même programme, mieux vaut également toujours employer le même langage pour nommer des variables: par exemple toutes les variables d'affichage par diode commenceront par LED. Chacun peut définir le langage qui lui convient, l'essentiel étant que tout le monde le comprenne immédiatement.
Exemple : Var 0400, name LEDTRAINGAUCHE, Link IOCARD_OUT, Output 15
Vous pouvez employé une forme anglaise pour nommer vos variables, exemple la fonction train d'atterrissage gauche s'appellera GEAR_LEFT plutôt que TRAIN_GAUCHE, ceci toujours pour faciliter les échanges de fichiers.
Les actions sont souvent décrites en français derrière le signe // d'un fichier texte, ou dans la case "Description" de la fenêtre des "Paramètres" ce qui améliore grandement la compréhension.
Vous remarquerez que le nombre de caractères pour nommer ou pour faire la description d'une variable est limité. Egalement, le nom d'une variable doit être un seul mot, donc pas despace, pas de tiret - , seulement des soulignés _ .
Si vous entrez GEAR-SW au lieu de GEAR_SW, la fenêtre de création des paramètres refusera de se fermer, pour vous avertir de l'erreur.
La variable dinitialisation
Cette variable non obligatoire, portant le numéro 0000 et qu'on peut nommer INI ou INIT, est un peu spéciale.
Le principe de SIOC est que ses variables ne sont pas lues en boucle, mais uniquement lorsquelles changent de valeur. Si aucune instruction ne vient changer la valeur d'une variable, SIOC reste en veille mais si un "évènement" survient, un interrupteur qu'on bascule, alors SIOC réagit immédiatement et corrige les données par lintermédiaire de son interprète FSUIPC.
La seule exception est la variable 0000 dinitialisation, qui est lue et exécutée s'ystématiquement au démarrage de SIOC. C'est donc l'endroit idéal pour mettre les paramètres qu'on souhaite voir exécuter avant tout vol comme par exemple le frein de parking, le train sorti, les volets rentrées, la batterie sur OFF ect....
Au démarrage donc en suivant l'exemple ci-dessus, le frein de parking sera toujours serré, le train sera toujours sorti, les volets seront toujours remis à zéro et la batterie sur toujours sur OFF.
Vous avez peut être remarqué que la fenêtre des paramètres de certaines variables comporte une case "INITIAL VALUE". Les valeurs INITIAL VALUE sont souvent utilisées avec les afficheurs, si on souhaite par exemple que, au démarrage, la vitesse verticale affichée soit égale à 200 pieds/minute, mais cela marche tout aussi bien avec la variable INIT.
La variable dinitialisation est toujours prioritaire au démarrage de SIOC, si on demande que les volets soient rentrés, mettre FLAPS=0 dans la variable INI suffit. Mais sil n'y a rien dans la variable INI concernant une variable, c'est lINITIAL VALUE qui est prise en compte, SIOC modifie la valeur de la variable en conséquence.
Les variables locales
Il sagit de variables intermédiaires, très pratiques pour simplifier lécriture, à l'intérieur d'un même script.
Par exemple, la variable $07D4 pour l'altitude. Si on veut obtenir l'altitude en pieds, il faut diviser la valeur de cette variable par 19975.37 car 3.28084 mètres est égale a 65536 donc 100 pieds est égale à 19975.37 (Peter Dowson).
Supposons que nous voulions nous servir de $07D4 (notre variable altitude) pour faire une alarme de déclenchement d'un son lorsque l'altitude de l'avion sera + ou - 500 pieds par rapport à l'altitude demandée au sélecteur daltitude.
Il va falloir définir des variables intermédiaires avec une définition:
Si la variable Altitude divisée par 19975.433 + 500 pieds est égale à la valeur de la variable de lecture de laltimètre, alors un son est émis.
On peut simplifier largement cette écriture en définissant une variable locale. Nous dirons une fois pour toutes que la variable locale L0=ALTI/19975.433 (L0 c'est L "zéro", car la suivante s'appellera L1, etc... jusqu'à L2).
Les définitions de variables intermédiaires seront :
ALTI_1=L0
ALTI_2=L0 + 500
ALTI_3=L0 - 500
Dès qu'un calcul intervient et se répète, une variable locale simplifie bien les choses.
Ces variables locales ne sont valables qu'à l'intérieur d'un même script (groupe de commandes, ou sous-ensemble de programmation, entre un { et un } en texte, exécuté lorsque la variable change de valeur).
Les variables locales peuvent avoir une valeur numérique, décimale ou entière, positive ou négative, dans ce cas nous les appellerons L0, L1 et L2, car il n'y en a que trois à notre disposition.
Elles peuvent aussi avoir une valeur dite "booléenne" c'est à dire 1 ou 0, VRAI ou FAUX. Dans ce cas nous les appellerons C0, C1 et C2. Evidemment, les variables locales C correspondront souvent à une variable sur un interrupteur, ayant la valeur 0 ou 1.
On peut aussi combiner les variables locales L avec les C dans une même formule.
Les variables internes
Il peut arriver que certaines fonctions présentes sur un avion style PMDG ne correspondent à aucune variable correspondante dans la liste de Fsuipc et donc dans FSX ou P3D.
Puisqu'il n'existe pas de variable, il suffit den créer une. On peut créer une variable portant n'importe quel numéro, par exemple var 500. On pourra lui associer une variable dinterrupteur, une variable de sortie Output pour une diode, et mettre dans le script toutes les commandes habituelles IF, ELSE..
Exemple :
Var 500, name CAB_DOOR // Porte cabine
Var 400, name CAB_DOOR_SW, Link IOCARD_SW, Input 45 // Bouton de déverrouillage cabine
Var 650, name CAB_DOOR_LED, Link IOCARD_OUT, Output 40 // Led déverrouillage cabine
La variable ainsi créer est non liée, puisque ne correspondant à rien dans FSUIPC, mais parfaitement fonctionnelle, puisque l'interrupteur de la var 400 pourra très bien déterminer que la var 500 = 1 si lui même est = 1.
La variable suit l'interrupteur, donc CAB_DOOR = CAB_DOOR_SW, mais c'est l'interrupteur qui commande, donc la commande en question est à mettre dans le script de la variable interrupteur, et non dans la variable 500 CAB_DOOR. La LED suit sa variable, mais c'est la variable qui commande.
Exemple :
Var 500, name CAB_DOOR // Porte cabine
>V &CAB_DOOR_LED = &CAB_DOOR
Var 400, name CAB_DOOR_SW, Link IOCARD_SW, Input 45 // Bouton de déverrouillage cabine
>V &CAB_DOOR = CAB_DOOR_SW
Var 650, name CAB_DOOR_LED, Link IOCARD_OUT, Output 40 // Led déverrouillage cabine
Les modules
- FSUIPC_OUT Envoie les données aux offsets FSUIPC.
- FSUIPC_IN Reçoit les données des offsets FSUIPC.
- FSUIPC_INOUT Reçoit et envoie les données FSUIPC.
- IOCP Envoie et reçoit les données de variables IOCP
- IOCARD_SW Gère les switches des Iocards.
- IOCARD_OUT Active/désactive les sorties des Iocards.
- IOCARD_DISPLAY Envoie les chiffres aux Iocards display.
- IOCARD_ENCODER Reçoit les informations des encodeurs.
- IOCARD_ANALOGIC Reçoit les informations dentrées analogiques.
- IOCARD_SERVO Fait bouger les servos Iocards.
- IOCARD_MOTOR Gère les moteurs DC pas à pas.
- SUBRUTINE Gère les variables en subroutine.
Les attributs
- LINK Définit le type de liaison que doit avoir la variable.
- TYPE Définit les caractéristiques spéciales de lélément.
- OFFSET Numéro de variable IOCP ou Offset FSUIPC.
- VALUE Valeur initiale de la variable.
- LENGHT Longueur de lOffset FSUIPC auquel la variable est liée.
- INPUT Entrée de la carte master à laquelle la variable est liée.
- OUTPUT Sortie de la carte master à laquelle la variable est liée.
- DIGIT Premier digit de la carte display qui définit un nombre.
- ACCELERATION Accélération sélectionnée pour un encodeur.
- NUMBERS Chiffres à gérer de la carte display.
- PosL Position gauche de calibration.
- PosC Position centrée de calibration.
- PosR Position droite de calibration.
Les commandes
- ASSIGNATION Pour assigner une valeur ou un calcul à une variable SIOC.
- FONCTION Fonctions à appliquer aux variables SIOC.
- CALL Lance un script associé à une variable se type subrutine et lui passe un paramètre.
- CONDITION IF Commandes soumises à une condition.
- COMMANDE ELSE Commandes exécutées si la condition n'est pas réalisée.
Les opérateurs logiques
- + Addition de deux variables ou constantes.
- - Soustraction de deux variables ou constantes.
- * multiplication de deux variables ou constantes.
- / division de deux variables ou constantes.
- AND Condition logique ET.
- OR Condition logique OU.
- > Condition si plus grand que.
- < Condition si plus petit que.
- = Condition si égale.
- >= Condition si plus grand ou égal.
- <= Condition si plus petit ou égal.
- <> Condition si différent.
Les autres fonctions
- ROUND Arrondit à la valeur entière la plus proche.
- TRUNC Enlève les décimales et donne un nombre entier.
- TIMER Programme des événements périodiques selon un chrono.
- SETBIT Active le bit d'une variable.
- CLEARBIT Dés'active le bit d'une variable.
- TESTBIT Teste si le bit d'une variable est actif.
- NOT Insère la valeur d'une variable booléenne (C0,C1,C2).
- ROTATE Produit des incrémentations/décrémentations cycliques.
- ToBCD Change une valeur décimale en format BCD.
- FromBCD Change de BCD en valeur décimale.
- TOGGLE Effectue une fonction toggle dans le bit d'une variable.
- ABS Change à la valeur absolue.
- ChangeBit Change un bit de la variable en fonction d'un paramètre.
- ChangeBitN Idem avec une autre utilisation du paramètre.
- LIMIT Augmente la variable en fonction d'une limite.
- DIV Calcule la division entière de deux nombres.
- MOD Calcule le module (reste de la division) entre deux nombres.