Test jauge carburant

Questions de programmation / Offset FSUIPC et IOCP

Re: Test jauge carburant

Messagede arcc » Mar 11 Oct 2016 19:32

Je ne connais pas beaucoup air manager mais à mon avis c'est là dedans qu'il faut aller voir


Effectivement Bernard, je m'oriente en même temps vers une solution en programmation LUA directement dans les gauges Air Manager. Je vais voir ce que ca donne.

Merci de vos aides.
A+
Christian
Un ancien sous-marinier qui a pris de la hauteur.
Avatar de l’utilisateur
arcc
 
Messages: 715
Inscription: 16/12/13
Localisation: La ou fini la terre (Finistere)

Re: Test jauge carburant

Messagede JacquesZ » Mer 12 Oct 2016 05:32

arcc a écrit:Bonsoir à tous.

J'ai un petit problème que je voudrais vous soumettre.

Dans ma "Checklist PreStart" de mon Twin Otter, j'ai un contrôle des jauges de carburant. Vérification de la concordance de l'affichage avec le volume calculé puis avec un appui sur un poussoir, l'aiguille retombe à 0 et reviens à la valeur embarquée.
Si je fais cette verif moteurs éteint, pas de problème. ma petite programmation Sioc effectue son boulot, l'aiguille de ma jauge descend à 0 et reviens au volume embarqué.
Christian


Salut Christian

Il y a deux choses que je ne comprends pas dans ton problème:
- vérification de la concordance de l'affichage avec le volume embarqué:
Grosso modo tu veux dire remise à 0 des jauges carburant, puis retour à la valeur Fuel Qty?
- Tu parles de code SIOC, puis de jauges Air Manager?
Le SIOC c'est pour l'inter physique de RAZ des jauges?

Si c'est bien le cas, je ferai plutôt comme dans l'avion réel,je ne modifierai pas la Qté carburant embarquée avec SIOC mais plutôt la logique d'affichage des jauges carburant AM.
AM ne sait pas lire un offset FSUIPC mais une LVar, oui.

En clair:
1- code SIOC pour ton inter "test jauges" qui met simplement une valeur 1 (bouton appuyé) ou 0 (bouton relâché) dans une LVar inutilisée par ton add-on.
On ne touche pas à la valeur Fuel Qty qui est gérée par l'add-on
2- modification simple du code des jauges carburant AM en Lua pour qu'en plus de lire le Fuel Qty (variable Simconnect ou Lvar), elles lisent aussi la LVar "état inter test" que tu as créé et affichent en fonction de ça, soit la valeur 0(inter test à 1 bouton appuyé), soit la valeur Fuel Qty qui n'est jamais modifiée(inter test à 0) et comme ça pas d'arrêt moteur en vol ni au sol!

C'est le point 1 le plus délicat, je ne sais pas si SIOC sait écrire dans une LVar. Peut être via un script intermédiaire FSUIPC?
Au pire tu choisis une variable Simconnect "officielle" qui n'est pas utilisée dans ton avion, genre la crosse d'appontage.
À tester!

Jacques
Ma chaîne YouTube Tutos sur l’A320 par un Pilote de Ligne: https://youtube.com/channel/UCljftuoKBcgeR-WBgYJpuoA
Avatar de l’utilisateur
JacquesZ
 
Messages: 2848
Inscription: 24/11/10

Re: Test jauge carburant

Messagede arcc » Mer 12 Oct 2016 12:14

Salut Jacques

Si si tu as bien compris.
La commande du poussoir se fait avec Sioc ce qui me met à 0 les offset 0B74 et 1244, donc les aiguilles de mes gauges (Air manager) passe à 0 puis je relâche le poussoir et mes gauges affichent de nouveau la valeur embarquée.
Comme je l'ai expliqué plus haut, ce système qui joue sur les valeurs des Offset n'est pas bon car FSX pense à juste titre qu'il n'y a plus de carburant et donc éteins les moteurs.


Comme toi et Bernard le supposez, je m'oriente vers les gauges de Air Manager.

Je garde la commande du poussoir dans Sioc. La variable du Twin pour ce poussoir est L:Fuel_ind_but

J'ai modifié la programmation de mes gauges LUA
Ca donne ceci

Code: Tout sélectionner
- Global variables --
local gbl_target_fuel = 0
local gbl_cur_fuel    = 0
local gbl_factor      = 0.26
-- Set the maximum fuel quantity (full) in gallons here:
local gbl_max_fuel    = 201.5

-- Add images --
img_add_fullscreen("fuel_center2_backdrop_day.png")
img_needle = img_add("neddle.png",0,0,256,256)
img_add_fullscreen("glass.png")


function PT_nightlight(nightlight)

   if nightlight == false then
   img_visible(img_night,false)
   else
   img_visible(img_night,true)
   end   
   
end   

img_night = img_add_fullscreen("backdrop_night.png")

function PT_fueltest(fueltest)

   if fueltest == 1 then
        gbl_target_fuel = 0   
    else
        gbl_target_fuel = var_cap(gallons, 0, gbl_max_fuel)
    end
   
end   

function new_fuel_fsx(gallons_center2, battery)

    -- Convert weight in KG to gallons with 2.73KG / gallon
    gallons = gallons_center2

    if battery == true then
        gbl_target_fuel = var_cap(gallons, 0, gbl_max_fuel)
    else
        gbl_target_fuel = 0
    end

end

-- Slowly move needle to current amount of fuel --
function timer_callback()   
   
    -- Rotate needle image
   img_rotate(img_needle, (305 / gbl_max_fuel * gbl_cur_fuel) -160)

    -- Calculate the current fuel position
    gbl_cur_fuel = gbl_cur_fuel + ((gbl_target_fuel - gbl_cur_fuel) * gbl_factor)

end

-- Subscribe to data --
fsx_variable_subscribe( "LIGHT PANEL", "Bool", PT_nightlight)

fsx_variable_subscribe( "L:Fuel_ind_but", "", PT_fueltest)

fsx_variable_subscribe("FUEL TANK CENTER2 QUANTITY", "Gallons",
                       "ELECTRICAL MASTER BATTERY", "Bool", new_fuel_fsx)
                       

-- Timers --
tmr_update = timer_start(0, 50, timer_callback)


Ca fonctionne mais j'ai quand même un défaut que je n'arrive pas à résoudre

Un LUA:42 attempt to compare..

Si je clic ok, mes gauges s'affichent quand même et ca fonctionne quand j'appui sur le poussoir (en cockpit 3D)

Image


Plus gros http://img4.hostingpics.net/pics/531623Capture.jpg
A suivre

A+
Christian
Un ancien sous-marinier qui a pris de la hauteur.
Avatar de l’utilisateur
arcc
 
Messages: 715
Inscription: 16/12/13
Localisation: La ou fini la terre (Finistere)

Re: Test jauge carburant

Messagede arcc » Mer 12 Oct 2016 18:01

Bon je pense avoir resolu mon probleme.

J'ai pas encore tout a fait compris l'erreur Un LUA:42 attempt to compare.

j'ai essayé de mettre entre les deux " (ici "L:Fuel_ind_but", " ", PT_fueltest) différentes valeurs Bools, Enum ...
Ca ne fonctionnait pas. Etant donné que ma Lvar du Twin n'avait aucune autre fonction que de faire le test des gauges, J'ai suivi le conseil de Jacques
Au pire tu choisis une variable Simconnect "officielle" qui n'est pas utilisée dans ton avion, genre la crosse d'appontage.

et remplacé par une variable connu.
J'ai pris "SPOILERS ARMED", "Bool"

Maintenant ca fonctionne sans couper les moteurs...
J'ai pas encore fais un test grandeur nature mais je pense que ca ira.

Voila le code LUA

Code: Tout sélectionner
-- Global variables --
local gbl_target_fuel = 0
local gbl_cur_fuel    = 0
local gbl_factor      = 0.22
-- Set the maximum fuel quantity (full) in gallons here:
local gbl_max_fuel    = 201.5

-- Add images --
img_add_fullscreen("fuel_center2_backdrop_day.png")
img_needle = img_add("neddle.png",0,0,256,256)
img_add_fullscreen("glass.png")


function PT_nightlight(nightlight)

   if nightlight == false then
   img_visible(img_night,false)
   else
   img_visible(img_night,true)
   end   
   
end   

img_night = img_add_fullscreen("backdrop_night.png")


function new_fuel_fsx(gallons_center2, battery)

    -- Convert weight in KG to gallons with 2.73KG / gallon
    gallons = gallons_center2

    if battery == true then
        gbl_target_fuel = var_cap(gallons, 0, gbl_max_fuel)
    else
        gbl_target_fuel = 0
    end

end

function PT_fueltest(fueltest)

   if fueltest == true then
        gbl_target_fuel = 0   
    else
        gbl_target_fuel = var_cap(gallons, 0, gbl_max_fuel)
    end
   
end   

-- Slowly move needle to current amount of fuel --
function timer_callback()   
   
    -- Rotate needle image
   img_rotate(img_needle, (305 / gbl_max_fuel * gbl_cur_fuel) -160)

    -- Calculate the current fuel position
    gbl_cur_fuel = gbl_cur_fuel + ((gbl_target_fuel - gbl_cur_fuel) * gbl_factor)

end

-- Subscribe to data --
fsx_variable_subscribe( "LIGHT PANEL", "Bool", PT_nightlight)

fsx_variable_subscribe("FUEL TANK CENTER2 QUANTITY", "Gallons",
                       "ELECTRICAL MASTER BATTERY", "Bool", new_fuel_fsx)
                       
fsx_variable_subscribe("SPOILERS ARMED", "Bool", PT_fueltest)
                  
-- Timers --
tmr_update = timer_start(0, 50, timer_callback)


A+
Christian
Un ancien sous-marinier qui a pris de la hauteur.
Avatar de l’utilisateur
arcc
 
Messages: 715
Inscription: 16/12/13
Localisation: La ou fini la terre (Finistere)

Précédente

Retourner vers Programmation Sioc





Qui est en ligne

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