TARGET : appel 2 macros

Salle dedieé aux péripheriques : Joystick, palloniers, Track-Ir

Topic author
dureiken
Jeune Pilote
Jeune Pilote
Messages : 1769
Inscription : 15 janvier 2006

TARGET : appel 2 macros

#1

Message par dureiken »

Salut les experts de TARGET

je voulais savoir s'il était possible d'appeler 2 macros avec une seule touche

j'ai ceci dans mon .ttm


define LDDI_1 CHAIN(D(50),PULSE+DX101, D(50))
define LDDI_2 CHAIN(D(50),PULSE+DX102, D(50))



et je voudrai appeler les 2 en cliquant sur S1 par exemple, possible ?

J'ai utilisé des define, mais si vous avez d'autres solutions je prends

Merci beaucoup
Avatar de l’utilisateur

BeR1
Apprenti-Mécano
Apprenti-Mécano
Messages : 350
Inscription : 08 octobre 2015

Re: TARGET : appel 2 macros

#2

Message par BeR1 »

Hello,
La solution que j'utilise est de définir une fonction qui contient ce que tu veux (ici l'appui de 2 touches) qui est appelée depuis l'affectation de l’appui sur ton bouton.
Exemple :
La fonction à définir en début de script
int MaFonction( ) {
ActKey(PULSE+KEYON+'f');
ActKey(PULSE+KEYON+L_SHIFT+'a');
....
}

Et l'appel à adapter exactement à ton cas de gestion de bouton
MapKeyIOUMD(&Throttle, LTB,EXEC(...., EXEC("MaFonction();") , .........);
i15-20900PQ NTM-2080TI Z990 256To RAMes

Topic author
dureiken
Jeune Pilote
Jeune Pilote
Messages : 1769
Inscription : 15 janvier 2006

Re: TARGET : appel 2 macros

#3

Message par dureiken »

BeR1 a écrit :
lun. avr. 27, 2020 4:20 pm
Hello,
La solution que j'utilise est de définir une fonction qui contient ce que tu veux (ici l'appui de 2 touches) qui est appelée depuis l'affectation de l’appui sur ton bouton.
Exemple :
La fonction à définir en début de script
int MaFonction( ) {
ActKey(PULSE+KEYON+'f');
ActKey(PULSE+KEYON+L_SHIFT+'a');
....
}

Et l'appel à adapter exactement à ton cas de gestion de bouton
MapKeyIOUMD(&Throttle, LTB,EXEC(...., EXEC("MaFonction();") , .........);
je vais tester ça,

et tu sais si on peut faire un truc du genre : int L_DDI(i)( ) {CHAIN(D(50),PULSE+DX10(i), D(50));}

ca m'évite d'écrire 20 fois la meme fonction

Merci

Edit

j'ai mis :

Code : Tout sélectionner

int L_DDI1( ) {CHAIN(D(50),PULSE+DX101, D(50));}
et

Code : Tout sélectionner

MapKeyIOUMD(&Joystick, TG1, EXEC("L_DDI1();"), EXEC("L_DDI1();"), EXEC("L_DDI1();"), EXEC("L_DDI1();"), EXEC("L_DDI1();"), EXEC("L_DDI1();"));
mais la fonction n'a pas l'air appelée, une idée ? merci
Avatar de l’utilisateur

BeR1
Apprenti-Mécano
Apprenti-Mécano
Messages : 350
Inscription : 08 octobre 2015

Re: TARGET : appel 2 macros

#4

Message par BeR1 »

dureiken a écrit :
lun. avr. 27, 2020 5:04 pm
et tu sais si on peut faire un truc du genre : int L_DDI(i)( ) {CHAIN(D(50),PULSE+DX10(i), D(50));}
On ne peut pas, car CHAIN ne peut être qu' appelé à l’intérieur d'un MapKey
Voici un exemple d'une de mes fonction contenant un CHAIN (declenchement sur un appui d'une sequence de flares paramétrée avec des variables globales):
int FlareProgram5()
{
int Chaff_Flare_program_1 = CHAIN(PULSE+DEL,D(IntervalFlare),PULSE+DEL,D(IntervalFlare),PULSE+DEL,D(IntervalFlare),PULSE+DEL,D(IntervalFlare),PULSE+DEL); //
ActKey(KEYON+Chaff_Flare_program_1);
}

dureiken a écrit :
lun. avr. 27, 2020 5:04 pm
et tu sais si on peut faire un truc du genre : int L_DDI(i)( ) {CHAIN(D(50),PULSE+DX10(i), D(50));}
Oui, tout à fait, en tenant compte bien sur de mon commentaire précédent, mais justement, l'interet d'une fonction est aussi de recevoir des parametres et de les utiliser.
Par contre le language target est typé, c'est à dire qu'il faut définir le type de variable passée en parametre
Dans ton exemple cela donne ceci, mais fais très attention à la syntaxe (parenthèse, crochet, accolade .... !!!!!) :
int L_DDI( int i) {CHAIN(D(50),PULSE+DX10(i), D(50));}
i15-20900PQ NTM-2080TI Z990 256To RAMes
Répondre

Revenir à « salle: Periphériques: Hotas, Joysticks, Track-IR »