Problème code pour le réglage de l'altitude et VS du PA

Questions de programmation / Offset FSUIPC et IOCP

Re: Problème code pour le réglage de l'altitude et VS du PA

Messagede stevelep » Mar 6 Nov 2012 00:07

Essaie le code du MCP d'OC pour FSX

Tu peux l'utiliser en entier, tu changes juste le n° d'entrée de ton encodeur variable Var 0310

BOB

Code: Tout sélectionner
// *****************************************************************************
// * Config_SIOC ver 3.5   -     By Manolo Vélez    -    www.opencockpits.com
// *****************************************************************************
// * FileName : sioc mcp fsx.txt
// * Date : 08/09/2009



Var 0000, Value 0     // Inicializa / Inicialization
{
  &CONTADOR = 0   
  &CHECK = TIMER 999 ,0 ,25
  &CMD = 1   
  &D_COURSE1 = 360   
  &D_COURSE2 = 360   
  &D_HDG = 360   
  &D_ALT = 10000   
  &D_VS = -999999   
  &T_IAS = 100   
  &AP_IAS = 1   
  &AP_IAS = DELAY 0 ,10
}

Var 0001, name AP_MASTER_SW, Link FSUIPC_INOUT, Offset $07BC, Length 4
{
  IF &CMD = 1
  {
    IF &AP_MASTER_SW = 1
    {
      &O_CMDA = 1   
      &O_CMDB = 0   
    }
    ELSE
    {
      &O_CMDA = 0   
      &O_CMDB = 0   
    }
  }
  ELSE
  {
    IF &AP_MASTER_SW = 1
    {
      &O_CMDA = 0   
      &O_CMDB = 1   
    }
    ELSE
    {
      &O_CMDA = 0   
      &O_CMDB = 0   
    }
  }
}

Var 0002, Link FSUIPC_INOUT, Offset $07C0, Length 4     // AP_LVL

Var 0003, Link FSUIPC_INOUT, Offset $07C4, Length 4     // AP_NAV1
{
  IF V0003 = 1
  {
    &O_LNAV = 1   
  }
  ELSE
  {
    &O_LNAV = 0   
  }
}

Var 0004, Link FSUIPC_INOUT, Offset $07C8, Length 4     // AP_HDG_SEL
{
  IF V0004 = 1
  {
    &O_HDGSEL = 1   
  }
  ELSE
  {
    &O_HDGSEL = 0   
  }
}

Var 0005, name APD_HDG, Link FSUIPC_INOUT, Offset $07CC, Length 2     // APD_HDG

Var 0006, name AP_ALT, Link FSUIPC_INOUT, Offset $07D0, Length 4     // AP_ALT
{
  IF &AP_ALT = 1
  {
    &O_ALTHLD = 1   
  }
  ELSE
  {
    &O_ALTHLD = 0   
  }
}

Var 0007, name AP_IAS, Link FSUIPC_INOUT, Offset $07DC, Length 4     // AP_IAS
{
  IF &AP_IAS = 1
  {
    &SPEED = 1   
    &O_SPEED = 1   
    &F_IAS = &T_IAS   
  }
  ELSE
  {
    IF &AP_MACH = 0
    {
      &O_SPEED = 0   
    }
  }
}

Var 0008, name APD_IAS, Link FSUIPC_INOUT, Offset $07E2, Length 2     // D_IAS

Var 0009, name APD_ALT, Link FSUIPC_INOUT, Offset $07D4, Length 4     // APD_ALT

Var 0011, name AP_MACH, Link FSUIPC_INOUT, Offset $07E4, Length 4     // AP_MACH
{
  IF &AP_MACH = 1
  {
    &SPEED = 2   
    &O_SPEED = 1   
  }
  ELSE
  {
    IF &AP_IAS = 0
    {
      &O_SPEED = 0   
    }
  }
}

Var 0012, name APD_MACH, Link FSUIPC_INOUT, Offset $07E8, Length 4     // APD_MACH

Var 0013, Link FSUIPC_INOUT, Offset $3210, Length 2     // LOCALV_IAS/M

Var 0014, name APD_VS, Link FSUIPC_INOUT, Offset $07F2, Length 2, Type 1     // D_V/S

Var 0015, Link FSUIPC_INOUT, Offset $0810, Length 4     // AP_AT
{
  IF V0015 = 1
  {
    &O_AT = 1   
  }
  ELSE
  {
    &O_AT = 0   
  }
}

Var 0016, Link FSUIPC_INOUT, Offset $2EE0, Length 4     // AP_FD

Var 0017, Link FSUIPC_INOUT, Offset $07C4, Length 4     // AP_NAV

Var 0018, Link FSUIPC_INOUT, Offset $0800, Length 4     // AP_APP
{
  IF V0018 = 1
  {
    &O_APP = 1   
  }
  ELSE
  {
    &O_APP = 0   
  }
}

Var 0019, Link FSUIPC_INOUT, Offset $0804, Length 4     // AP_BC

Var 0020, Link FSUIPC_INOUT, Offset $0808, Length 4     // AP_YD

Var 0021, name APD_COURSE1, Link FSUIPC_INOUT, Offset $0C4E, Length 2     // APD_COURSE1

Var 0022, name APD_COURSE2, Link FSUIPC_INOUT, Offset $0C5E, Length 2     // APD_COURSE2

Var 0023, name FS_IAS, Link FSUIPC_IN, Offset $02BC, Length 4     // IAS FS

Var 0024, name FS_MACH, Link FSUIPC_IN, Offset $11C6, Length 2     // IAS FS

Var 0025, Link FSUIPC_INOUT, Offset $07FC, Length 4     // AP_APP2

Var 0026, name AP_N1, Link FSUIPC_INOUT, Offset $080C, Length 4

Var 0050, name CMD
{
  IF &CMD = 1
  {
    &O_CMDA = TESTBIT &AP_MASTER_SW ,0     // LED_AP_SW
  }
  ELSE
  {
    &O_CMDB = TESTBIT &AP_MASTER_SW ,0     // LED_AP_SW
  }
}

Var 0051, name SPEED
{
  IF &SPEED <> 2
  {
    &O_DECIMAL = 0   
    &F_IAS = &T_IAS   
  }
  ELSE
  {
    &O_DECIMAL = 1   
    &F_IAS = &T_MACH   
  }
}

Var 0052, name T_IAS

Var 0053, name T_MACH

Var 0054, name F_IAS
{
  IF &SPEED <> 2
  {
    &O_DECIMAL = 0   
    &D_IAS = &F_IAS   
    &APD_IAS = DELAY &F_IAS ,10
  }
  ELSE
  {
    &O_DECIMAL = 1   
    &D_IAS = &F_IAS   
    L0 = &F_IAS * 655.36
    &APD_MACH = DELAY L0 ,10
  }
}

Var 0056, name CHECK, Link SUBRUTINE
{
  &CONTADOR = &CONTADOR + 1
  IF &CONTADOR > 10000
  {
    &CONTADOR = 1000   
  }
  ELSE
  {
    IF &CONTADOR > 4
    {
      IF &APD_VS <> &D_VS
      {
        &D_VS = &APD_VS   
      }
    }
  }
}

Var 0057, name CONTADOR

Var 0100, name D_COURSE1, Link IOCARD_DISPLAY, Digit 0, Numbers 3
{
  &APD_COURSE1 = &D_COURSE1   
}

Var 0102, name D_IAS, Link IOCARD_DISPLAY, Digit 3, Numbers 3

Var 0104, name D_HDG, Link IOCARD_DISPLAY, Digit 6, Numbers 3
{
  L1 = &D_HDG * 182.04444
  L0 = L1 + 1
  &APD_HDG = L0   
}

Var 0106, name D_ALT, Link IOCARD_DISPLAY, Digit 9, Numbers 5
{
  L0 = &D_ALT * 19975.37
  &APD_ALT = L0   
}

Var 0108, name D_VS, Link IOCARD_DISPLAY, Digit 14, Numbers 5

Var 0110, name D_COURSE2, Link IOCARD_DISPLAY, Digit 19, Numbers 3
{
  &APD_COURSE2 = &D_COURSE2   
}

Var 0200, name O_DECIMAL, Link IOCARD_OUT, Output 20

Var 0202, name O_N1, Link IOCARD_OUT, Output 21

Var 0204, name O_AT, Link IOCARD_OUT, Output 22

Var 0206, name O_SPEED, Link IOCARD_OUT, Output 23

Var 0208, name O_LVLCHG, Link IOCARD_OUT, Output 24

Var 0210, name O_VNAV, Link IOCARD_OUT, Output 25

Var 0212, name O_HDGSEL, Link IOCARD_OUT, Output 26

Var 0214, name O_APP, Link IOCARD_OUT, Output 27

Var 0216, name O_VORLOC, Link IOCARD_OUT, Output 28

Var 0218, name O_LNAV, Link IOCARD_OUT, Output 29

Var 0220, name O_ALTHLD, Link IOCARD_OUT, Output 30

Var 0222, name O_VS, Link IOCARD_OUT, Output 31

Var 0224, name O_CWSA, Link IOCARD_OUT, Output 32

Var 0226, name O_CMDA, Link IOCARD_OUT, Output 33

Var 0228, name O_CWSB, Link IOCARD_OUT, Output 34

Var 0230, name O_CMDB, Link IOCARD_OUT, Output 35

Var 0300, name E_IAS, Link IOCARD_ENCODER, Input 0, Aceleration 4, Type 2
{
  IF &SPEED <> 2
  {
    L0 = &E_IAS * -1
    &T_IAS = LIMIT 0 ,500 ,L0
    &F_IAS = &T_IAS   
  }
  ELSE
  {
    L0 = &E_IAS * -1
    &T_MACH = LIMIT 0 ,99 ,L0
    &F_IAS = &T_MACH   
  }
}

Var 0302, name E_ALT, Link IOCARD_ENCODER, Input 2, Aceleration 4, Type 2
{
  L0 = &E_ALT * -100
  &D_ALT = LIMIT 0 ,50000 ,L0
}

Var 0304, name E_COURSE1, Link IOCARD_ENCODER, Input 4, Aceleration 4, Type 2
{
  L0 = &E_COURSE1 * -1
  &D_COURSE1 = ROTATE 1 ,360 ,L0
}

Var 0306, name E_HDG, Link IOCARD_ENCODER, Input 6, Aceleration 4, Type 2
{
  L0 = &E_HDG * -1
  &D_HDG = ROTATE 1 ,360 ,L0
}

Var 0308, name E_COURSE2, Link IOCARD_ENCODER, Input 9, Aceleration 4, Type 2
{
  L0 = &E_COURSE2 * -1
  &D_COURSE2 = ROTATE 1 ,360 ,L0
}

Var 0310, name E_VS, Link IOCARD_ENCODER, Input 11, Aceleration 4, Type 2
{
  L0 = &E_VS * -100
  &D_VS = LIMIT -9000 ,9000 ,L0
  &CONTADOR = 0   
  &APD_VS = &D_VS   
}

Var 0400, name I_CO, Link IOCARD_SW, Input 13, Type P
{
  IF &O_SPEED = 1
  {
    IF &SPEED <> 0
    {
      IF &SPEED = 1
      {
        L0 = &FS_MACH / 204.8
        &T_MACH = L0   
        &AP_MACH = 1   
      }
      ELSE
      {
        L0 = &FS_IAS / 128
        &T_IAS = L0   
        &AP_IAS = 1   
      }
    }
  }
}

Var 0402, name I_FD2, Link IOCARD_SW, Input 14

Var 0404, name I_DISENGAGE, Link IOCARD_SW, Input 15
{
  IF &I_DISENGAGE = 1
  {
    &AP_MASTER_SW = 0   
  }
}

Var 0406, name I_FD1, Link IOCARD_SW, Input 16
{
  IF &I_FD1 = 1
  {
    V0016 = 1   
  }
  ELSE
  {
    V0016 = 0   
  }
}

Var 0408, name I_CWSB, Link IOCARD_SW, Input 18

Var 0410, name I_CMDB, Link IOCARD_SW, Input 19
{
  IF &I_CMDB = 1
  {
    &CMD = 2   
    IF &AP_MASTER_SW = 1
    {
      &AP_MASTER_SW = 0   
    }
    ELSE
    {
      &AP_MASTER_SW = 1   
    }
  }
}

Var 0412, name I_CWSA, Link IOCARD_SW, Input 20

Var 0414, name I_CMDA, Link IOCARD_SW, Input 21
{
  IF &I_DISENGAGE = 0
  {
    IF &I_CMDA = 1
    {
      &CMD = 1   
      IF &AP_MASTER_SW = 1
      {
        &AP_MASTER_SW = 0   
      }
      ELSE
      {
        &AP_MASTER_SW = 1   
      }
    }
  }
}

Var 0416, name I_VS, Link IOCARD_SW, Input 22

Var 0418, name I_ALTHLD, Link IOCARD_SW, Input 23
{
  IF &I_ALTHLD = 1
  {
    IF &AP_ALT <> 1
    {
      &AP_ALT = 1   
    }
    ELSE
    {
      &AP_ALT = 0   
    }
  }
}

Var 0420, name I_APPB, Link IOCARD_SW, Input 24
{
  IF &I_APPB = 1
  {
    IF V0018 <> 1
    {
      V0018 = 1   
      V0025 = 1   
    }
    ELSE
    {
      V0018 = 0   
      V0025 = 0   
    }
  }
}

Var 0422, name I_VORLOC, Link IOCARD_SW, Input 25
{
  IF &I_VORLOC = 1
  {
    IF V0017 <> 1
    {
      V0017 = 1   
    }
    ELSE
    {
      V0017 = 0   
    }
  }
}

Var 0424, name I_LNAV, Link IOCARD_SW, Input 27

Var 0426, name I_HDGSEL, Link IOCARD_SW, Input 28
{
  IF &I_HDGSEL = 1
  {
    IF V0004 <> 1
    {
      V0004 = 1   
    }
    ELSE
    {
      V0004 = 0   
    }
  }
}

Var 0428, name I_LVLCHG, Link IOCARD_SW, Input 29

Var 0430, name I_VNAV, Link IOCARD_SW, Input 30

Var 0432, name I_SPEED, Link IOCARD_SW, Input 31
{
  IF &I_SPEED = 1
  {
    IF &SPEED = 0
    {
      &AP_IAS = 1   
      &O_N1 = 0   
    }
    ELSE
    {
      &AP_IAS = 0   
      &AP_MACH = 0   
      &SPEED = 0   
    }
  }
}

Var 0434, name I_N1, Link IOCARD_SW, Input 32, Type P
{
  IF &I_N1 = 1
  {
    &AP_N1 = 1   
    &O_N1 = 1   
    &O_SPEED = 0   
  }
  ELSE
  {
    &AP_N1 = 0   
    &O_N1 = 0   
  }
}

Var 0436, name I_AT, Link IOCARD_SW, Input 33
{
  IF &I_AT = 1
  {
    V0015 = 1   
  }
  ELSE
  {
    V0015 = 0   
  }
}
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2075
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Re: Problème code pour le réglage de l'altitude et VS du PA

Messagede stevelep » Mar 6 Nov 2012 00:11

Tu as bien mis TYPE 1 ?

Var 3313, name fs_vsval, Link FSUIPC_INOUT, Offset $07f2, Length 2, Type 1, Value 0

Tu peux copier ton code ?
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2075
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Re: Problème code pour le réglage de l'altitude et VS du PA

Messagede FiX » Mar 6 Nov 2012 00:15

stevelep a écrit:Tu as bien mis TYPE 1 ?

Var 3313, name fs_vsval, Link FSUIPC_INOUT, Offset $07f2, Length 2, Type 1, Value 0

Tu peux copier ton code ?



Raaaaah, bingo, j'avais pas vu ta modif pour le type 1, ça fonctionne!!
Merci!

Bon, reste plus qu'à intégrer ça à l'appuis sur le switch de l'encodeur et vérifier que ça ne fout pas le chantier avec l'altitude.
i7 2600k/P8P67pro/16Go PC3 17000/RX 580/SSD 250 Go et 120Go/W10x64
https://www.facebook.com/cessna150.sim
Avatar de l’utilisateur
FiX
 
Messages: 4664
Inscription: 8/01/10
Localisation: Reims/Maubeuge

Re: Problème code pour le réglage de l'altitude et VS du PA

Messagede FiX » Mar 6 Nov 2012 00:37

Du coup, j'ai quand même essayé un truc: reprendre le premier code que j'avais fait pour la VS avant que tu n'expliques que c'est un peu particulier pour la VS.
Et j'ai juste rajouté le "type1" dans mon offset $07F2
Et bien ça fonctionne!!! etonneyeux
Et on est très loin du truc hyper compliqué d'OC... Alors je me demande bien à quoi ça sert leur usine à gaz:

Moi j'ai ça:

Code: Tout sélectionner
Var 0514, name AP_ALT, Link FSUIPC_INOUT, Offset $07D4, Length 4     // Altitude pilote auto en mètres x 65536

Var 0515, name AP_VS, Link FSUIPC_INOUT, Offset $07F2, Length 2, Type 1, Value 0     // VS du pilote auto en ft/min

Var 0516, name cts_ap, Link IOCARD_ENCODER, Input 41, Aceleration 1, Type 2     // encodeur du pilote auto
{
  IF &sw_ap_alt = 1
  {
    L0 = &cts_ap * -100
    &AP_VS = LIMIT -3000 ,3000 ,L0
  }
  ELSE
  {
    L0 = &cts_ap * -30.48
    &calc_ap_alt = LIMIT 0 ,6400 ,L0
  }
}

Var 0517, name calc_ap_alt     // conversion de l'altitude du PA en feet
{
  L0 = &calc_ap_alt * 65536     // en mètres
  &AP_ALT = L0   
}

Var 0518, name sw_ap_alt, Link IOCARD_SW, Input 36     // switch de l'encodeur du pilote auto



La sélection de la VS fonctionne très bien et elle se fait en appuyant sur le switch tout en tournant l'encodeur (commun au réglage de l'altitude du PA).
Mais j'ai tout de même toujours ce problème d'interaction (que je ne comprends vraiment, mais alors vraiment pas du tout!) avec le réglage de l'altitude.
Si je règle ma VS dans une valeur négative, le fait de modifier l'altitude me fait rebasculer ma VS dans les positifs. murrouge

Es-ce que l'usine à gaz du code d'OC pourrait éviter ça?

(Il faudrait que je test, mais pour intégrer ce code au switch de l'encodeur, je vais m'amuser...)
i7 2600k/P8P67pro/16Go PC3 17000/RX 580/SSD 250 Go et 120Go/W10x64
https://www.facebook.com/cessna150.sim
Avatar de l’utilisateur
FiX
 
Messages: 4664
Inscription: 8/01/10
Localisation: Reims/Maubeuge

Re: Problème code pour le réglage de l'altitude et VS du PA

Messagede stevelep » Mar 6 Nov 2012 01:02

J'ai pris le code d'OC, j'ai jamais essayé de faire le mien ...

Si je règle ma VS dans une valeur négative, le fait de modifier l'altitude me fait rebasculer ma VS dans les positifs.


Si tu mets une ALT plus haute l'avion doit monter donc c'est normal que FS change tout seul la VS ....
Essaie de le faire directement dans FS

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

Re: Problème code pour le réglage de l'altitude et VS du PA

Messagede FiX » Mar 6 Nov 2012 12:49

stevelep a écrit:J'ai pris le code d'OC, j'ai jamais essayé de faire le mien ...

Si je règle ma VS dans une valeur négative, le fait de modifier l'altitude me fait rebasculer ma VS dans les positifs.


Si tu mets une ALT plus haute l'avion doit monter donc c'est normal que FS change tout seul la VS ....
Essaie de le faire directement dans FS

BOB


Aaaaah, alors ça, je n'avais jamais remarqué! Effectivement, c'est bien ça, c'est dans FS que ça se joue.

Donc c'est bon, une bonne partie de terminée!
Et du coup,finalement la VS se code exactement comme les autres, juste avec $07F2 et rotate (ou limit), pas besoin du code compliqué du MPC d'Opencockpit.

Allez hop, aux radios maintenant! blemeblanc
i7 2600k/P8P67pro/16Go PC3 17000/RX 580/SSD 250 Go et 120Go/W10x64
https://www.facebook.com/cessna150.sim
Avatar de l’utilisateur
FiX
 
Messages: 4664
Inscription: 8/01/10
Localisation: Reims/Maubeuge

Précédente

Retourner vers Programmation Sioc





Qui est en ligne

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