ADF et SIOC

Byteler

PILOTE PRIVE
Messages
133
Réactions
7
Points
27
Bonsoir,
Je dispose de 2 ADF OC.
Alors voilà, j’ai découvert SIOC et je dois avouer que ça me paraît plutôt simple. Cependant, lorsque j’essai de coder l’algorithme suivant, c’est le bazar :

Lorsque l’encoder est tourné

Si le chiffre des unités = 9 alors
Augmenter le chiffre des décimales de 1
Augmenter le chiffre des unités de 1
Sinon
Augmenter le chiffre des décimales de 1
Fin

A chaque fois que je tourne l’encoder je vois bien les décimales évoluer mais jamais les unités. J’ai utilisé les variables IOCP dans l’offset 1000. Je réinitialise à -1 entre 2 commandes que j’ai déclaré comme suit : Var Vxxxx, name Commands0, Link IOCP´ offset 1000

j’ai même déclaré plusieurs variables commandes car j’ai cru comprendre que la répétition n’était pas idéal. Bref, chaque chiffre étant commandé par un offset différent, je prévois de modifier les unités et décimales par l’encodeur du dessus et les 1000, 100 et 10 par l’encodeur du dessous.

Tous les autres boutons sont programmés et opérationnels sauf les encodeurs.

Quelqu’un a-t-il une idée ?
 
Et voici, à l'état d'ébauche mais opérationnel pour tout le reste sauf les encodeurs :

Code:
// *****************************************************************************
// * Opencockpits ADF  -     By Cyrille SANS
// *****************************************************************************
// * FileName : CS_ADF1.txt


// * DEVICE *
// ADF1 : 9
Var 0000, value 0
{
    &9D_BRIGHT = 121
}

// DIGITS
Var 100, name 9D_ACTIVE, Link IOCARD_DISPLAY, DEVICE 9, Digit 0, Numbers 5  // #SC#ADF1.txt#
Var 1101, name 9D_ACT_PT1, LINK IOCARD_DISPLAY, DEVICE 9, DIGIT 0, Numbers 1  // #SC#ADF1.txt#
Var 1102, name 9D_ACT_1, LINK IOCARD_DISPLAY, DEVICE 9, DIGIT 1, Numbers 1  // #SC#ADF1.txt#
Var 1103, name 9D_ACT_10, LINK IOCARD_DISPLAY, DEVICE 9, DIGIT 2, Numbers 1  // #SC#ADF1.txt#
Var 1104, name 9D_ACT_100, LINK IOCARD_DISPLAY, DEVICE 9, DIGIT 3, Numbers 1  // #SC#ADF1.txt#
Var 1105, name 9D_ACT_1000, LINK IOCARD_DISPLAY, DEVICE 9, DIGIT 4, Numbers 1  // #SC#ADF1.txt#
Var 102, name 9D_STANDBY, Link IOCARD_DISPLAY, DEVICE 9, Digit 5, Numbers 5  // #SC#ADF1.txt#
Var 1121, name 9D_STB_PT1, LINK IOCARD_DISPLAY, DEVICE 9, DIGIT 5, Numbers 1  // #SC#ADF1.txt#
Var 1122, name 9D_STB_1, LINK IOCARD_DISPLAY, DEVICE 9, DIGIT 6, Numbers 1  // #SC#ADF1.txt#
Var 1123, name 9D_STB_10, LINK IOCARD_DISPLAY, DEVICE 9, DIGIT 7, Numbers 1  // #SC#ADF1.txt#
Var 1124, name 9D_STB_100, LINK IOCARD_DISPLAY, DEVICE 9, DIGIT 8, Numbers 1  // #SC#ADF1.txt#
Var 1125, name 9D_STB_1000, LINK IOCARD_DISPLAY, DEVICE 9, DIGIT 9, Numbers 1  // #SC#ADF1.txt#
Var 104, name 9D_BRIGHT, Link IOCARD_DISPLAY, DEVICE 9, Digit 16, Numbers 3  // #SC#ADF1.txt# 

Var 8101, name 9ADF_ACTPT1, LINK IOCP, Offset 659
{
    CALL &9ADF_Dsp
}
Var 8102, name 9ADF_ACT1, LINK IOCP, Offset 660
{
    CALL &9ADF_Dsp
}
Var 8103, name 9ADF_ACT10, LINK IOCP, Offset 661
{
    CALL &9ADF_Dsp
}
Var 8104, name 9ADF_ACT100, LINK IOCP, Offset 662
{
    CALL &9ADF_Dsp
}
Var 8105, name 9ADF_ACT1000, LINK IOCP, Offset 663
{
    CALL &9ADF_Dsp
}

Var 8121, name 9ADF_STBPT1, LINK IOCP, Offset 666
{
    CALL &9ADF_Dsp
}
Var 8122, name 9ADF_STB1, LINK IOCP, Offset 667
{
    CALL &9ADF_Dsp
}
Var 8123, name 9ADF_STB10, LINK IOCP, Offset 668
{
    CALL &9ADF_Dsp
}
Var 8124, name 9ADF_STB100, LINK IOCP, Offset 669
{
    CALL &9ADF_Dsp
}
Var 8125, name 9ADF_STB1000, LINK IOCP, Offset 670
{
    CALL &9ADF_Dsp
}

Var 9999, name 9ADF_Dsp, LINK SUBRUTINE
{
    IF &9ADF_SWITCH = 0
    {
        &9D_ACT_PT1 = &9ADF_STBPT1
        &9D_STB_PT1 = &9ADF_ACTPT1
        &9D_ACT_1 = &9ADF_STB1
        &9D_STB_1 = &9ADF_ACT1
        &9D_ACT_10 = &9ADF_STB10
        &9D_STB_10 = &9ADF_ACT10
        &9D_ACT_100 = &9ADF_STB100
        &9D_STB_100 = &9ADF_ACT100
        &9D_ACT_1000 = &9ADF_STB1000
        &9D_STB_1000 = &9ADF_ACT1000
    }
    ELSE
    {
        &9D_ACT_PT1 = &9ADF_ACTPT1
        &9D_STB_PT1 = &9ADF_STBPT1
        &9D_ACT_1 = &9ADF_ACT1
        &9D_STB_1 = &9ADF_STB1
        &9D_ACT_10 = &9ADF_ACT10
        &9D_STB_10 = &9ADF_STB10
        &9D_ACT_100 = &9ADF_ACT100
        &9D_STB_100 = &9ADF_STB100
        &9D_ACT_1000 = &9ADF_ACT1000
        &9D_STB_1000 = &9ADF_STB1000
    }
}


// OUTPUTS
Var 200, name 9DECIMAL_A, Link IOCARD_OUT, DEVICE 9, Output 20  // #SC#ADF1.txt#
Var 202, name 9DECIMAL_S, Link IOCARD_OUT, DEVICE 9, Output 21  // #SC#ADF1.txt#
Var 204, name 9ACT_ADF, Link IOCARD_OUT, DEVICE 9, Output 22  // #SC#ADF1.txt#
Var 206, name 9ACT_ANT, Link IOCARD_OUT, DEVICE 9, Output 23  // #SC#ADF1.txt#
Var 208, name 9STB_ANT, Link IOCARD_OUT, DEVICE 9, Output 24  // #SC#ADF1.txt#
Var 210, name 9STB_ADF, Link IOCARD_OUT, DEVICE 9, Output 25  // #SC#ADF1.txt#


// ROTARY ENCODERS
Var 300, name 9E_INT, Link IOCARD_ENCODER, DEVICE 9, Input 0, Aceleration 1, Type 2  // #SC#ADF1.txt#

Var 302, name 9E_DEC, Link IOCARD_ENCODER, DEVICE 9, Input 4, Aceleration 1, Type 2  // #SC#ADF1.txt#
{

    IF &9ADF_SWITCH = 1
    {
        &9ADFcommands1 = 876
        IF &9STB_ADF = 0
        {
            &9ADFcommands2 = 874
        }
    }
    ELSE
    {
        &9ADFcommands3 = 884               
        IF &9STB_ADF = 0
        {
            &9ADFcommands2 = 882
        }
   
    }
}
// SWITCHES
Var 400, name 9I_TFR, Link IOCARD_SW, DEVICE 9, Input 6  // #SC#ADF1.txt#
{
    IF &9I_TFR = 1
    {
        IF &9ADF_SWITCH =  0
        {
        &9ADFcommands0 = 894
        &9ADFcommands0 = -1
        }
        ELSE
        {
        &9ADFcommands0 = 893
        &9ADFcommands0 = -1
        }
    }
}
Var 402, name 9I_ANT, Link IOCARD_SW, DEVICE 9, Input 2  // #SC#ADF1.txt#
{
    IF &9I_ANT = 0
    {
        &9ADFcommands0 = 887
        &9ADFCommands0 = -1
        &9ACT_ANT = 0
        &9ACT_ADF = 1
    }
    ELSE
    {
        &9ADFcommands0 = 888
        &9ADFCommands0 = -1
        &9ACT_ANT = 1
        &9ACT_ADF = 0
    }
}
Var 404, name 9I_TONE, Link IOCARD_SW, DEVICE 9, Input 7  // #SC#ADF1.txt#
{
    IF &9I_TONE = 0
    {
    &9ADFcommands0 = 891
    &9ADFCommands0 = -1
    }
    ELSE
    {
    &9ADFcommands0 = 890
    &9ADFCommands0 = -1
    }
}
Var 8000, name 9ADF_SWITCH,  Link IOCP, Offset 664
Var 8001, name 9ADF_LPOINT, LINK IOCP, Offset 658
{
    &9DECIMAL_A = &9ADF_LPOINT
}
Var 8002, name 9ADF_RPOINT, LINK IOCP, Offset 665
{
    &9DECIMAL_S = &9ADF_RPOINT
}
Var 9000, name 9ADFcommands0, Link IOCP, Offset 1000     // Send commands
Var 9001, name 9ADFcommands1, Link IOCP, Offset 1000     // Send commands
Var 9002, name 9ADFcommands2, Link IOCP, Offset 1000     // Send commands
Var 9003, name 9ADFcommands3, Link IOCP, Offset 1000     // Send commands
Var 9004, name 9ADFcommands4, Link IOCP, Offset 1000     // Send commands
Var 9005, name 9ADFcommands5, Link IOCP, Offset 1000     // Send commands
Var 9006, name 9ADFcommands6, Link IOCP, Offset 1000     // Send commands
 
Un peu d'explications :

La subrutine sert juste à maintenir à jour les afficheurs lorsque les fréquences changent ou qu'on inverse actif et standby. Pour le reste si ça n'est pas clair, après tout je débute en SIOC, n'hésitez pas.
 
Je n'ai peu être pas compris l'objectif de départ ?
Pourquoi vouloir gérer les digits un par un ?
Tu ne peux pas créer un seul offset que tu incrémentes/décrémentes ?

Fabien
 
Déjà première remarque tu ne fais aucune action lorsque tu bouges la valeur de ton encodeur 9E_INT en var 300 donc je ne vois pas comment tu peux incrémenter les unités.

Apres comme dit Fabien quel est le but de ce script, le point d'entrée et le point de sortie.
Sur quel Add on l'utilises tu ?
A quoi correspondent les commandes 876, 874, ... ?
 
Bonjour,

L'encodeur 9E_INT n'est effectivement pas encore paramétré. Je n'ai fait que tester sur l'autre encodeur (mon script est encore une ébauche).

Je l'utilise sur l'ADD ON IFLY 737
Les commandes 876, 874... sont les commandes contenus dans l'OFFSET 1000 d'IOCP.

Mais du coup, c'est résolu. En effet, voici ce que j'ai fait. Les modules USB OC sont P&P. Donc, ils fonctionnent avec P3D (il suffit d'ouvrir, en plus de SIOC), IOCModule.exe qui va s'interfacer directement avec P3D. Par contre, il manquait les fonctionnalités liées aux boutons de l'ADF et aux boutons du transponder. L'affichage étant géré par le IOCMODULES.exe, j'ai juste refais un script complémentaire pour gérer les boutons et tout fonctionne maintenant avec un script qui reprend les 2 ADF et le transpondeur juste sur la partie SWITCH.

Donc, merci à vous, je considère ce post comme résolu.
 
Retour
Haut