Montée et descente lente "gauges fuel" Baron58

Questions de programmation / Offset FSUIPC et IOCP

Montée et descente lente "gauges fuel" Baron58

Messagede pierre01 » Lun 4 Mar 2013 12:57

Bonjour à tous,

la programmation de mes gauges fuel est faites depuis longtemps mais montait et descendait à la vitesse max du servo, donc pas très réaliste ..;

J'ai donc modifié mon programme SIOC pour intégrer une montée et descente lente quand je manœuvre "switch BAT" !

Ça marche très bien, sauf dans 2 cas bien précis :
Si je met "switch BAT" ON ou OFF et que j'attends que les gauges soient complètement établies, pas de Pb.
Si je met "switch BAT" ON et que je le remet OFF avant la montée complète des gauges, j'ai :
- La montée s'arrête et les gauges restent à cette position (ne repassent pas à "0").
- Il faut que je mette "switch BAT" sur ON, là les gauges finissent de monter, puis redescendent à "0" et y restent.
- Je remet "switch BAT" OFF puis ON pour retrouver une cohérence ...

- Idem pour l'inverse : "switch BAT" OFF, puis ON avant que les gauges soient à "0".

Un spécialiste (BOB au hasard), pourrait-il regarder mon code ?
J'ai utilisé la commande TIMER pour faire ça !

Code: Tout sélectionner
//
// Fuel jauge left et Right
//
// Offset $0B7C et $0B94 Length 4 en % * 128 * 65536
// Graduation 0 à 100 %
// servo de 170 à 850  -->  a = 6,8  b = 170
//

Var 4180, name fs_fuel_left, link FSUIPC_INOUT, Offset $0b7c, Length 4 // FSUIPC

{
CALL &sub_fuel_left      // Calcul de la valeur à envoyer au servo
}

Var 4181, name sub_fuel_left, link subrutine
{
  &val_fuel_left = &fs_fuel_left / 83886.08      // de 0 à 100%  :  128 * 65536 / 100
  L0 = &val_fuel_left * 6.8         // "a" (y = ax)
  L1 = L0 + 170                // "b" (y = ax + b) -> nouvelle valeur servo
  L1 = LIMIT 150 900 0            // Limite amplitude servo de 150 à 900
  IF &courant = 0               // Si pas de courant
  {
    L1 = 170                  // L1 = Valeur mini pour servo
  }
  &tmp_fuel_left = L1 - &old_fuel_left      // Différence new - old valeur
  L2 = 2                     // Si &tmp_fuel_left >= 0 (évite un "IF")
                                    // Sens de variation du servo (dans "TIMER")
  IF &tmp_fuel_left < 0            // Si la nouvelle valeur servo < à l'ancienne
  {
   L2 = -2                     // L2 négatif
  }
  IF &tmp_fuel_left <> 0         // Si le servo doit changer
  {
   &serv_Fuel_L = TIMER L1 L2 2   // Envoie valeur au servo par pas de 2 avec timer 2/10° de s
   &old_fuel_left = L1            // Stok nouvelle valeur servo pour prochaine modif
  }
}
Var 4182, name val_fuel_left   // Valeur fuel en %
Var 4183, name old_fuel_left   // mémorise ancienne valeur fuel
Var 4184, name tmp_fuel_left   // Différence entre ancienne et nouvelle valeur du servo


Il y a une subroutine car appellée d'autre endroits !
Le temps de montée ou de descente est d'environ 7s pour le plein complet, très facilement modifiable par la valeur de L2 et du paramètre3 de la commande TIMER.
L2 prend une valeur 2 pour monter et -2 pour descendre et c'est beaucoup plus fluide qu'avec 1 ???
Et il y aura sûrement des simplifications gratgrat

Merci d'avance !
A+
Pierre.
Avatar de l’utilisateur
pierre01
 
Messages: 1775
Inscription: 19/04/09
Localisation: Vers Vesoul (Haute Saône)

Re: Montée et descente lente "gauges fuel" Baron58

Messagede pierre01 » Sam 30 Mar 2013 11:03

Bon, je n'ai pas encore résolu mon PB gratgrat

Es-ce que quelqu'un pourrait me dire si l'on peux interrompre et surtout inverser la commande "timer" en cours d'éxécution ?

&serv_Fuel_L = TIMER L1 L2 2

En passant L2 de 2 à -2 par Ex pour inverser le sens de l'incrément de &serv_Fuel_L
Et/Ou en changeant L1 pour la limite !!!

J'ai fait l'essai de mettre des variables à la place de L1 et L2 mais rien à faire !!! furieuxfumée

Merci pour votre aide.
A+
Pierre.
Avatar de l’utilisateur
pierre01
 
Messages: 1775
Inscription: 19/04/09
Localisation: Vers Vesoul (Haute Saône)

Re: Montée et descente lente "gauges fuel" Baron58

Messagede steph737 » Sam 30 Mar 2013 12:53

Modifier les paramètres de TIMER en cours de route je sais pas mais si ce n'est pas possible c'est peut être pour ça que le programme ne prend pas bien en compte la présence tension.

mais tu peux peut-être t'inspirer de ceci :

"Stop a blinking led" ( il arrête le timer à zero mais en jouant directement sur la variable associé )

"An Endless Timer" ( le timer n'est pas lié directement à la variable )

sur la page http://www.lekseecon.nl/howto.html#fixedblink , il a l'air de bien maitriser TIMER et DELAY, ce qui n'est pas mon cas !
Image
Avatar de l’utilisateur
steph737
 
Messages: 1083
Inscription: 27/03/09
Localisation: Antananarivo - Madagascar

Re: Montée et descente lente "gauges fuel" Baron58

Messagede A320 hérétique » Sam 30 Mar 2013 13:31

Pierre,
il me semble qu'il suffit de mettre &serv_Fuel_à L1 - 2, le timer s'arrêtera au pas suivant ; et tu relances ensuite en sens inverse.
Cordialement, Michel
http://www.myA320sim.com
Simu mixte P3D/FS2020, serveur P3Dv4/A320 FMGS (7700k et GTX 1070 sous W10 64), client P3Dv4/FS2020 (i9-12900K et RTX 4070 Ti Super sous W10 64), 3 vdp Optoma GT1080E, client A320 FMGS (2600k sous W10 64).
Avatar de l’utilisateur
A320 hérétique
 
Messages: 3360
Inscription: 2/09/12
Localisation: Pornic

Re: Montée et descente lente "gauges fuel" Baron58

Messagede pierre01 » Sam 30 Mar 2013 16:21

Merci pour vos réponses !
Steph, merci pour cette doc ... très intéressante !

Michel, Il y est effectivement dit qu'il faut changer la valeur à atteindre + ou - la valeur de l'incrément (ou décrément) !

J'essaie de changer mon script dans ce sens !
A+
Pierre.
Avatar de l’utilisateur
pierre01
 
Messages: 1775
Inscription: 19/04/09
Localisation: Vers Vesoul (Haute Saône)

Re: Montée et descente lente "gauges fuel" Baron58

Messagede pierre01 » Lun 1 Avr 2013 10:04

Bon, c'est bien ça, j'arrive à stopper le timer rigolus

Reste plus qu'à écrire le bon code ... et c'est pas gagné avec toutes les conditions que ça impose !!!

Mais au fait, personne n'a t-il eu ce Pb à résoudre ?
Y aurait-il une autre façon de faire plus simple, d'autres offset donnant la bonne info ... ?

J'ai essayé avec IOCP mais je n'ai pas réussi à faire bouger mon servo avec :

($0418) RECIP_ENGINE1_FUEL_AVAILABLE (*100)

Comment faire avec IOCP, quel est le length des offset ... ?
Merci d'avance.
A+
Pierre.
Avatar de l’utilisateur
pierre01
 
Messages: 1775
Inscription: 19/04/09
Localisation: Vers Vesoul (Haute Saône)

Re: Montée et descente lente "gauges fuel" Baron58

Messagede pierre01 » Lun 1 Avr 2013 12:41

Bon, j'ai relu quelques posts sur IOCP et retrouvé que les offsets étaient décimaux et non Hexa
et apparemment sans "length" !
J'ai aussi trouve l'offset IOCP 0289 pour la gauge fuel left mais qui fonctionne exactement pareil que l'offset FSUIPC $0b94 !

La gauge monte (ou descend) à la vitesse max du servo ...
S'il n'y a rien d'autre, il ne reste plus qu'à plancher sur le code ... gratgrat

S'il existe, je suis preneur bien sûr cligneoeil
A+
Pierre.
Avatar de l’utilisateur
pierre01
 
Messages: 1775
Inscription: 19/04/09
Localisation: Vers Vesoul (Haute Saône)


Retourner vers Programmation Sioc





Qui est en ligne

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