FSUIPC - LUA et encodeur CTS288

FSUIPC / Emulateurs de claviers & souris / IOCP, etc...

FSUIPC - LUA et encodeur CTS288

Messagede F-DEUZ » Sam 9 Nov 2019 14:39

Bonjour à tous,
Après quinze jours de galère, je me décide à lancer un appel à l'aide car j'avoue que j'y comprends rien et plus je recherche et moins je comprends.

Je vole sur l'ATR 42-500 de CARENADO. Je gère la plupart des commandes sur écran tactile et avec le GTN 750.
Je voulais simplement gérer l'autopilote avec quelques poussoirs et boutons rotatifs.
J'ai bien sorti la liste des LVars de l'appareil - J'ai réussi à connecter mes poussoirs par l'intermédiaire de SIOC et FSUIPC.
Là ou la galère commence c'est pour les encodeurs.

J'ai bien trouvé le script rotaries.lua dans les fichiers joints à FSUIPC ( j'ai bien la version avec licence) mais je n'arrive pas à comprendre comment ca fonctionne .Malgré mes recherches, notamment sur le site de PETER DOWSON et les forums associés, mon anglais scolaire des années 70 ne pas pas permis grand chose.

J'ai bien réussi à faire un code SIOC qui gère l'AP_ALT mais, lorsque je transfère la valeur à ma LVAR je me trouve avec des valeurs incohérentes et inutilisable, en plus ca perturbe le fonctionnement de l'AP dans P3DV4.

Je voudrais comprendre où placer les fichiers, comment les activer et avoir un exemple de fichier LUA incluant des encodeurs. J'ai bien essayé de rechercher ce genre de fichier sur le net mais sans résultat (je n'ai peut être pas cherché au bon endroit).

Voilà, un peu d'aide de la part des puristes serait là bienvenue...

Bon WE
merci affiche
Denis.
Image
P8P67 - Core I7 2600K - 16GO - GTX560 2 GO - WIN 7 64 bits - P3D et XP11 - SIOC - Airmanager
F-DEUZ
 
Messages: 213
Inscription: 14/04/11
Localisation: Manosque 04

Re: FSUIPC - LUA et encodeur CTS288

Messagede stevelep » Sam 9 Nov 2019 17:46

Salut Denis,

Tu veux les employer pour quoi tes encodeurs ?

La plupart des commandes rotatives sont gérées par des variables FSUIPC de base sans passer par
des L:VARS propriétaires. Pour les instruments (VOR, ADF, ALT, AUTOPILOT) tu peux utiliser des scripts
SIOC simples qui agissent directement sur FSUIPC.

Donne nous la liste de ce que tu veux commander

Bye

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

Re: FSUIPC - LUA et encodeur CTS288

Messagede F-DEUZ » Sam 9 Nov 2019 18:14

Salut Bob
Merci du coup de main

Dans le PA de l'ATR 42 il y a 4 boutons rotatifs (ALT - CRS1 - HDG et le réglage IAS / VS).
J'ai essayé les scripts simples mais ca ne fonctionne pas (à moins que je me sois planté)
voilà le bout de code :
Code: Tout sélectionner
Var 0050, name AP_ALT, Link FSUIPC_INOUT, Offset $07D4, Length 4

Var 0055, name Rot_ALT1000, Link IOCARD_ENCODER, Input 185, Aceleration 6, Type 2
{
  IF &Rot_ALT1000 < 0
  {
    &AP_ALT = &AP_ALT + &Val_Rot
  }
  IF &Rot_ALT1000 > 0
  {
    &AP_ALT = &AP_ALT - &Val_Rot
  }
  CALL &Limit_ALT
}

Var 0060, name SW_ALT100, Link IOCARD_SW, Input 180, Type P
{
  IF &SW_ALT100 = 1
  {
    &Val_Rot = 1000   
  }
  ELSE
  {
    &Val_Rot = 100   
  }
}

Var 0065, name Val_Rot

Var 0070, name Limit_ALT, Link SUBRUTINE
{
  IF &AP_ALT > 25000
  {
    &AP_ALT = 25000   
  }
  IF &AP_ALT < 0
  {
    &AP_ALT = 0   
  }
}


Ca fonctionne bien das SIOC, mais aucune incidence sur l'ATR.
Donc, j'ai essayé de récupérer la valeur de cette variable et de l'écrire dans la LVar correspondante :
L:CUSTOM_AP_ALT_VAR_SET_ENGLISH
Ca ne marche pas non plus.
Après j'ai voulu écrire un fichier lua afin d'utiliser un encodeur pour agir sur le bouton de réglage de l'altitude dans l'AP.
Rien non plus.
J'ai également testé via LINDA les contrôles FSX, Nada
Au final, à force de faire tout et n'importe quoi, je ne sais plus que faire.
Image
P8P67 - Core I7 2600K - 16GO - GTX560 2 GO - WIN 7 64 bits - P3D et XP11 - SIOC - Airmanager
F-DEUZ
 
Messages: 213
Inscription: 14/04/11
Localisation: Manosque 04

Re: FSUIPC - LUA et encodeur CTS288

Messagede tabar57 » Dim 10 Nov 2019 10:34

Bonjour,

Si on commence déjà par la commande altitude du PA dans Fsuipc ( 07D4 ), il est stipulé as meters * 65536, çà te donne une idée des conversions à opérer
Essaie çà ...

Code: Tout sélectionner
Var 0046, name ALT_SEL, Link FSUIPC_INOUT, Offset $07D4, Length 4     // sélection Altitude
 Var 0506, name RO_ALT_SEL, Link IOCARD_encoder, input 60, Aceleration 2, Type 2    // encodeur sélection altitude
 {

    l0 = &RO_ALT_SEL * 1
    &CALC_CODALT = &CALC_CODALT + L0

 }



Var 0510, name CALC_CODALT, link subrutine  //  calcul du codeur altimétrique
{
    if &CALC_CODALT > 300
     {
       &CALC_CODALT = 300
     }
    if &CALC_CODALT < 0
     {
       &CALC_CODALT = 0
     }
     l0 = &CALC_CODALT * 1997537
     &ALT_SEL = l0





Bernard
Mon blog de construction : http://tabar57.blog4ever.com
Hémicockpit de Beechcraft B200 ( de FlightOne ) P3DV4.5 et 2 PC en réseau W7 64 bits et W10, cartes OC et FDbus, vibreur et yoke rdf de BFFsimulation, météo réelle asp4
Avatar de l’utilisateur
tabar57
 
Messages: 3651
Inscription: 29/12/10
Localisation: Dans ma cabine en Lorraine

Re: FSUIPC - LUA et encodeur CTS288

Messagede F-DEUZ » Dim 10 Nov 2019 12:59

Bonjour Bernard,
Merci pour ton script, ca fonctionne mais pas comme je voudrai.
Je me suis mal expliqué.
J'ai un fichier LUA avec toutes les commandes de l'ATR42 CARENADO. C'est un fichier qui à l'origine été pour l'EMB505 de carenado. Les LVars sont les mêmes.
Voilà une partie du code avec les controles event:
Code: Tout sélectionner
function AltHoldBtnOn ()
        c = ipc.readUD(0x07D4) * 3.28084 / 65536
        ipc.control(66124,c)
        ipc.writeLvar("CUSTOM_AP_ALT_VAR_SET_ENGLISH", c)
        ipc.writeLvar("CUSTOM_AP_ATT_HOLD_ON", 1)
        ipc.control(65726,0)
        ipc.control(65807,0)
end
function AltHoldBtnOff ()
        ipc.control(65726)
        ipc.control(65812)
        ipc.control(65807)
        ipc.writeLvar("CUSTOM_AP_ATT_HOLD_ON", 0)
end
function Alt_Step_100 ()
ipc.writeLvar("H850XPAltwheelPUSHTOGGLE", 0)
end
function Alt_Step_1000 ()
ipc.writeLvar("H850XPAltwheelPUSHTOGGLE", 1)

end
function AltSelPlus ()
        if ipc.readLvar("ALT_ARM_SEL_ON_KNOB") == 0 then
        ipc.writeLvar("ALT_ARM_SEL_ON_KNOB", 1)
        end
        if ipc.readLvar("H850XPAltwheelPUSHTOGGLE") == 0 then
        AddVar = 100
    else
        AddVar = 1000
    end
    LVarSet = "CUSTOM_AP_ALT_VAR_SET_ENGLISH"
    LVarGet = ipc.readLvar(LVarSet)
    if LVarGet + AddVar <= 41000 then
        ipc.writeLvar(LVarSet, LVarGet + AddVar)
    else
        ipc.writeLvar(LVarSet, 41000)
    end
end
function AltSelMinus ()
        if ipc.readLvar("ALT_ARM_SEL_ON_KNOB") == 0 then
        ipc.writeLvar("ALT_ARM_SEL_ON_KNOB", 1)
        end
        if ipc.readLvar("H850XPAltwheelPUSHTOGGLE") == 0 then
        AddVar = 100
    else
        AddVar = 1000
    end
    LVarSet = "CUSTOM_AP_ALT_VAR_SET_ENGLISH"
    LVarGet = ipc.readLvar(LVarSet)
    if LVarGet - AddVar >= 100 then
        ipc.writeLvar(LVarSet, LVarGet - AddVar)
    else
        ipc.writeLvar(LVarSet, 100)
    end
end


Ce que je cherche à faire, c'est lier ce code aux boutons et encodeurs de mon tableau de bord de manière à gérer mon pilote automatique par mon panel. Soit par SIOC, soit par FSUIPC. J''arrive à gérer les poussoirs directement dans FSUIPC en passant par un fichier .mcro mais pas les encodeurs. j'ai bien trouvé un fichier rotaries.lua dans le dossier FSUIPC mais
j'ignore totalement comment il faut l'utiliser.

Voilà ou j'en suis pour le moment.

Denis
Image
P8P67 - Core I7 2600K - 16GO - GTX560 2 GO - WIN 7 64 bits - P3D et XP11 - SIOC - Airmanager
F-DEUZ
 
Messages: 213
Inscription: 14/04/11
Localisation: Manosque 04

Re: FSUIPC - LUA et encodeur CTS288

Messagede tabar57 » Dim 10 Nov 2019 21:21

Ok, on peut peut être commencer par le réglage du Alt select alors .

Si je comprend bien : a partir d'un encodeur physique de ton tableau de bord tu veux que la Lvar correspondante de ton Carenado soit changée pour être affichée sur une jauge de ton ATR Carenado .
Il faut donc que cette Lvar change au rythme de l'offset $07D4 , c'est bien çà ?

Il est bien ton code Lua avec toutes ces fonctions mais je ne vois pas par quel évènement elles sont déclenchées ses fonctions ? en clair : si ce code est complet il ne se passe rien car aucune fonction n'est lancée par un évènement
Dis moi si ce fichier est complet... STP auquel cas on le complètera ( pour commencer ) par un évent qui déclenchera une fonction de maj de la Lvar

Bernard
Mon blog de construction : http://tabar57.blog4ever.com
Hémicockpit de Beechcraft B200 ( de FlightOne ) P3DV4.5 et 2 PC en réseau W7 64 bits et W10, cartes OC et FDbus, vibreur et yoke rdf de BFFsimulation, météo réelle asp4
Avatar de l’utilisateur
tabar57
 
Messages: 3651
Inscription: 29/12/10
Localisation: Dans ma cabine en Lorraine

Re: FSUIPC - LUA et encodeur CTS288

Messagede F-DEUZ » Lun 11 Nov 2019 09:33

Bonjour Bernard,
Non, il n'est pas complet, je n'ai gardé que la partie autopilote.
Voilà le code complet:
Code: Tout sélectionner
-- EMPTY TEMPLATE --
-- Fill with what functions you need --


-- ## System functions ##

function InitVars ()

    -- uncomment to disable display
    -- AutopilotDisplayBlocked ()
end
-- ## HeatAndIcePanel ###############
function Wshld1On ()
ipc.writeLvar("ASD_SWITCH_WSHLD1_EMB100", 1)
end
function Wshld1Off ()
ipc.writeLvar("ASD_SWITCH_WSHLD1_EMB100", 0)
end
function Wshld2On ()
ipc.writeLvar("ASD_SWITCH_WSHLD2_EMB100", 1)
end
function Wshld2Off ()
ipc.writeLvar("ASD_SWITCH_WSHLD2_EMB100", 0)
end
function AdsKnobOff ()
ipc.writeLvar("ASD_KNOB_ADS_AOA_EMB100", 0)
end
function AdsKnobAuto ()
ipc.writeLvar("ASD_KNOB_ADS_AOA_EMB100", 1)
end
function AdsKnobOn ()
ipc.writeLvar("ASD_KNOB_ADS_AOA_EMB100", 2)
end
function Eng1AntIceOn ()
ipc.control(66484, 1)
end
function Eng1AntIceOff ()
ipc.control(66484, 1)
end
function Eng2AntIceOn ()
ipc.control(66485, 1)
end
function Eng2AntIceOff ()
ipc.control(66485, 1)
end
function WingstabOn ()
ipc.writeLvar("BootLinesAndValves", 1)
ipc.writeLvar("ASD_SWITCH_WINGSTAB_EMB100", 1)
end
function WingstabOff ()
ipc.writeLvar("BootLinesAndValves", 0)
ipc.writeLvar("ASD_SWITCH_WINGSTAB_EMB100", 0)
end
function InspLightOn ()
ipc.control(66378, 1)
end
function InspLightOff ()
ipc.control(66378, 1)
end
function GSInhibOn ()
ipc.writeLvar("ASD_BTN_GS_INHID_EMB505", 1)
ipc.writeLvar("BUFFER_P100glideslope", 0)
end
function GSInhibOff ()
ipc.writeLvar("ASD_BTN_GS_INHID_EMB505", 0)
end
function FlapOvrdOn ()
ipc.writeLvar("ASD_BTN_FLAP_OVRD_EMB505", 1)
ipc.writeLvar("BUFFER_P100_ToLowFlaps", 0)
end
function FlapOvrdOff ()
ipc.writeLvar("ASD_BTN_FLAP_OVRD_EMB505", 0)
end
function TerrInhibon ()
ipc.writeLvar("ASD_BTN_TERR_INHID_EMB505", 1)
ipc.writeLvar("BUFFER_P100_TerrainPullUP", 0)
end
function TerrInhibOff ()
ipc.writeLvar("ASD_BTN_TERR_INHID_EMB505", 0)
end
-- ## G1000 Controls ###############
function ComKnobFracInc ()
   if ipc.readLvar("G1000_SelectCom") == 0 then
    ipc.control(65639, 0)
   else
    ipc.control(66440, 0)
   end
end
function ComKnobFracDec ()
   if ipc.readLvar("G1000_SelectCom") == 0 then
    ipc.control(65638, 0)
   else
    ipc.control(66438, 0)
   end
end
function ComKnobWholeInc ()
   if ipc.readLvar("G1000_SelectCom") == 0 then
    ipc.control(65637, 0)
   else
    ipc.control(66437, 0)
   end
end
function ComKnobWholeDec ()
   if ipc.readLvar("G1000_SelectCom") == 0 then
    ipc.control(65636, 0)
    else
    ipc.control(66436, 0)
    end
end
function ComKnobChnlSwap ()
   if ipc.readLvar("G1000_SelectCom") == 0 then
    ipc.writeLvar("G1000_SelectCom", 1)
    else
    ipc.writeLvar("G1000_SelectCom", 0)
   end
end
function ComStbyToActiveSwap ()
   if ipc.readLvar("G1000_SelectCom") == 1 then
    ipc.control(66444, 0)
   else
    ipc.control(66372, 0)
   end
end
function NavKnobFracInc ()
   if ipc.readLvar("G1000_SelectNav") == 0 then
    ipc.control(65643, 0)
    else
    ipc.control(65647, 0)
    end
end
function NavKnobWholeInc  ()
   if ipc.readLvar("G1000_SelectNav") == 0 then
    ipc.control(65641, 0)
   else
    ipc.control(65645, 0)
   end
end
function NavKnobFracDec ()
   if ipc.readLvar("G1000_SelectNav") == 0 then
    ipc.control(65642, 0)
   else
    ipc.control(65646, 0)
    end
end
function NavKnobWholeDec ()
   if ipc.readLvar("G1000_SelectNav") == 0 then
    ipc.control(65640, 0)
   else
    ipc.control(65644, 0)
    end
end
function NavSwapButton ()
   if ipc.readlvar("G1000_SelectNav") == 0 then
    ipc.writeLvar("G1000_SelectNav", 1)
    else
    ipc.writeLvar("G1000_SelectNav", 0)
   end
end
function NavStbyToActive ()
   if ipc.readLvar("G1000_SelectNav") == 0 then
    ipc.control(66448, 0)
    else
    ipc.control(66452, 0)
    end
end
-- ## Pressurization Panel ###############
function ModeAUTO ()
ipc.writeLvar("ASD_SWITCH_MODE_PRESSURIZATION_EMB100", 1)
end
function ModeOFF ()
ipc.writeLvar("ASD_SWITCH_MODE_PRESSURIZATION_EMB100", 0)
end
function ECSKnobOFF ()
ipc.control(66886, 2)
ipc.writeLvar("ASD_KNOB_BLEED_PRESSURIZATION_EMB100", 0)
ipc.writeLvar("EAI1ValveAndBleedLine", 0)
end
function ECSKnob1 ()
ipc.control(66886, 1)
ipc.writeLvar("ASD_KNOB_BLEED_PRESSURIZATION_EMB100", 1)
ipc.writeLvar("EAI1ValveAndBleedLine", 1)
   if ipc.readLvar("EAI2ValveAndBleedLine") == 1 then
    ipc.writeLvar("EAI2ValveAndBleedline", 0)
    else
    end
end
function ECSKnobBOTH ()
ipc.writeLvar("ASD_KNOB_BLEED_PRESSURIZATION_EMB100", 2)
ipc.writeLvar("EAI2ValveAndBleedLine", 1)
   if ipc.readLvar("EAI1ValveAndBleedLine") == 0
    then
    ipc.writeLvar("EAI1ValveAndBleedeLine", 1)
   else
    end
end
function ECSKnob2 ()
ipc.writeLvar("ASD_KNOB_BLEED_PRESSURIZATION_EMB100", 3)
ipc.writeLvar("EAI1ValveAndBleedLine", 0)
end
-- ## Electrical Panel ###############
function Batt1ON ()
   if ipc.readLvar("ASD_SWITCH_BAT2_EMB100") == 1
    then
   else
    ipc.control(66241, 0)
   end
ipc.writeLvar("ASD_SWITCH_BAT1_EMB100", 1)
end
function Batt1OFF ()
   if ipc.readLvar("ASD_SWITCH_BAT2_EMB100") == 0
    then
   else
    ipc.control(66241, 0)
   end
ipc.writeLvar("ASD_SWITCH_BAT1_EMB100", 0)
end
function Batt2ON ()
   if ipc.readLvar("ASD_SWTCH_BAT1_EMB100") == 1
    then
   else
    ipc.control(66241, 0)
    end
ipc.writeLvar("ASD_SWITCH_BAT2_EMB100", 1)
end
function Batt2OFF ()
   if ipc.readLvar("ASD_SWITCH_BAT1_EMB100") == 0 then
   else
    ipc.control(66241, 0)
   end
ipc.writeLvar("ASD_SWITCH_BAT2_EMB100", 0)
end
function GPUButtonON ()
ipc.control(66704, 1)
ipc.control(66707, 1)
ipc.writeLvar("ASD_SWITCH_GPU_EMB100", 1)
end
function GPUButtonOFF ()
ipc.control(66707, 0)
ipc.control(66705, 0)
ipc.writeLvar("ASD_SWITCH_GPU_EMB100", 0)
end
function Gen1ON ()
ipc.control(66363, 1)
end
function Gen1OFF ()
ipc.control(66363, 1)
end
function Gen2ON ()
ipc.control(66364, 1)
end
function Gen2OFF ()
ipc.control(66364, 1)
end
function BusTieKnob1OPEN ()
ipc.writeLvar("ASD_KNOB_BUS_TIE", -1)
end
function BusTieKnobAUTO ()
ipc.writeLvar("ASD_KNOB_BUS_TIE", 0)
end
function BusTieKnob2OPEN ()
ipc.writeLvar("ASD_KNOB_BUS_TIE", 1)
end
-- ## Fuel XFEED Panel ###############
function Pump1AUTO ()
ipc.control(66340, 1)
ipc.writeLvar("ASD_SWITCH_FUEL_PUMP1_EMB100", 1)
end
function Pump1ON ()
ipc.writeLvar("ASD_SWITCH_FUEL_PUMP1_EMB100", 2)
end
function Pump1OFF ()
ipc.control(66340, 1)
ipc.writeLvar("ASD_SWITCH_FUEL_PUMP1_EMB100", 0)
end
function Pump2AUTO ()
ipc.control(66341, 1)
ipc.writeLvar("ASD_SWITCH_FUEL_PUMP2_EMB100", 1)
end
function Pump2ON ()
ipc.writeLvar("ASD_SWITCH_FUEL_PUMP2_EMB100", 2)
end
function Pump2OFF ()
ipc.control(66341, 1)
ipc.writeLvar("ASD_SWITCH_FUEL_PUMP2_EMB100", 0)
end
function XFEEDknobLO1 ()
ipc.control(65962, 3)
ipc.writeLvar("ASD_KNOB_XFUEL_EMB505", -1)
end
function XFEEDknobLO2 ()
ipc.control(65962, 2)
ipc.writeLvar("ASD_KNOB_XFUEL_EMB505", 1)
end
function XFEEDknobOFF ()
ipc.control(65962, 1)
ipc.writeLvar("ASD_KNOB_XFUEL_EMB505", 0)
end
function Sov1OPEN ()
ipc.writeLvar("ASD_SWITCH_SOV1_EMB505", 1)
end
function Sov1CLOSE ()
ipc.writeLvar("ASD_SWITCH_SOV1_EMB505", 0)
end
function Sov2OPEN ()
ipc.writeLvar("ASD_SWITCH_SOV2_EMB505", 1)
end
function Sov2CLOSE ()
ipc.writeLvar("ASD_SWITCH_SOV2_EMB505", 0)
end
function EltTEST ()
ipc.writeLvar("ASD_SWITCH_ELT_EMB100", 0)
end
function EltARMED ()
ipc.writeLvar("ASD_SWITCH_ELT_EMB100", 1)
ipc.writeLvar("ASD_SWITCH_ELT", 0)
end
function EltON ()
ipc.writeLvar("ASD_SWITCH_ELT_EMB100", 2)
ipc.writeLvar("ASD_SWITCH_ELT", 1)
end
function BeltsOFFON ()
ipc.writeLvar("ASD_SWITCH_SIGNS_OUTLET_EMB100", 0)
   if ipc.readLvar("BUFFER_P300_SEATBELTS") == 0 then
    ipc.writeLvar("BUFFER_P300_SEATBELTS", 1)
   else
    ipc.writeLvar("BUFFER_P300_SEATBELTS", 0)
    end
end
function BeltsON ()
ipc.writeLvar("ASD_SWITCH_SIGNS_OUTLET_EMB100", 1)
   if ipc.readLvar("BUFFER_P300_SEATBELTS") == 0 then
    ipc.writeLvar("BUFFER_P300_SEATBELTS", 1)
   else
    ipc.writeLvar("BUFFER_P300_SEATBELTS", 0)
   end
end
function PedBeltsOFF ()
ipc.writeLvar("ASD_SWITCH_SIGNS_OUTLET_EMB100", 2)
   if ipc.readLvar("BUFFER_P300_SEATBELTS") == 0 then
    ipc.writeLvar("BUFFER_P300_SEATBELTS", 1)
    else
    ipc.writeLvar("BUFFER_P300_SEAT5BELTS", 0)
   end
end
-- ## Engine Start Panel ###############
function EngFireShutoff1 ()
ipc.control(66494, 1)
ipc.control(66708, 11)
end
function EngFireShutoff2 ()
ipc.control(66495, 1)
ipc.control(66708, 22)
end
function FireBottleSwitchDisch ()
ipc.writeLvar("ASD_SWITCH_BOTTLE_ENG_FIRE_EMB100", 1)
end
function FireBottleSwitchOFF ()
ipc.writeLvar("ASD_SWITCH_BOTTLE_ENG_FIRE_EMB100", 0)
end
function TOconfigTEST ()
ipc.writeLvar("ASD_BTN_TO_CONFIG_EMB505", 1)
end
function TOconfigTESToff ()
ipc.writeLvar("BUFFER_P300_Take_OFF_OK", 0)
ipc.writeLvar("ASD_BTN_TO_CONFIG_EMB505", 0)
ipc.writeLvar("TO_CONFIG_EMB505_FLAPS", 0)
ipc.writeLvar("TO_CONFIG_EMB505_BRAKE", 0)
ipc.writeLvar("TO_CONFIG_EMB505_SPEEDBRAKE1", 0)
ipc.writeLvar("TO_CONFIG_EMB505_SPEEDBRAKE3", 0)
ipc.writeLvar("TO_CONFIG_EMB505_TRIM", 0)
end
function SpeedBrakeCLOSE ()
ipc.control(66065, 0)
ipc.writeLvar("ASD_SWITCH_EMB505_SPOILER", 0)
end
function SpeedBrakeOPEN ()
ipc.control(66064, 0)
ipc.writeLvar("ASD_SWITCH_EMB505_SPOILER", 1)
end
function ENG1StartknobRUN ()
ipc.control(65983, 0)
ipc.writeLvar("ASD_KNOB_ENG_START1_EBM100", 1)
end
function ENG1StartknobSTART ()
ipc.control(66300, 0)
end
function ENG1StartknobOFF ()
ipc.control(66531, 0)
ipc.writeLvar("ASD_KNOB_ENG_START1_EBM100", 0)
end
function ENG2StartknobRUN ()
   if ipc.readLvar("ASD_KNOB_ENG_START2_EBM100") == 0 then
    ipc.control(65988, 0)
    else

   end
ipc.writeLvar("ASD_KNOB_ENG_START2_EBM100", 1)
end
function ENG2StartknobSTART ()
ipc.control(65988, 0)
ipc.control(66301, 0)
end
function ENG2StartknobOFF ()
ipc.writeLvar("ASD_KNOB_ENG_START2_EBM100", 0)
ipc.control (66531, 0)
end
function IGN2auto ()
ipc.control(66717, 2)
ipc.writeLvar("ASD_SWITCH_IGNITION2_EMB100", 1)
end
function IGN2off ()
ipc.control(66717, 2)
ipc.writeLvar("ASD_SWITCH_IGNITION2_EMB100", 0)
end
function IGN1auto ()
ipc.control(66717, 1)
ipc.writeLvar("ASD_SWITCH_IGNITION1_EMB100", 1)
end
function IGN1off ()
ipc.control(66717, 1)
ipc.writeLvar("ASD_SWITCH_IGNITION1_EMB100", 0)
end
-- ## Pneumatic Panel ###############
function Bleed1AUTO ()
ipc.writeLvar("ASD_SWITCH_BLEED1_EMB505", 1)
end
function Bleed1OFF ()
ipc.writeLvar("ASD_SWITCH_BLEED1_EMB505", 0)
end
function Bleed2AUTO ()
ipc.writeLvar("ASD_SWITCH_BLEED2_EMB505", 1)
end
function Bleed2OFF ()
ipc.writeLvar("ASD_SWITCH_BLEED2_EMB505", 0)
end
function XBleedKnobAUTO ()
ipc.writeLvar("ASD_KNOB_XBLEED_EMB505", 1)
end
function XBleedKnobOFF ()
ipc.writeLvar("ASD_KNOB_XBLEED_EMB505", 0)
end
-- ## Autopilot Panel ###############
function FLCButtonON ()
        ipc.control(65816, 0)
        ipc.control(65804, 0)
        ipc.control(65807, 0)
        ipc.control(66093, 0)
        ipc.writeLvar("CUSTOM_AUTOPILOT_AIRSPEED_HOLD", 1)
        ipc.writeLvar("CUSTOM_AUTOPILOT_AIRSPEED_HOLD_ALT", 1)
end
function FLCButtonOFF ()
        ipc.control(65816, 0)
        ipc.control(65804, 0)
        ipc.control(65807, 0)
        ipc.control(66094, 0)
        ipc.writeLvar("CUSTOM+AUTOPILOT_AIRSPEED_HOLD", 0)
        ipc.writeLvar("CUSTOM_AUTOPILOT_AIRSPEED_HOLD_ALT", 0)
end
function TestAltBtn ()
         ipc.control(65726)
end
function VSWheelUP ()
       LVarSet1 = ipc.readLvar("CUSTOM_AP_VS_VAR")
       if LVarSet1 == 0 then
       ipc.writeLvar("CUSTOM_AP_VS_VAR", 357)
       else
       LVarSet2 = ipc.readLvar("CUSTOM_AP_VS_VAR") - 3
       ipc.writeLvar("CUSTOM_AP_VS_VAR", LVarSet2)
       end
       ipc.control(65808, 0)
       ipc.control(65894, 0)
end
function VSWheelDN ()
       LVarSet1 = ipc.readLvar("CUSTOM_AP_VS_VAR")
       if LVarSet1 == 357 then
       ipc.writeLvar("CUSTOM_AP_VS_VAR", 0)
       else
       LVarSet2 = ipc.readLvar("CUSTOM_AP_VS_VAR") + 3
       ipc.writeLvar("CUSTOM_AP_VS_VAR", LVarSet2)
       end
       ipc.control(65808, 0)
       ipc.control(65895, 0)
end
function VS_Hold ()
        ipc.control(65808, 0)
        ipc.control(65103, 0)
        ipc.control(66124, 0)
        ipc.control(66036, 0)
        ipc.writeLvar("ALT_VS_SEL_ON", 1)
        ipc.writeLvar("CUSTOM_AUTOPILOT_AIRSPEED_HOLD_ALT", 1)

end
function VS_Hold_Off ()
     ipc.writeLvar("ALT_VS_SEL_ON", 0)
     ipc.writeLvar("CUSTOM_AUTOPILOT_AIRSPEED_HOLD_ALT", 0)
     ipc.control(65816, 0)
     ipc.control(66104, 0)

end
function AltHoldBtnOn ()
        c = ipc.readUD(0x07D4) * 3.28084 / 65536
        ipc.control(66124,c)
        ipc.writeLvar("CUSTOM_AP_ALT_VAR_SET_ENGLISH", c)
        ipc.writeLvar("CUSTOM_AP_ATT_HOLD_ON", 1)
        ipc.control(65726,0)
        ipc.control(65807,0)
end
function AltHoldBtnOff ()
        ipc.control(65726)
        ipc.control(65812)
        ipc.control(65807)
        ipc.writeLvar("CUSTOM_AP_ATT_HOLD_ON", 0)
end
function Alt_Step_100 ()
ipc.writeLvar("H850XPAltwheelPUSHTOGGLE", 0)
end
function Alt_Step_1000 ()
ipc.writeLvar("H850XPAltwheelPUSHTOGGLE", 1)

end
function AltSelPlus ()
        if ipc.readLvar("ALT_ARM_SEL_ON_KNOB") == 0 then
        ipc.writeLvar("ALT_ARM_SEL_ON_KNOB", 1)
        end
        if ipc.readLvar("H850XPAltwheelPUSHTOGGLE") == 0 then
        AddVar = 100
    else
        AddVar = 1000
    end
    LVarSet = "CUSTOM_AP_ALT_VAR_SET_ENGLISH"
    LVarGet = ipc.readLvar(LVarSet)
    if LVarGet + AddVar <= 41000 then
        ipc.writeLvar(LVarSet, LVarGet + AddVar)
    else
        ipc.writeLvar(LVarSet, 41000)
    end
end
function AltSelMinus ()
        if ipc.readLvar("ALT_ARM_SEL_ON_KNOB") == 0 then
        ipc.writeLvar("ALT_ARM_SEL_ON_KNOB", 1)
        end
        if ipc.readLvar("H850XPAltwheelPUSHTOGGLE") == 0 then
        AddVar = 100
    else
        AddVar = 1000
    end
    LVarSet = "CUSTOM_AP_ALT_VAR_SET_ENGLISH"
    LVarGet = ipc.readLvar(LVarSet)
    if LVarGet - AddVar >= 100 then
        ipc.writeLvar(LVarSet, LVarGet - AddVar)
    else
        ipc.writeLvar(LVarSet, 100)
    end
end
function FDButtonon ()
       ipc.writeLvar("AUTOPILOT MASTER", 1)
       ipc.control(66288, 1)
end
function FDButtonoff ()
       ipc.writeLvar("AUTOPILOT MASTER", 0)
       ipc.control(66288, 1)
end
function NavHoldOn ()
       ipc.control(65811, 1)
       ipc.writeLvar("PUSH_BTN_PC12_KMC321_NAV", 1)
       ipc.writeLvar("PUSH_BTN_PC12_KMC321_NAV", 0)
end
function NavHoldOff ()
       ipc.control(65819, 1)
       ipc.writeLvar("PUSH_BTN_PC12_KMC321_NAV", 1)
       ipc.writeLvar("PUSH_BTN_PC12_KMC321_NAV", 0)
end
function APRButtonOn ()
       ipc.control(65806, 1)
       ipc.writeLvar("PUSH_BTN_PC12_KMC321_APR", 1)
       ipc.writeLvar("PUSH_BTN_PC12_KMC321_APR", 0)
end
function APRButtonOff ()
       ipc.control(65814)
       ipc.writeLvar("PUSH_BTN_PC12_KMC321_APR", 1)
       ipc.writeLvar("PUSH_BTN_PC12_KMC321_APR", 0)

end
function CRS1_Encoder_Incr ()
       LVarSet1 = ipc.readLvar("CUSTOM_AP_CRS1_KNOB")
       if LVarSet1 == 354 then
       ipc.writeLvar("CUSTOM_AP_CRS1_KNOB", 0)
       else
       c = ipc.readLvar("CUSTOM_AP_CRS1_KNOB")

       LVarSet2 = ipc.readLvar("VARKNOB_MFD_CRS1_SR22")
       if LVarSet2 == 354 then
       ipc.writeLvar("VARKNOB_MFD_CRS1_SR22", 0)
       else
       b = ipc.readLvar("VARKNOB_MFD_CRS1_SR22")
end
end
       ipc.writeLvar("CUSTOM_AP_CRS1_KNOB", (c+6))
       ipc.writeLvar("VARKNOB_MFD_CRS1_SR22", (b+6))
-- ## Overhead Panel ###############
end
function lightsemeroff ()
  ipc.writeLvar("ASD_SWITCH_EMER_LIGHT_EMB500", 0)
end
function lightsemerarm ()
  ipc.writeLvar("ASD_SWITCH_EMER_LIGHT_EMB500", 1)
end
function lightsemeron ()
  ipc.writeLvar("ASD_SWITCH_EMER_LIGHT_EMB500", 2)
end
function taxi_ldg_light_off ()
  ipc.writeLvar("ASD_SWITCH_LANDING_TAXI_EMB500", 0)
end
function taxi_light ()
  ipc.writeLvar("ASD_SWITCH_LANDING_TAXI_EMB500", 1)
  ipc.control(66240, 0)
  ipc.control(66060, 0)
end
function ldg_light ()
  ipc.writeLvar("ASD_SWITCH_LANDING_TAXI_EMB500", 2)
  ipc.control(66059, 0)
  ipc.control(66240, 0)
end


Normalement ce code est fait pour utiliser un MCP Combo moi je voudrai juste lier la partie autopilote avec mon code sioc
soit par les variables, soit par les évents. Je n'arrive pas à trouver comment faire :
Mon code SIOC pour le moment c'est ca :
Code: Tout sélectionner
Var 0046, name ALT_SEL, Link FSUIPC_INOUT, Offset $07D4, Length 4     // sélection Altitude
   


Var 0506, name RO_ALT_SEL, Link IOCARD_encoder, input 60, Aceleration 2, Type 2    // encodeur sélection altitude
     {

        l0 = &RO_ALT_SEL * -1
        &CALC_CODALT = &CALC_CODALT + L0

     }



    Var 0510, name CALC_CODALT, link subrutine  //  calcul du codeur altimétrique
    {
        if &CALC_CODALT > 300
         {
           &CALC_CODALT = 300
         }
        if &CALC_CODALT < 0
         {
           &CALC_CODALT = 0
         }
         l0 = &CALC_CODALT * 1997537
         &ALT_SEL = l0
    }


Var 0075, name SW_Lua, Link IOCARD_SW, Input 181, Type P
{
  IF &SW_Lua = 1
  {
    &FO_JoyStick64 = CHANGEBIT 9 ,&SW_Lua
  }
  ELSE
  {
    &FO_JoyStick64 = CHANGEBIT 9 ,&SW_Lua
  }
}

Var 1000, name FO_JoyStick64, Link FSUIPC_OUT, Offset $3340, Length 4

Var 1002, name FO_JoyStick65, Link FSUIPC_OUT, Offset $3344, Length 4

Var 1010, name fs_event, Link IOCP, Offset 3999


merci affiche pour ton aide
Denis
Image
P8P67 - Core I7 2600K - 16GO - GTX560 2 GO - WIN 7 64 bits - P3D et XP11 - SIOC - Airmanager
F-DEUZ
 
Messages: 213
Inscription: 14/04/11
Localisation: Manosque 04

Re: FSUIPC - LUA et encodeur CTS288

Messagede tabar57 » Lun 11 Nov 2019 11:05

Bonjour Denis,

A l'examen de ton code .lua complet, il s'avère qu'il manque quelque chose d'essentiel ( à la fin du code ) à savoir les évents qui lance les fonctions, je ne les voit pas.
Comme le souligne Michel ( ci dessous, car on a répondu en même temps), ce code est fait pour fonctionner avec Fsuipc et non pas avec SIOC, donc avec des boutons joysticks et non pas avec des variables sioc et il va falloir changer çà.

Pour rappel : dans un script Lua il y a en premier les fonctions et à la fin du script les evenements qui lance les fonctions
exemple : je veux qu'un voyant du cockpit virtuel (qui est une Lvar) soit allumé ou éteint en correspondance avec un offset fsuipc.

Il va falloir que je dise à Lua , guette le changement de l'offset ou de la variable et s'il change tu lance la fonction X qui va mettre la Lvar en correspondance avec la valeur de l'offset.
exemple : event.offset("66D2","UB","Eng_Ice_van") dans cet exemple si l'offset $66d2 change de valeur cela va lancer la fonction Eng_ice_van
Dans ton cas : pour le altsel c'est un peu plus compliqué car il va falloir guetter un changement de l'encodeur .
Il y a ce code dans Lua
Code: Tout sélectionner
function AltSelPlus ()
        if ipc.readLvar("ALT_ARM_SEL_ON_KNOB") == 0 then
        ipc.writeLvar("ALT_ARM_SEL_ON_KNOB", 1)
        end
        if ipc.readLvar("H850XPAltwheelPUSHTOGGLE") == 0 then
        AddVar = 100
    else
        AddVar = 1000
    end
    LVarSet = "CUSTOM_AP_ALT_VAR_SET_ENGLISH"
    LVarGet = ipc.readLvar(LVarSet)
    if LVarGet + AddVar <= 41000 then
        ipc.writeLvar(LVarSet, LVarGet + AddVar)
    else
        ipc.writeLvar(LVarSet, 41000)
    end
end
function AltSelMinus ()
        if ipc.readLvar("ALT_ARM_SEL_ON_KNOB") == 0 then
        ipc.writeLvar("ALT_ARM_SEL_ON_KNOB", 1)
        end
        if ipc.readLvar("H850XPAltwheelPUSHTOGGLE") == 0 then
        AddVar = 100
    else
        AddVar = 1000
    end
    LVarSet = "CUSTOM_AP_ALT_VAR_SET_ENGLISH"
    LVarGet = ipc.readLvar(LVarSet)
    if LVarGet - AddVar >= 100 then
        ipc.writeLvar(LVarSet, LVarGet - AddVar)
    else
        ipc.writeLvar(LVarSet, 100)
    end
end


Et donc il va falloir lancer ces 2 fonctions quand la valeur de l'encodeur va changer, si l'encodeur est tourné à droite, il faut lancer la fonction AltSelPlus(), sinon si on le tourne à gauche lancer AltSelMinus()

Je regarde un peu plus et je te réponds le plus vite possible

Bernard
Dernière édition par tabar57 le Lun 11 Nov 2019 11:50, édité 2 fois.
Mon blog de construction : http://tabar57.blog4ever.com
Hémicockpit de Beechcraft B200 ( de FlightOne ) P3DV4.5 et 2 PC en réseau W7 64 bits et W10, cartes OC et FDbus, vibreur et yoke rdf de BFFsimulation, météo réelle asp4
Avatar de l’utilisateur
tabar57
 
Messages: 3651
Inscription: 29/12/10
Localisation: Dans ma cabine en Lorraine

Re: FSUIPC - LUA et encodeur CTS288

Messagede gardan » Lun 11 Nov 2019 11:12

Bonjour,
C'est normal que ça ne fonctionne pas, tu n'as aucune instruction qui appelle les fonctions de Lua.

Il te manques dans FSUIPC.ini
[LuaFiles]
1=Lua xxxx le nom de ton fivhier Lua

[Buttons] extrait de Mon fichier
82=P66,13,CL1:R,36 ; spd inc fast -{Lua xxxxx}-
83=P66,14,CL1:R,337 ; spd dec fast -{Lua xxxxx}-
84=P66,15,CL1:R,323 ; hdg inc slow -{Lua xxxxx}--
85=P66,16,CL1:R,24 ; 24hdg dec slow -{Lua xxxxx}-
86=P66,17,CL1:R,25 ; hdg inc fast -{Lua xxxxx}-

et à la fin de ton fichier Lua les exemples suivants :

if ipcPARAM == 36 then (ligne 82 de [Buttons])
nom de la fonction
end

et ainsi de suite ......

Michel
Avatar de l’utilisateur
gardan
 
Messages: 161
Inscription: 17/05/09
Localisation: TRETS (13)

Re: FSUIPC - LUA et encodeur CTS288

Messagede F-DEUZ » Lun 11 Nov 2019 12:07

Merci Bernard - Bonjour Michel
Houlà

Je commence à comprendre.
En plus mon fichier contenant les boutons est dans un profil séparé donc n'apparait pas dans fsuipc. ini
Code: Tout sélectionner

[Buttons]
0=PC,1,C65752,0    -{PARKING_BRAKES}-
3=PB,0,C65792,1    -{AUTOPILOT_ON}-
5=UB,0,C65792,0    -{AUTOPILOT_ON}-
6=PB,1,C65700,1    -{GEAR_SET}-
7=PB,17,K122,8    -{Key press: F11}-
8=PB,15,K120,8    -{Key press: F9}-
9=PB,19,K123,8    -{Key press: F12}-
10=PB,14,K121,8    -{Key press: F10}-
11=PB,2,C65792,1    -{AUTOPILOT_ON}-
12=PB,3,C65791,1    -{AUTOPILOT_OFF}-
16=PB,21,CM1:1,1    -{Macro ERROR: unknown Macro!: <unknown macro> !!!}-
17=PB,4,C65607,1    -{ELEV_TRIM_DN}-
18=PB,7,C66277,1    -{AILERON_TRIM_RIGHT}-
19=PB,6,C66276,1    -{AILERON_TRIM_LEFT}-
20=PB,5,C65615,1    -{ELEV_TRIM_UP}-
21=PB,20,C65752,1    -{PARKING_BRAKES}-
24=UB,21,CM1:1,0    -{Macro ERROR: unknown Macro!: <unknown macro> !!!}-
25=P64,0,CM2:15,1    -{Macro ERROR: unknown Macro!: <unknown macro> !!!}-
26=R64,1,CM1:17,1    -{Macro ERROR: unknown Macro!: <unknown macro> !!!}-
27=U64,1,CM1:17,0    -{Macro ERROR: unknown Macro!: <unknown macro> !!!}-
28=U64,0,CM2:15,0    -{Macro ERROR: unknown Macro!: <unknown macro> !!!}-
29=R64,2,CM1:18,1    -{Macro ERROR: unknown Macro!: <unknown macro> !!!}-
30=U64,2,CM1:18,0    -{Macro ERROR: unknown Macro!: <unknown macro> !!!}-
31=R64,3,CM1:19,1    -{Macro ERROR: unknown Macro!: <unknown macro> !!!}-
32=U64,3,CM1:19,0    -{Macro ERROR: unknown Macro!: <unknown macro> !!!}-
33=P64,4,C65726,1    -{AP_ALT_HOLD}-
34=U64,4,C65726,0    -{AP_ALT_HOLD}-
35=P64,5,C65725,1    -{AP_HDG_HOLD}-
37=P64,6,C65729,1    -{AP_NAV1_HOLD}-
38=U64,6,C65729,0    -{AP_NAV1_HOLD}-
39=P64,7,C65724,1    -{AP_APR_HOLD}-
40=U64,7,C65724,0    -{AP_APR_HOLD}-
41=P64,8,C65728,1    -{AP_BC_HOLD}-
42=U64,8,C65728,0    -{AP_BC_HOLD}-
43=U64,5,C65725,0    -{AP_HDG_HOLD}-
45=P64,9,CL1:R,0    -{Lua ATR42}-
46=P65,0,CL1:R,0    -{Lua ATR42}-
47=UB,20,C65752,0    -{PARKING_BRAKES}-

les Macro error c'est normal, j'ai déplacé le fichier mcro temporairement.

J'en déduit que
45=P64 (n°joystick virtuel),9(n° de bouton),CL1(??):R (encodeur sens 1),0 (là j'ai zéro car je n'ai pas mis de commande mais je vois pas à quoi correspond les 36 - 337 - ect de ton fichier) -{Lua ATR42}- (c'est mon fichier LUA

Le fichier LUA que j'ai récupéré est un module de linda destiné à utiliser un MCP. Donc je me doute qu'il doit falloir le modifier.
Je vais jeter un oeil dans la doc fsuic4 en français (je pige pas grand chose en anglais) pour essayer de mieux comprendre les paramètres boutons.
Merci encore
Denis
Image
P8P67 - Core I7 2600K - 16GO - GTX560 2 GO - WIN 7 64 bits - P3D et XP11 - SIOC - Airmanager
F-DEUZ
 
Messages: 213
Inscription: 14/04/11
Localisation: Manosque 04

Suivante

Retourner vers Liaisons entreFS et les autres logiciels





Qui est en ligne

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