Vous n'êtes pas identifié(e).
bonjour a tous !
voila ma question est simple , je maitrise partiellement la creation de gauges ou de panel pour un avion en XML .
j'utilise quelques Lvar pour des fonctions qui n'existe pas dans flight de base mais ca devient vite le bazar ...
ducoup a la facon de pmdg par exemple j'aimerai savoir comment fabriquer mon avion mais en l'interfacant avec fsuipc !
comment faire ca ? en xml c'est possible ?
merci d'avance ...
greg
http://www.youtube.com/watch?v=2chwYMN6ZME
Hors ligne
Pourrais-tu donner plus de précisions au sujet de ce que tu appelles "le bazar" avec les Lvars ?
Si c'est par le nombre que tu utilises et que tu te sens perdu au bout d'un moment, il faut, en programmation, avoir toujours de la rigueur; Les règles de base étant en premier lieu de nommer tes Lvars avec des noms explicite ; même si c'est plus long à écrire, tu t'y retrouveras mieux dans ton code.
et en second lieu, créer un fichier TXT, en faisant la liste de chacune de tes Lvars, en inscrivant à coté leurs fonctions précises; Bref, te créer un index en quelque sorte. Tu peux aussi écrire cet index au début de ta gauge XML, sous la forme d'une remarque, entre les tags : <!-- Ma remarque -->
Et surtout utiliser Notepad++ qui est d'une grande aide avec sa coloration syntaxique.
Si tu as besoin d'aide en XML, n'hésite pas.
Dernière modification par Fdd_fr (01-09-2015 16:33:33)
Base de donnée SID/STAR FreeNav DB Group
Mon site photo
Win XP32 tweaké - I7 2700K@4,7Ghz - 4Go RAM - 3 SSD - 2 Velociraptors - 5 DD classiques - Nvidia 560 GTI - Ecran 26" 1920x1200 - FSX+ASE2012+pas mal de FTX et d'aéroports.
En ligne
Ah c'est sympa ça j'aurai probablement quelques questions à te poser sur le XML. Sinon oui j'utilise notepad ++ et je m'organise pas trop mal mais j'aimerai en faite intégrer mon propre système avec fsuipc
Exemple avec la gauge de mon apu sur l'aiguille de l egt. En vrai il y a un pique de montée au démarrage qui se stabilise une fois lapu à 100 % comment faire ça ? Fsx ne le simule pas je dois donc inclure sans arrêt des lvars qui viennent tricher sur le programme de base pour rendre l'avion plus réaliste.
Et j'aimerai inclure fsuipc pour pouvoir dans le futur interfacer cet avion avec sioc pour les constructeurs de cockpit par exemple...
http://www.youtube.com/watch?v=2chwYMN6ZME
Hors ligne
Je vois ce que tu veux dire. Je rencontre le même problème avec la valeur EPR fournit par FSX qui est parfois totalement fantaisiste.
PArfois, il faaut se creuser le ciboulot, pour "inventer" une formule mathématique qui va permettre de correspondre à une courbe de fonctionnement réel de l'avion, lié à une variable.
Par exemple, pour calculer la valeur N1 en mode ECON d'un Airbus A320 selon le poids, j'ai du créer cette formule, de manière empirique, en tatonnant, et en vérifiant par rapport aux données constructeur si cela correspondait se raprochait des vrai valeur:
(A:Total Weight,kilograms) 10000 / 1.4 * 73.4 + (L:CostIndexValue,enum) 100 / + (>L:ClimbThrustValue,number)
Je diviese le poids actuel de l'avion par 10000, puis je le multiple par 1.4, et enfin j'ajoute 73.4, auquel j'ajoute le 100eme de la valeur du cost index pour avoir ma valeur N1 en fonction de la masse et du cost index.
Je ne connais pas du tout SIOC. Mais je pense que FSUIPC ne peut pas remplacer une programmation XML. FSUIPC n'est pour moi qu'une interface entre le simu et des périphériques. Il ne peut pas simuler le fonctionnement d'un organe quelconque...ou alors je n'ai pas bien compris toutes les fonctions de FSUIPC. (ce qui est tout à fait possible)
Dernière modification par Fdd_fr (02-09-2015 16:34:20)
Base de donnée SID/STAR FreeNav DB Group
Mon site photo
Win XP32 tweaké - I7 2700K@4,7Ghz - 4Go RAM - 3 SSD - 2 Velociraptors - 5 DD classiques - Nvidia 560 GTI - Ecran 26" 1920x1200 - FSX+ASE2012+pas mal de FTX et d'aéroports.
En ligne
Yes pourrai tu me montrer ton code XML dans ton exemple que j'essaye de comprendre ça serai sympa. et aussi est ce que tu maîtrise les tempo ? Tu style j'appuie sur un bouton et 2 secondes après une Led témoin s'allume as tu ça en code XML ??
http://www.youtube.com/watch?v=2chwYMN6ZME
Hors ligne
Bien sur,
J'utilise ce calcul lorsque l'utilisateur click sur le bouton "ECON CLB" afin d'ordonner au FMC la puissance N1 ECON lors de la montée
Je te fait plutot une capture d'écran pour avoir la couleur pour une meilleur lisibilité du code :
ensuite, dans la gauge qui controle la montée, voici le code qui controle la poussée N1 et detecte si l'utilisateur met les manettes de gaz sur le position Flex/MCT ou TOGA :
(L:thr1pos,enum) 2 <
(L:thr2pos,enum) 2 < and if{
(G:Var8) 1 == if{ 1 (>L:PFD_frame1,bool) 0 (>G:Var8) }
(L:ClimbThrustValue,number) (>K:AP_N1_REF_SET)
1 (>K:AP_N1_HOLD)
}
els{
1 (>G:Var8)
0 (>L:PFD_frame1,bool)
(A:AUTOTHROTTLE ACTIVE,bool) 1 == if{ 0 (>K:AUTO_THROTTLE_ARM) 1 (>K:AUTO_THROTTLE_ARM) }
(P:Absolute time,seconds) 1 % 0.1 1 * > !
(L:thr1pos,enum) 2 == and
(L:thr2pos,enum) 2 == and if{ 15200 (>K:AXIS_THROTTLE1_SET) 15200 (>K:AXIS_THROTTLE2_SET) }
(P:Absolute time,seconds) 1 % 0.1 1 * > !
(L:thr1pos,enum) 3 == and
(L:thr2pos,enum) 3 == and if{ 1 (>K:THROTTLE1_FULL) 1 (>K:THROTTLE2_FULL) }
}
1 (>K:AP_ATT_HOLD_ON)
L:thr1pos,enum et L:thr2pos... sont les deux variables qui stock les positions précises réelles des manettes (moteur gauche et droite)
J'injecte la valeur de (L:ClimbThrustValue,number) en parametre de poussée N1 et je bascule en mode A/THR N1.
Ce mode A/THR à la particularité de laisser les manettes des gaz active, contrairement au mode SPEED ou MACH.
IL est donc complètement conforme au mode THR CLB d'Airbus.
Ensuite, je détecte si le pilote pousse les manette sur les positions Flex/MCT ou TOGA, en donnant dans ce cas l'odre d'appliquer la puissance correspondante au moteur.
POur finir, je bascule en mode "ATTITUDE", puisque c'est le FMC qui va controler en permanence l'angle de montée pour maintenir la vitesse, avec la poussée définie dans le FMC, et non pas une valeur de vitesse verticale entrée sur le FCU.
Pour les tempos, c'est très simple. Il y a 2 sortes de tempos qu'on utilise très souvent :
- 1) Les tempos qui compte un certain temps, avant de provoquer un évennement ou de l'annuler
- 2) les tempos qui provoque un évennement de manière cyclique ou faire clignoter un affichage.
Le code est légerement différent entre ces 2 tempos, mais elles utilisent toutes les 2 la variable (P:Absolute time,seconds) . La tempo cyclique utilise la fonction mathématique Modulo (noté "%" en XML)
Exemple n°1 : voici une tempo qui affiche un cadre blanc sur le FMA du PFD pendant 10 secondes, autour des inscriptions NAV ou HDG, quand le pilote change de mode (conformément à un vrai Airbus)
(L:PFD_frame3,bool) 1 == (L:tempo3_frame,number) 0 == and if{ (P:Absolute time,seconds) (>L:tempo3_frame,number) }
(P:Absolute time,seconds) (L:tempo3_frame,number) 10 + > if{ 0 (>L:PFD_frame3,bool) 0 (>L:tempo3_frame,number) }
Ensuite, pour le bloc XML qui affiche le rectangle :
<Element id="Rectangle mode NAV">
<FloatPosition>208,10</FloatPosition>
<Visibility>(L:PFD_frame3,bool) 1 ==</Visibility>
<Rectangle id="LNAV">
<Bright>True</Bright>
<LineColor>WHITE</LineColor>
<LineWidth>2</LineWidth>
<Width>80</Width>
<Height>28</Height>
</Rectangle>
</Element>
Exemple n°2, pour une tempo qui autorise l'exécution de code de manière cyclique ou qui permet de faire clignoter un affichage (texte ou graphique) :
Controle de l'angle de montée de l'avion par le FMC pour maintenir la vitesse avec une poussée constante, au-dessus de l'altitude de conjonction (ce n'est qu'une partie du code, car il y a plusieurs étages de temporisation suivant la déviation de vitesse : c'est ce qu'on appelle un PID en matière d'algorythme, pour Proportional Integral Derivator ou quelque chose comme cela), l'action étant de plus en plus forte plus on s'éloigne de la valeur cible) :
-25 0.15 (A:ACCELERATION BODY Z, feet per second squared) rng
(A:Airspeed Mach,mach) 100 * (L:Mach_Managed,number) 1 - < and
(A:Vertical Speed,feet per minute) 500 > and
(P:Absolute time,seconds) 1 % 0.05 1 * > ! and if{ 1 (>K:AP_PITCH_REF_INC_DN) }0.16 25 (A:ACCELERATION BODY Z, feet per second squared) rng
(A:Airspeed Mach,mach) 100 * (L:Mach_Managed,number) 1 + > and
(A:Vertical Speed,feet per minute) 2000 < and
(P:Absolute time,seconds) 1 % 0.05 1 * > ! and if{ 1 (>K:AP_PITCH_REF_INC_UP) }
J'ordonne une action sur la gouverne de profondeur pendant 1/20 de seconde, à chaque cycle de gauge (soit 18x par seconde) vers le haut ou vers le bas, si ue des conditions est vérifiée.
Pour faire clignoter le message "DECELERATE" sur le PFD, quand le TOD est atteint :
<Element id="Flashing DECELERATE">
<FloatPosition>160.000,66.000</FloatPosition>
<Visibility>(L:DescentPhase,enum) 1 == (P:Absolute time,seconds) 1 % 0.5 1 * > ! and (L:ClimbPhase,enum) 3 == and</Visibility>
<GaugeText id="FLASH step Level">
<Bright>True</Bright>
<FontColor>WHITE</FontColor>
<FontFace>Arial</FontFace>
<FontHeight>18</FontHeight>
<GaugeString>DECELERATE</GaugeString>
<HorizontalAlign>CENTER</HorizontalAlign>
<VerticalAlign>CENTER</VerticalAlign>
<Size>125,22</Size>
<Transparent>FALSE</Transparent>
</GaugeText>
</Element>
0.5 signifie que le message clignote toutes les 1/2 seconde
voilà , en espèrant t'avoir aider.
François
Dernière modification par Fdd_fr (03-09-2015 10:39:24)
Base de donnée SID/STAR FreeNav DB Group
Mon site photo
Win XP32 tweaké - I7 2700K@4,7Ghz - 4Go RAM - 3 SSD - 2 Velociraptors - 5 DD classiques - Nvidia 560 GTI - Ecran 26" 1920x1200 - FSX+ASE2012+pas mal de FTX et d'aéroports.
En ligne
Hors ligne
de rien
Base de donnée SID/STAR FreeNav DB Group
Mon site photo
Win XP32 tweaké - I7 2700K@4,7Ghz - 4Go RAM - 3 SSD - 2 Velociraptors - 5 DD classiques - Nvidia 560 GTI - Ecran 26" 1920x1200 - FSX+ASE2012+pas mal de FTX et d'aéroports.
En ligne
Bonjour
J'ai p3d est ce qu'il est possible d'importer des panel 2d pour integrer par exemple a un avion par défaut de p3d ?
Par exemple je souhaite avoir le panel 2d du crj700 sur lavion militaire par défaut de p3d je sais pas trop réaliste mais j'ai 5 écrans 3 pour la vue et 2 pour panel le crj700 as un panel clair.
Merci pour vos retours...
Intel Core i7-10700K , Asus ROG STRIX Z490-E GAMING , Corsair DDR 32GB, RTX 4070Ti , Samsung SSD 850 EVO 1TB + Samsung SSD 970 EVO 1TB SCSI / Corsair Hydro,
Hors ligne
Petite remarque afin de simplifier le texte:
ces lignes
(G:Var8) 1 == if{ 1 (>L:PFD_frame1,bool) 0 (>G:Var8) }
(A:AUTOTHROTTLE ACTIVE,bool) 1 == if{ 0 (>K:AUTO_THROTTLE_ARM) 1 (>K:AUTO_THROTTLE_ARM) }
peuvent s'écrirent plus simplement:
(G:Var8) if{ 1 (>L:PFD_frame1,bool) 0 (>G:Var8) }
(A:AUTOTHROTTLE ACTIVE,bool) if{ 0 (>K:AUTO_THROTTLE_ARM) 1 (>K:AUTO_THROTTLE_ARM)
car toute variable A , L ou G qui n'a que l'alternative d'indiquer une valeur oui(1) ou non(0) par sa valeur et qui participe a un if{ est considérée comme ayant la valeur oui (1) comme vraie si la valeur non (0) n'est pas indiquée comme vraie (0 == ).
A+=D=D
Dernière modification par RBLeDoC (25-09-2016 20:20:32)
Hors ligne
c'est tout à fait juste, mais perso, je préfère mettre le signe du test, car quand je recherche une erreur, je trouve cela beaucoup plus lisible quand je relie mon code à la recherche d'une erreur.
Et à ce sujet, je regrette que le signe ">" provoque des erreurs dans les tests (mais heureusement pas dans l'affectation des variables), car beaucoup plus lisible que >.
Dernière modification par Fdd_fr (26-09-2016 12:28:56)
Base de donnée SID/STAR FreeNav DB Group
Mon site photo
Win XP32 tweaké - I7 2700K@4,7Ghz - 4Go RAM - 3 SSD - 2 Velociraptors - 5 DD classiques - Nvidia 560 GTI - Ecran 26" 1920x1200 - FSX+ASE2012+pas mal de FTX et d'aéroports.
En ligne
Je m'attendais que tu répondes ainsi car c'est un choix qu'on peut prendre et comprendre . Ma remarque était surtout pour ceux qui débutent !
Je me méfie beaucoup de l'opérateur "vrai si plus grand que" désigné par le signe > car bien souvent il n'est pas pris en compte lorsque le texte du code est long ou compliqué ! donc perso je m'en tient a &grt; beaucoup moins pratique a écrire et a visualiser mais qui fonctionne toujours.
A+=D=D
Hors ligne