Script Sioc via FSIUPC pour aeroSystem737, MCP, EFIS, CDU

Questions de programmation / Offset FSUIPC et IOCP

Script Sioc via FSIUPC pour aeroSystem737, MCP, EFIS, CDU

Messagede jacquesvde » Lun 4 Jan 2016 00:32

Bonjour,

Tout d’abord je vous souhaite une bonne et heureuse année 2016.
J’ai parcouru de nombreux forum pour avoir un exemple de script FSUIPC concernant le MCP d’open Cockpit avec aeroSystem737 sans aucun résultat.
Bon je mets les mains dans le cambouis je désir programmer le MCP pas à pas, même si cela dur 6 mois.
Le problème c’est que je ne sais pas par où commencer quoi que j’ai des connaissances avec la programmation de FSUIPC et Sioc.

J’ai fait des essais mais je me heurte à quelques problèmes de paramètre.
1. Avant d'envoyer une commande, vous devez d'abord vous assurer que l'adresse 7370 hex a une valeur de 0. ? comment mettre cette adresse a 0.
2. Var 0001, Link FSUIPC_IN, Offset $7370, Length 2 >> Length doit avoir quelle valeur en sachant que l’offset est d’un octet ?
C’est juste le début et d’autre question vous sera poser au fur et à mesure pour une compréhension du programme que j’aimerais qu’il devienne un tuto, si les modérateurs ne trouve pas d’inconvénients.
D’avance je vous remercie pour votre aide.
Jacques.

Code: Tout sélectionner
Comment connecter du matériel externe
Certain matériel fonctionne avec AeroSystems et d’autre exigera une programmation. Si vous savez comment coder, vous pouvez utiliser l'interface simple d'interagir avec FSUIPC, le lien entre FSX et AeroSystems, pour contrôler le matériel externe.
INTRODUCTION
Nous utilisons les offset de FSUIPC standard, qui vous permettent de lire et d'écrire des données vers et à partir du logiciel de AeroSystems. La lecture et l'écriture des données est un processus simple et vous donne accès à l'AeroSystems MCP, EFIS et CDU. Vous pouvez envoyer sur simple pressions de bouton, tourner des commutateurs sur On,Off, ainsi que d'envoyer des éléments clés pour le CDU. Vous pouvez également lire l'état des compteurs et des affichages LED.
L’offset dans FSUIPC pour AeroSystems commencent à l'adresse 7370 hex et occupent 32 octets.
Envoyer une commande a AeroSystems
Envoi d'une commande est très simple. Une commande est envoyée en utilisant les adresses ci-dessous.
Adresse longueur de description
7370 hex commandes 1 octet
7371 hex petites valeurs entières (2 octets)
Avant d'envoyer une commande, vous devez d'abord vous assurer que l'adresse 7370 hex a une valeur de 0.
Si elle est de 0, vous pouvez écrire une commande à cette adresse, avec une valeur facultative pour aborder 7371 hex.
Lorsqu’AeroSystems a terminé le traitement de la commande, AeroSystems fixeront 7370 hex à 0, vous informant qu'il est prêt à accepter une autre commande.
Voici un exemple simple:
Si la valeur à l'adresse 7370 hex = 0 alors
commencer,  Fsuipc peut exécute la demande.
 Écrire une commande pour aborder 7370 hex
Écrire une valeur facultative comme un petit entier (-32767 à 32767) pour aborder 7371 hex
 Fsuipc envoyer la demande fin.

Alors rappelez-vous, si 7370 est différent de 0, vous ne pouvez pas envoyer une commande jusqu'à AeroSystems réinitialise à 0.

SENDING A COMMAND TO AEROSYSTEMS
Sending a command is very simple. A command is sent using the addresses below.

Address   description        length
7370         command        1 byte
7371         value                small integer (2 bytes)
Before you send a command you must first make sure that address 7370 hex has a value of 0. if it is 0 you can write a command to that address, with an optional value to address 7371 hex. When aeroSystems has finished processing the command, aeroSystems will set 7370 hex back to 0, informing you that it’s ready to accept another command.

Here’s an easy example:

If value at address 7370 hex = 0 then
begin
  FSUIPC begin request
  write a command to address 7370 hex
  write an optional value as a small integer (-32767 to +32767) to address 7371 hex
  FSUIPC send request end

So remember, if 7370 is not 0 you cannot send a command until aeroSystems resets it back to 0.

WRITE COMMAND LIST
These are the commands you send to aeroSystems.

Command   Value      Description
(decimal)    (decimal)   MCP


1      0 to 500   MCP altitude divided by 100. eg. to set MCP to 37500 write 375
2      -79 to60   Vertical speed divided by 100
10      none      flight director toggle (read status from FSX to determine initial state)
11      none       AT ARM toggle (read status from FSX to determine initial state)
12      none       Push N1
13       none      Push SPEED
14       none       Push VNAV
15      none       Push LVL CHG
16      none      Push HDL SEL
17      none       Push LNAV
18      none       Push VOR/LOC
19      none       Push APP
20      none       Push ALT HOLD
21       none       Push V/S
22      none       Push CMD A
23      none       Push IAS/MACH change over
24       none       Push TOGA takeoff mode 1 - pilot pitches aircraft manually for takeoff
25      none       Push TOGA takeoff mode 2 - autopilot pitches nose-up at Vr and
                                                                            takes off by itself (auto takeoff)
26       none       Push CMD B

            EFIS
30       none       Push WXR
31       none       Push STA
32       none       Push WPT
33       none       Push ARPT
34       none       Push DATA
35       none       Push POS
36       none       Push TERR
37       none       ADF/VOR Left OFF
38       none       ADF/VOR Left ADF
39       none       ADF/VOR Left VOR
40       none       ADF/VOR Right OFF
41       none       ADF/VOR Right ADF
42       none       ADF/VOR Right VOR
43       none       Map Mode APP
44       none       Map Mode VOR
45       none       Map Mode MAP
46       none       Map Mode PLAN
47       none       Map Range 5
48       none       Map Range 10
49       none       Map Range 20
50       none       Map Range 40
51       none       Map Range 80
52       none       Map Range 160
53       none       Map Range 320
54       none       Map Range 640
55       none       Push STD BARO
56       none       Push DH baro reset
57       0 to 9000    DH baro minimum decent altitude
58       none       Push TRAFFIC
59       none       Push Centre/Expanded Map
60       none       toggle SYS hydraulic display

CDU
eg. write 250 as the command and 1 as the value to press the LSK 1 Left key on the CDU.

250       1       LSK 1L
250       2       LSK 2L
250       3       LSK 3L
250       4       LSK 4L
250       5       LSK 5L
250       6       LSK 6L
250       7       LSK 1R
250       8      LSK 2R
250       9       LSK 3R
250       10       LSK 4R
250       11       LSK 5R
250       12       LSK 6R
250       32 to 90    ASCII code for the key pressed. eg. 65 is the letter A, 32 is a space
                                                                                                                                                         etc.
250       100       Push +/- key.  Note this key toggles in the CDU between + and - when
                                                                                                                                                     pressed
250       101       Push CLR
250       102      Push DEL
250       200       Push INIT REF
250       201       Push RTE
250       202       Push CLB
250       203       Push CRZ
250       204       Push DES
250       205        Push MENU
250       206       Push LEGS
250       207       Push DEPARR
250       208       Push HOLD
250       209       Push PROG
250       210       Push N1 LIMIT
250       211       Push FIX
250       212       Push PREV PAGE
250       213       Push NEXT PAGE
250       214       Push EXEC

READ COMMAND LIST
Reading data from AeroSystems is identical to reading data from any other FSUIPC offset. For aeroSystems software additional data is available for the MCP LED status and MCP altitude.
Simply read these below to get AeroSystems data.
Address          Value             Description
(hex)
MCP
7374 hex      word (2 bytes)          MCP altitude divided by 100. eg. 37500 feet is 375
7376 hex      word (2 bytes)          LED status for the MCP is contained in 16-bits with
                                                                                                              each bit representing a LED on or off.
mask values to test each bit are as follow:
mask 0001    FD left
mask 0002    FD right
mask 0004    AT ARM
mask 0008    N1
mask 0010    SPEED
mask 0020    VNAV
mask 0040    LVL CHG
mask 0080    HDG
mask 0100    LNAV
mask 0200    VOR LOC
mask 0400    APP
mask 0800    ALT HOLD
mask 1000    VS
mask 2000    CMD A
mask 4000    VS mode active (use to blank your VS display when set to 0)
mask 8000    C/O 0=IAS mode, 1=MACH mode

7378 Hex       word (2 bytes)
mask 0001    CMD B
mask 0002    CDU EXEC LED
mask 0004    CDU MSG LED
Avatar de l’utilisateur
jacquesvde
 
Messages: 1226
Inscription: 20/04/09
Localisation: Courcelles Belgique

Re: Script Sioc via FSIUPC pour aeroSystem737, MCP, EFIS, CD

Messagede stevelep » Lun 4 Jan 2016 01:32

1. Avant d'envoyer une commande, vous devez d'abord vous assurer que l'adresse 7370 hex a une valeur de 0. ? comment mettre cette adresse a 0.

Il ne faut pas la mettre à zéro, c'est le programme qui le fait, il faut tester si elle est à zéro avant d'envoyer
une commande.


2. Var 0001, Link FSUIPC_IN, Offset $7370, Length 2
>> Length doit avoir quelle valeur en sachant que l’offset est d’un octet ?


C'est écrit dans la description:

Address description length
7370 command length 1
7371 value length 2


En résumé ça se passe comme ça:

Imaginons que tu codes le push-button "APP" du MCP c'est la commande 19
selon l'aide (19 none Push APP), il n'y a pas de valeur à envoyer au $7371.
juste une commande 19 à l'offset $7370

Tu dois checker si ton bouton est enfoncé (=1) et si l'offset $7370 = 0
Ensuite tu envoies 19 au même offset.

Var 0001, name sw_app, Link IOCARD_SW, Input 56
{
C0 = &sw_app = 1
C1 = &commande = 0
IF C0 AND C1
{
&commande = 19
}
}

Var 0002,name commande, Link FSUIPC_INOUT, Offset $7370, Length 1
Var 0003,name valeur, Link FSUIPC_INOUT, Offset $7371, Length 2


Voila un exemple
Pour tous les autres boutons poussoirs, c'est du copié-collé, tu changes les noms
les n° de commande et celui de l'entrée du switch (en rouge)


BOB
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2075
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Re: Script Sioc via FSIUPC pour aeroSystem737, MCP, EFIS, CD

Messagede jacquesvde » Lun 4 Jan 2016 03:35

merci affiche BOB, grandsoleil

Très bien j’ai compris, nous feront des heureux car jusqu’à présent nous n’avons pas de script pour le MCP d’open cockpit fonctionnant avec aeroSystem737 et Sioc FSUIPC, remarque qu’il y a des fonctions qui travaille avec le script Sioc FSUIPC pour FSX et convient parfaitement pour aeroSystem737 donc tout le script ne dois pas être réécrit pour aeroSystem737.

Et bien air cockpit sera le seul qui apportera une solution pour aeroSystem737. chouettedoights
Mes amitiés,
A bientôt.
Jacques cligneoeil
Avatar de l’utilisateur
jacquesvde
 
Messages: 1226
Inscription: 20/04/09
Localisation: Courcelles Belgique

Re: Script Sioc via FSIUPC pour aeroSystem737, MCP, EFIS, CD

Messagede fab » Lun 4 Jan 2016 08:18

Merci Bob !
Au passage, je viens de réaliser l'utilité des variables C0, C1, C2 ! Contrairement aux variables L0, L1 je crois quelles ne mémorisent que des résultats de comparaison (booléen)

Explique peut être la syntaxe C1 = &var1 = &var2 ....

Fabien
Avatar de l’utilisateur
fab
 
Messages: 4414
Inscription: 26/12/12
Localisation: Roubaix

Re: Script Sioc via FSIUPC pour aeroSystem737, MCP, EFIS, CD

Messagede mameloose » Lun 4 Jan 2016 12:50

fab a écrit:Merci Bob !
Au passage, je viens de réaliser l'utilité des variables C0, C1, C2 ! Contrairement aux variables L0, L1 je crois quelles ne mémorisent que des résultats de comparaison (booléen)

Explique peut être la syntaxe C1 = &var1 = &var2 ....

Fabien


exactement pareil lolaffiche
je n'avais jamais trop compris l'utilité des C0
merci BOB
Avatar de l’utilisateur
mameloose
 
Messages: 1271
Inscription: 20/04/09
Localisation: evreux

Re: Script Sioc via FSIUPC pour aeroSystem737, MCP, EFIS, CD

Messagede stevelep » Lun 4 Jan 2016 14:12

Les C0,C1,C2 sont des variables interne logiques boléenes, on peux les utiliser pour
faciliter l'écriture de code SIOC avec plusieurs conditions à tester


Var 0001, name sw_app, Link IOCARD_SW, Input 56
{
IF &sw_app = 1
{
IF &commande = 0
{
&commande = 19
}
}
}

S'écrit comme ça:

Var 0001, name sw_app, Link IOCARD_SW, Input 56
{
C0 = &sw_app = 1
C1 = &commande = 0
IF C0 AND C1
{
&commande = 19
}

On peux aussi mettre OR etc ...

Si on a plus que 2 conditions, il faut jouer avec les C0,C1,C2:

Var 0001, name sw_app, Link IOCARD_SW, Input 56
{
C0 = &sw_app = 1
C1 = &commande = 0
C2 = C0 AND C1
C0 = &fs_temp = 12
C2 = C0 AND C2
C0 = &sw_23 = 0
C2 = C0 AND C2

IF C2
{
&commande = 19
}

le C2 "additione" les conditions C0 suivantes, on peux en mettre autant qu'on veux
IF C2 sous-entend si C2 = vrai, on peux aussi mettre IF NOT C2

Voila

BOB

}
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2075
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Re: Script Sioc via FSIUPC pour aeroSystem737, MCP, EFIS, CD

Messagede fab » Lun 4 Jan 2016 14:24

Impec, merci Bob !

C'est vrai que j'utilise plusieurs "if".
J'y penserai maintenant !

Fabien
Avatar de l’utilisateur
fab
 
Messages: 4414
Inscription: 26/12/12
Localisation: Roubaix

Re: Script Sioc via FSIUPC pour aeroSystem737, MCP, EFIS, CD

Messagede mameloose » Lun 4 Jan 2016 15:45

fab a écrit:Impec, merci Bob !

C'est vrai que j'utilise plusieurs "if".
J'y penserai maintenant !

Fabien


pareillement on en apprend tout les jours ....
Avatar de l’utilisateur
mameloose
 
Messages: 1271
Inscription: 20/04/09
Localisation: evreux

Re: Script Sioc via FSIUPC pour aeroSystem737, MCP, EFIS, CD

Messagede jacquesvde » Mar 5 Jan 2016 02:00

Bonjour,
Moi aussi BOB grandsoleil j’aurais commis la même erreur que mes amis, programmer avec des conditions IF etc.
Tu nous as appris une nouvelle façon de programmer FSUIPC via SIOC. merci affiche
C’est tellement simple que ça parais compliquer.
Bon pour ne pas nous griller les neurones, ne pas se demander le pourquoi du comment c’est ligne de code fonctionne. ecroulerire ecroulerire
BOB a faits avec son code un comparateur de Bit. C’est logique puisque qu’il a construit un opérateur Logique AND. Comme dans la programmation en assembleur. C’est du binaire.
L’opérateur AND, Si C0=1 et C1=1 le bit de sortie=1 sinon le bit=0
L’opérateur OR, Si C0=0 et C1=0 le bit de sortie=0 sinon le bit=1
Justement vous n’avez rien à faire que de s’avoir comment sont l'etat entrée et sortie des bits avec un opérateur définit par vous.
Pour mieux vous informer regarder sur internet la table de vérité des opérateurs logiques.
Bon je sors car il faudrait plus de 50 pages pour les cours des opérateurs logique. ecroulerire

PS : pour l’instant mon Simulateur est en partie démonter, je vais faire comme David, un PC pour P3D et la vue principal et un PC pour mettre des gauge déportée d’Air Manager. chouettedoights

Jacques. cligneoeil
Avatar de l’utilisateur
jacquesvde
 
Messages: 1226
Inscription: 20/04/09
Localisation: Courcelles Belgique

Re: Script Sioc via FSIUPC pour aeroSystem737, MCP, EFIS, CD

Messagede jacquesvde » Mar 12 Avr 2016 18:33

Bonjour,

A L'aide.

J'aimerai comprendre ce code et comment l’écrire pour tester les Led du MCP, mask quesque c'est ? yeuxhaut

un petit exemple me serait utile etonneyeux

Code: Tout sélectionner
READ COMMAND LIST
Reading data from AeroSystems is identical to reading data from any other FSUIPC offset. For aeroSystems software additional data is available for the MCP LED status and MCP altitude.
Simply read these below to get AeroSystems data.
Address          Value             Description
(hex)
MCP
7374 hex      word (2 bytes)          MCP altitude divided by 100. eg. 37500 feet is 375
7376 hex      word (2 bytes)          LED status for the MCP is contained in 16-bits with
                                                                                                              each bit representing a LED on or off.
mask values to test each bit are as follow:
mask 0001    FD left
mask 0002    FD right
mask 0004    AT ARM
mask 0008    N1
mask 0010    SPEED
mask 0020    VNAV
mask 0040    LVL CHG
mask 0080    HDG
mask 0100    LNAV
mask 0200    VOR LOC
mask 0400    APP
mask 0800    ALT HOLD
mask 1000    VS
mask 2000    CMD A
mask 4000    VS mode active (use to blank your VS display when set to 0)
mask 8000    C/O 0=IAS mode, 1=MACH mode

7378 Hex       word (2 bytes)
mask 0001    CMD B
mask 0002    CDU EXEC LED
mask 0004    CDU MSG LED


merci affiche Jacques rigolus
Avatar de l’utilisateur
jacquesvde
 
Messages: 1226
Inscription: 20/04/09
Localisation: Courcelles Belgique

Suivante

Retourner vers Programmation Sioc





Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 5 invités