SCRIPTS TARGET TM WARTHOG etc

Salle dedieé aux péripheriques : Joystick, palloniers, Track-Ir
Avatar de l’utilisateur

dimebug
Pilote d'essais
Pilote d'essais
Messages : 6957
Inscription : 18 août 2001

#76

Message par dimebug »

moi je recherche quelqu'un pour faire joujou avec Target et le LUA de DCS A-10c. J'ai reussi a extraire des données de FC2, a les afficher dans le output window de Target, mais sous A-10, mon LUA donne rien du tout, et le lua , c'est pas mon truc !
Image Dresseur de cochon (sauvage)
Avatar de l’utilisateur

Topic author
hellfrog
Messages : 5117
Inscription : 22 août 2008

script & boutons souris ?

#77

Message par hellfrog »

j'ai cherché mais pas trouvé... et ça me surprend si ça n'est pas possible parce que ça existait dans foxy...

peut-on et comment faire pour émuler les boutons souris gauche droit et centre dans Target script ?
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC] (\_/) (_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")
[/align]
Avatar de l’utilisateur

dimebug
Pilote d'essais
Pilote d'essais
Messages : 6957
Inscription : 18 août 2001

#78

Message par dimebug »

MapKey(&Joystick, S1, PULSE+MOUSE_RIGHT);

MapKey(&Joystick, H4P, PULSE+MOUSE_CENTER);

et enfin MOUSE_LEFT

<en utilisant le bouton view script de la GUI, tu trouvais ça en 5 secondes :-)
Image Dresseur de cochon (sauvage)
Avatar de l’utilisateur

Topic author
hellfrog
Messages : 5117
Inscription : 22 août 2008

#79

Message par hellfrog »

pas pensé...:sweatdrop

merci d'aider les handicapés du neurone ! :sweatdrop
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC] (\_/) (_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")
[/align]
Avatar de l’utilisateur

Topic author
hellfrog
Messages : 5117
Inscription : 22 août 2008

probleme compilation script

#80

Message par hellfrog »

je comprends pas pourquoi il renvoie une erreur :

" struct field expected "

avec ces deux lignes :

MapKey(&RMFD, OSB01, CHAIN( LOCK+DOWN+KP., DOWN+KP8, LOCK));
MapKey(&RMFD, OSB02, CHAIN( LOCK+UP+KP8, UP+KP., LOCK));
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC] (\_/) (_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")
[/align]
Avatar de l’utilisateur

Topic author
hellfrog
Messages : 5117
Inscription : 22 août 2008

Problèmes programmation des LEDs

#81

Message par hellfrog »

en faisant des essais de gestion des LEDs j'ai cette ligne qui s'exécute nickel

MapKey(&LMFD, OSB02, CHAIN( LED(&LMFD, LED_ONOFF, LED_CURRENT+LED1), D(250), LED(&LMFD, LED_INTENSITY, 255), D(250), LED(&LMFD, LED_INTENSITY, 50), D(), LED(&LMFD, LED_ONOFF, LED_CURRENT-LED1)));

mais par contre celle-là me revoie l'erreur

Runtime Error: Symbol not found: LED_ONOFF in main ( line 58 in _LEDs.tmc )
ou encore
Runtime Error: Symbol not found: LED_INTENSITY in main ( line 59 in _LEDs.tmc ) (si on supprime la première partie)

NB pas d'erreur à la compilation et le script se lance EDIT : erreur qui persiste malgrés réinstall Target

ligne en cause :

MapKey(&LMFD, OSB01,CHAIN( LED(&Throttle, LED_ONOFF, LED_CURRENT+LED5), D(250), LED(&Throttle, LED_INTENSITY, 0)));


Target 1.0.11.304 et firmwares : dernières versions


Question : est-ce un bug ?

On pourrait programmer avec script les Leds des MFDs mais pas de la throttle ?

je dis ça parce que l'equivalent dans Target GUI s'exécute mais ne marche pas non plus : aucune action sur la throttle !! EDIT : ça remarche après réinstall de Target... le fichier hid.tmh n'était pas à jour ???!!!
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC] (\_/) (_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")
[/align]
Avatar de l’utilisateur

Topic author
hellfrog
Messages : 5117
Inscription : 22 août 2008

#82

Message par hellfrog »

Encore + bizarrre : on dirait que c'est de pire en pire !!!

messages d'erreurs à l'exécution du script de la doc :

Compile Succeeded.
Physical USB HID devices managed by script!
Currently plugged USB HID devices[4]:
1: "Joystick - HOTAS Warthog" - "USB\VID_044F&PID_0402&REV_0100"
2: "F16 MFD 1" - "USB\VID_044F&PID_B351&REV_0100"
3: "Throttle - HOTAS Warthog" - "USB\VID_044F&PID_0404&REV_0100"
4: "F16 MFD 2" - "USB\VID_044F&PID_B352&REV_0100"
USB HID device "Throttle - HOTAS Warthog"(USB\VID_044F&PID_0404\6&1DC17EE4&0&4) selected
USB HID device "Joystick - HOTAS Warthog"(USB\VID_044F&PID_0402\6&1A53C6CC&0&2) selected
USB HID device "F16 MFD 1"(USB\VID_044F&PID_B351\6&1DC17EE4&0&7) selected
USB HID device "F16 MFD 2"(USB\VID_044F&PID_B352\6&1DC17EE4&0&2) selected
USB HID device with hardware id "VID_044F&PID_0400" cannot be found
USB HID device with hardware id "VID_044F&PID_B10A" cannot be found
Virtual HID devices managed by script!
Connecting virtual joystick...Done
Device name set to Thrustmaster Combined
Connecting virtual keyboard...Done
Connecting virtual mouse...Done

main returned 0


Runtime error in Execute: Symbol not found: LED_INTENSITY, in "ActKey(PULSE+KEYON+LED(&Throttle, LED_INTENSITY, 43));"


Runtime error in Execute: Symbol not found: LED_INTENSITY, in "ActKey(PULSE+KEYON+LED(&LMFD, LED_INTENSITY, 20));"


Runtime error in Execute: Symbol not found: LED_INTENSITY, in "ActKey(PULSE+KEYON+LED(&RMFD, LED_INTENSITY, 20));"


Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED1));"


Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED2));"


Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED3));"


Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED4));"


Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED5));"


Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED1));"


Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED2));"


Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));"


Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED2));"





script :
LEDS_Initialize = CHAIN( EXEC("ActKey(PULSE+KEYON+LED(&Throttle, LED_INTENSITY, 43));"),
EXEC("ActKey(PULSE+KEYON+LED(&LMFD, LED_INTENSITY, 20));"),
EXEC("ActKey(PULSE+KEYON+LED(&RMFD, LED_INTENSITY, 20));"),
EXEC("ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED1));"),
EXEC("ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED2));"),
EXEC("ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED3));"),
EXEC("ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED4));"),
EXEC("ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED5));"),
EXEC("ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED1));"),
EXEC("ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED2));"),
EXEC("ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));"),
EXEC("ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED2));"
)


MapKey(&LMFD, OSB01, PULSE+LEDS_Initialize);
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC] (\_/) (_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")
[/align]

ivanwfr
Nouvelle Recrue
Nouvelle Recrue
Messages : 132
Inscription : 24 avril 2011

#83

Message par ivanwfr »

Moi, je joue avec ce que j'ai trouvé pour le Throttle dans hid.tmh:

Code : Tout sélectionner

int led_ramp(alias o) { // ramp down leds (if on) GameOutput(&o, OUT_ID_LED_5 , 0); Sleep(100); GameOutput(&o, OUT_ID_LED_4 , 0); Sleep(100); GameOutput(&o, OUT_ID_LED_3 , 0); Sleep(100); GameOutput(&o, OUT_ID_LED_2 , 0); Sleep(100); GameOutput(&o, OUT_ID_LED_1 , 0); Sleep(100); // backlight off GameOutput(&o, OUT_ID_LED_BACKLIGHT, 0); Sleep(100); // ramp up leds GameOutput(&o, OUT_ID_LED_1 , 1); Sleep(100); GameOutput(&o, OUT_ID_LED_2 , 1); Sleep(100); GameOutput(&o, OUT_ID_LED_3 , 1); Sleep(100); GameOutput(&o, OUT_ID_LED_4 , 1); Sleep(100); GameOutput(&o, OUT_ID_LED_5 , 1); Sleep(100); // backlight full intensity GameOutput(&o, OUT_ID_LED_INTENSITY, 255); GameOutput(&o, OUT_ID_LED_BACKLIGHT, 1); Sleep(500); // ramp down leds and backlight GameOutput(&o, OUT_ID_LED_INTENSITY, 215); GameOutput(&o, OUT_ID_LED_1 , 0); GameOutput(&o, OUT_ID_LED_INTENSITY, 172); GameOutput(&o, OUT_ID_LED_2 , 0); Sleep(100); GameOutput(&o, OUT_ID_LED_INTENSITY, 129); GameOutput(&o, OUT_ID_LED_3 , 0); Sleep(100); GameOutput(&o, OUT_ID_LED_INTENSITY, 86); GameOutput(&o, OUT_ID_LED_4 , 0); Sleep(100); GameOutput(&o, OUT_ID_LED_INTENSITY, 43); GameOutput(&o, OUT_ID_LED_5 , 0); Sleep(100); }
Avatar de l’utilisateur

Topic author
hellfrog
Messages : 5117
Inscription : 22 août 2008

#84

Message par hellfrog »

voilà où est le pb : moi j'ai pas ça dans mon hid.tmh...
install à revoir ? ... je creuse...

EDIT : Reinstall TArget : c'est corrigé ! les scripts marchent.

NB :
si comme moi vous utilisez un dossier Target dans Mes Documents, pensez à mettre à jour les fichiers tmh que vous y aurez recopiés depuis le dossier d'installatin de Target, car sinon ils restent obsolètes après une mise à jour... (boulet du jour inside !!!)
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC] (\_/) (_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")
[/align]

ivanwfr
Nouvelle Recrue
Nouvelle Recrue
Messages : 132
Inscription : 24 avril 2011

#85

Message par ivanwfr »

Ok, bonne remarque. En fait je n'avais pas idée qu'il fallait se méfiier de ce que fait le compilateur avec ses include. Pour le moment, je n'ai pas encore eu affaire aux mises à jour. Je me suis contenté de recopier les .tmh dans mon espace de test juste pour consultation. Mais du coup, c'est bon à savoir!
Avatar de l’utilisateur

Topic author
hellfrog
Messages : 5117
Inscription : 22 août 2008

problème avec la notion de compteur

#86

Message par hellfrog »

petit exercice pratique et théorique :

on crée un compteur.

l'appui sur RMFD SYMU l'initialise à 4

le script devrait allumer les 2 LEDS des deux MFDs

à l'appui de S2 le compteur devrait être décrémenté et une LED devrait s'éteindre

mais ça marche pas...

pourquoi ?


le script :
include "target.tmh"

int CountBombs;


int main()

{

if(Init(&EventHandle)) return 1;

SetKBRate(32, 50);
SetKBLayout(KB_FR);

// SYMU on RMFD

MapKey(&RMFD,SYMU, CHAIN( EXEC("CountBombs = 4;"), EXEC("ActKey(PULSE+KEYON+'p');") ));
// Pause / Unpause Game and init counters

MapKey(&Joystick, S2, CHAIN(EXEC("ActKey(PULSE+Bomb_Release_1);"),

EXEC("CountBombs = CountBombs - 1;"),
BombCounter_UpdateLEDS()));
}

int EventHandle(int type, alias o, int x)

{
DefaultMapping(&o, x);
}

int BombCounter_UpdateLEDS()

{ //==== {{{
if (CountBombs <= 0) {
CountBombs = 0;
}
if (CountBombs == 4) {
flash_Up();
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT+LED1));
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT+LED2));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT+LED1));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT+LED2));
flash_Down();
}
if (CountBombs == 3) {
flash_Up();
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT+LED2));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT+LED1));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT+LED2));
flash_Down();
}
if (CountBombs == 2) {
flash_Up();
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED2));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT+LED1));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT+LED2));
flash_Down();
}
if (CountBombs == 1) {
flash_Up();
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED2));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED1));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT+LED2));
flash_Down();
}
if (CountBombs == 0) {
flash_Up();
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED2));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED1));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED2));
flash_Down();
}
} // ====}}}

int flash_Down()

{ //==== {{{
Sleep(250);
ActKey(PULSE+KEYON+LED(&LMFD, LED_INTENSITY, 20));
ActKey(PULSE+KEYON+LED(&RMFD, LED_INTENSITY, 20));
} // ====}}}

int flash_Up()

{ //==== {{{
Sleep(250);
ActKey(PULSE+KEYON+LED(&LMFD, LED_INTENSITY, 255));
ActKey(PULSE+KEYON+LED(&RMFD, LED_INTENSITY, 255));
} // ====}}}


Si je met des printf(" comment");
j'ai l'impression que le script exécute le test compteur négatif AVANT l'initialisation, et donc après quand le script tourne, j'ai pas un compteur à 4...
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC] (\_/) (_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")
[/align]

ivanwfr
Nouvelle Recrue
Nouvelle Recrue
Messages : 132
Inscription : 24 avril 2011

#87

Message par ivanwfr »

J'ai tracé le code à l’extrême en remplaçant les commande aux MFCD par des printf parceque je n'en ai pas... et ça semble bien faire ce qu'il faut:

Code : Tout sélectionner

[SIZE="1"]include "target.tmh" int CountBombs; int Bomb_Release_1 = 'b'; // test - ivanwfr int main() { if(Init(&EventHandle)) return 1; SetKBRate(32, 50); SetKBLayout(KB_FR); // SYMU on RMFD - Pause/Unpause Game and init counters MapKey(&Joystick , S1 , CHAIN( EXEC("printf(\"\\xaS1--- CHAIN(1): CountBombs = 4 ;\\xa\"); CountBombs = 4 ;") , EXEC("printf( \"S1... CHAIN(1): ActKey(PULSE+KEYON+'p');\\xa\"); ActKey(PULSE+KEYON+'p');") ) ); MapKey(&Joystick , S2 , CHAIN( EXEC("printf(\"\\xaS2--- CHAIN(1): ActKey(PULSE+Bomb_Release_1);\\xa\"); ActKey(PULSE+Bomb_Release_1);") , EXEC("printf( \"S2... CHAIN(2): CountBombs = CountBombs - 1 ;\\xa\"); CountBombs = CountBombs - 1 ;") , EXEC("printf( \"S2... CHAIN(3): BombCounter_UpdateLEDS() ;\\xa\"); BombCounter_UpdateLEDS() ;") ) ); } int EventHandle(int type, alias o, int x) { DefaultMapping(&o, x); } int BombCounter_UpdateLEDS() { //==== {{{ if (CountBombs < 0) { printf("if(CountBombs < 0)\xa"); CountBombs = 0; printf(" CountBombs = 0;\xa"); } if (CountBombs == 4) { printf("if(CountBombs == 4)\xa"); flash_Up(); flash_Down(); } if (CountBombs == 3) { printf("if(CountBombs == 3)\xa"); flash_Up(); flash_Down(); } if (CountBombs == 2) { printf("if(CountBombs == 2)\xa"); flash_Up(); flash_Down(); } if (CountBombs == 1) { printf("if(CountBombs == 1)\xa"); flash_Up(); flash_Down(); } if (CountBombs == 0) { printf("if(CountBombs == 0)\xa"); flash_Up(); flash_Down(); } } // ====}}} int flash_Down() { //==== {{{ Sleep(250); printf("flash_Down\xa"); } // ====}}} int flash_Up() { //==== {{{ Sleep(250); printf("flash_Up\xa"); } // ====}}} [/SIZE]

Code : Tout sélectionner

[SIZE="1"]S1--- CHAIN(1): CountBombs = 4 ; S1... CHAIN(1): ActKey(PULSE+KEYON+'p'); S2--- CHAIN(1): ActKey(PULSE+Bomb_Release_1); S2... CHAIN(2): CountBombs = CountBombs - 1 ; S2... CHAIN(3): BombCounter_UpdateLEDS() ; if(CountBombs == 3) flash_Up flash_Down S2--- CHAIN(1): ActKey(PULSE+Bomb_Release_1); S2... CHAIN(2): CountBombs = CountBombs - 1 ; S2... CHAIN(3): BombCounter_UpdateLEDS() ; if(CountBombs == 2) flash_Up flash_Down S2--- CHAIN(1): ActKey(PULSE+Bomb_Release_1); S2... CHAIN(2): CountBombs = CountBombs - 1 ; S2... CHAIN(3): BombCounter_UpdateLEDS() ; if(CountBombs == 1) flash_Up flash_Down S2--- CHAIN(1): ActKey(PULSE+Bomb_Release_1); S2... CHAIN(2): CountBombs = CountBombs - 1 ; S2... CHAIN(3): BombCounter_UpdateLEDS() ; if(CountBombs == 0) flash_Up flash_Down S2--- CHAIN(1): ActKey(PULSE+Bomb_Release_1); S2... CHAIN(2): CountBombs = CountBombs - 1 ; S2... CHAIN(3): BombCounter_UpdateLEDS() ; if(CountBombs < 0) CountBombs = 0; if(CountBombs == 0) flash_Up flash_Down S2--- CHAIN(1): ActKey(PULSE+Bomb_Release_1); S2... CHAIN(2): CountBombs = CountBombs - 1 ; S2... CHAIN(3): BombCounter_UpdateLEDS() ; if(CountBombs < 0) CountBombs = 0; if(CountBombs == 0) flash_Up flash_Down [/SIZE]
Avatar de l’utilisateur

Topic author
hellfrog
Messages : 5117
Inscription : 22 août 2008

#88

Message par hellfrog »

justement, je suis pas sur que les printf soient représentatifs dans ce cas
car justement tu n'as pas les MFDs...

j'aimerais avoir l'avis de Dimebug... avec les MFDs...
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC] (\_/) (_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")
[/align]
Avatar de l’utilisateur

dimebug
Pilote d'essais
Pilote d'essais
Messages : 6957
Inscription : 18 août 2001

#89

Message par dimebug »

je regarde dans la journée...
Image Dresseur de cochon (sauvage)
Avatar de l’utilisateur

dimebug
Pilote d'essais
Pilote d'essais
Messages : 6957
Inscription : 18 août 2001

#90

Message par dimebug »

je crois que tu te compliques la vie, tu force le status de toutes les led a chaque fois alors qu'elle vont s’éteindre en suivant un ordre logique que tu définis dans ta fonction "maison" dans mon cas c'est "Bombsleds".
Ca pourrais etre interessant de cree une fonction de management de test led qui interroge constament (avec un reexec) le statut de Countbombs et pilote les led en consequence, de cette maniere, pas besoin des les initialiser.

De maniere basique :


include "target.tmh"

int CountBombs;

//program startup
int main()
{
if(Init(&EventHandle)) return 1; // declare the event handler, return on error



// SYMU on RMFD will init counter MFDs led and Pause/unpause
MapKey(&RMFD,SYMU, CHAIN(PULSE+'p',
EXEC("CountBombs = 4;"),
LED(&RMFD, LED_ONOFF, LED_CURRENT+LED1),
LED(&RMFD, LED_ONOFF, LED_CURRENT+LED2),
LED(&LMFD, LED_ONOFF, LED_CURRENT+LED1),
LED(&LMFD, LED_ONOFF, LED_CURRENT+LED2)));

MapKey(&Joystick, S2, CHAIN(PULSE+'b', EXEC("CountBombs = CountBombs - 1;"), EXEC("Bombsleds();")));



}

int Bombsleds()
{
if(CountBombs == 4) ActKey(KEYON+PULSE+ 0);
else if(CountBombs == 3) ActKey(KEYON+PULSE+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED2));
else if (CountBombs == 2) ActKey(KEYON+PULSE+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));
else if (CountBombs == 1) ActKey(KEYON+PULSE+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED1));
else ActKey(KEYON+PULSE+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED2));
}
//event handler
int EventHandle(int type, alias o, int x)
{
DefaultMapping(&o, x);

//add event handling code here
}
Image Dresseur de cochon (sauvage)
Avatar de l’utilisateur

Topic author
hellfrog
Messages : 5117
Inscription : 22 août 2008

#91

Message par hellfrog »

effectivement, approche bcp plus efficace !
merci Dimebug !
vais tester qd j'arais un moment...
evidemment c'est pour faire qqch de + compliqué ... mais je commence par le simple...
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC] (\_/) (_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")
[/align]
Avatar de l’utilisateur

dimebug
Pilote d'essais
Pilote d'essais
Messages : 6957
Inscription : 18 août 2001

#92

Message par dimebug »

voila une autre façon de le faire :
Je crée un processus qui demarre en meme temps que je definis 4 bombes (RMFD sym up)

Ce processus manage l'affichage des led en fonction du compteur et non pas de mes actions sur S2

A noter, la façon dont j'initialise les leds (1 ligne de code par device)
Je n'ai pas eu a créer de fonction en dehors de la boucle mais pour cela j'ai abuser d'EXEC.

include "target.tmh"

int CountBombs, BombsDisplay;


//program startup
int main()
{
if(Init(&EventHandle)) return 1; // declare the event handler, return on error

//Bomb display is a function created to manage MFD LED depending the number of time S2 have been pressed
BombsDisplay = CHAIN(EXEC("if (CountBombs == 3) ActKey(KEYON+PULSE+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED2));"),
EXEC("if (CountBombs == 2) ActKey(KEYON+PULSE+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));"),
EXEC("if (CountBombs == 1) ActKey(KEYON+PULSE+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED1));"),
EXEC("if (CountBombs == 0) ActKey(KEYON+PULSE+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED2));"));

REXEC(1, 300, "ActKey(KEYON+BombsDisplay);", RNOSTOP);

// SYMU on RMFD will init counter MFDs led and Pause/unpause
MapKey(&RMFD,SYMU, CHAIN(PULSE+'p', //pluse 'p' key
EXEC("CountBombs = 4;"), //initialize number of bombs
REXEC(1, 300, "ActKey(KEYON+BombsDisplay);", RNOSTOP), //Launch LED management task
LED(&RMFD, LED_ONOFF, LED1+LED2), //Turn on RMFD Leds
LED(&LMFD, LED_ONOFF, LED1+LED2))); //Turn on LMFD Leds

MapKey(&Joystick, S2, CHAIN(PULSE+'b', EXEC("CountBombs = CountBombs - 1;"))); //Pluse 'b' key and substract1 bomb



}


//event handler
int EventHandle(int type, alias o, int x)
{
DefaultMapping(&o, x);

//add event handling code here
}
Image Dresseur de cochon (sauvage)
Avatar de l’utilisateur

Topic author
hellfrog
Messages : 5117
Inscription : 22 août 2008

#93

Message par hellfrog »

vi , c'est ce que j'ai fait ce midi...

est-ce plus efficace ou consommant moins de ressources ou ça n'a aucun impact ?
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC] (\_/) (_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")
[/align]
Avatar de l’utilisateur

dimebug
Pilote d'essais
Pilote d'essais
Messages : 6957
Inscription : 18 août 2001

#94

Message par dimebug »

ca consomme plus car tu a une fonction qui loop, c'est pour ca que je l'ai mise a 300 millisecondes, mais 500 suffirait. Globalement , les EXEC sont voraces, ceci dit, c'est pas avec ca que tu fera ramer un PC.
Image Dresseur de cochon (sauvage)
Avatar de l’utilisateur

Topic author
hellfrog
Messages : 5117
Inscription : 22 août 2008

#95

Message par hellfrog »

dimebug a écrit :moi je recherche quelqu'un pour faire joujou avec Target et le LUA de DCS A-10c. J'ai reussi a extraire des données de FC2, a les afficher dans le output window de Target, mais sous A-10, mon LUA donne rien du tout, et le lua , c'est pas mon truc !
si tu parles anglais j'ai un client pour toi : http://www.scsimulations.com/showthread ... 1#post7962
je te laisses l'initiative du contact si tu es interessé
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC] (\_/) (_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")
[/align]
Avatar de l’utilisateur

Topic author
hellfrog
Messages : 5117
Inscription : 22 août 2008

#96

Message par hellfrog »

j'ai un peu de mal à mettre au point les scripts par manque d'exemples de syntaxe dans la doc.


par exemple si on veut utiliser des
include "*.tmc"
pour eviter de recopier tout le temps les memes fonctions entre differents profils ou/et appeler des fonctions répétitives dans ces scripts...

si on appelle la fonction dans le script principal il suffit de saisir :
mon_nom_function();

mais à posteriori, dans un MapKey(), il faut passer par :
EXEC("mon_nom_function();")

et la fonction appellée dans le script*.tmc, dépendant du premier :
int mon_nom_function()
{
[INDENT]// le script secondaire
[/INDENT]}
possede la structure ci dessus.

Mais peut-on y mettre :
EXEC("...");
EXEC("...");
sur plusieurs lignes

ou est-on obligé de passer par un :
CHAIN(
plusieurs lignes type ActKey ou PULSE+KEYON+ et , à la fin de ligne
);

bref, y a t il des règles précises . et où peut - on les trouver à défaut du manuel ? ou ne peut on faire que par essai / erreur sans comprendre vraiment ? (du moins je me pose des questions : c'est pas forcément intuitif ou logique du moins au début...)

car il est clair qu'on peut avoir des scripts qui se compilent sans erreur mais ne marchent pas, et des scripts pratiquement justes qui ne se compilent pas à cause d'une parenthèse ou virgule en trop... c'est classique...

et quand on veut faire des programmations de mappages par "modes interdépendant" cela devient un peu lassant à tester si on bute sur la syntaxe...

je ne parles pas des exemples cités dans le manuel bien sûr, ni de lignes de simples tests ou opération mathématiques ou affectations de valeur à des variables, où on retrouve à priori la syntaxe du C.
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC] (\_/) (_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")
[/align]

ivanwfr
Nouvelle Recrue
Nouvelle Recrue
Messages : 132
Inscription : 24 avril 2011

J'ai fait ce parcours, ça pourrait donc te servir...

#97

Message par ivanwfr »

Comme j'ai passé pas mal d'heures à faire exactement ce type de recherche, je pense que si tu fouilles dans le code en attachement, tu risques d'y trouver quelques éléments utiles.

Ivan
Pièces jointes

[L’extension « zip » a été désactivée et ne peut plus être affichée.]

Avatar de l’utilisateur

dimebug
Pilote d'essais
Pilote d'essais
Messages : 6957
Inscription : 18 août 2001

#98

Message par dimebug »

les exemples du manuel sont justement simple pour que la structure soit facilement ex tractable.

La plupart des fonctions (mapkey ectt...)sont en faite des capsules préfabriqués avec des cases que l'on rempli avec les bon paramètres. C'est ce qui rend l’écriture du script simple.

Des que l'on sort de ce schéma, on se heurte a la structure du C, même si certains flag comme "EXEC" permette de créer des ponts ou de se simplifier la vie.
Avec EXEC, on ne fait que tricher ou contourner la difficulté des choses

on peut créer des fonctions de 2 manières bien distinctes, dans et en dehors de la boucle. Les plus simples passent dans la boucle a grand renfort d'exec, les plus complexe sont plus gérables en dehors (les contraintes de syntaxe son celle du C, plus celles du script et ça s’avère parfois plus pratique).

Si tu rames, pose toi toujours ces questions :
Quelle est la logique de fonctionnement de ce que je faire. Ce schéma doit être abouti, tu dois, avant de commencer a écrire, savoir comment tu va gérer les choses et avec quelle methode/fonctions.

Ecrit ta fonction avec des output simple (pas de macros, justre des keysyrokes) au depart. C'est trop bête de perdre du temps sur des fautes de frappe.

Utilise la possibilité d'afficher des choses dans l'output window de target, de cette maniere, il devient plus facile de debugger ton "programme", tu peux poser des jalons qui t'indique le franchissement d'une étape ou l’état d'une variable.
Commence ta fonction dans un script seul, puis quand ca marche inclue la dans ton script principal.

Il faut être minutieux, et checker chaque étape.

et quand tu as finis, comment puis je simplifier/optimiser ?

Il y a plein de façon d'arriver a un résultat, la voie simple avec plein d’étape, la voie optimisé, la voie créative.

Le seul truc, c'est qu'il faut pratiquer, et tres regulierement, sinon a chaque reprise c'est dur. Achète toi un bouquin d'initiation au C, ca peut aider a avoir une meilleure vision des choses, mais la maîtrise, viens en pratiquant, en faisant des erreurs, y'a pas de secret, même avec un livre très complet, ici, ce qui compte c'est avant tout la structure logique de ton processus. Avoir un regard d’analyse et de critique permanent sur ce que les autres font ou ce que tu fais et le meilleur moyen d'apprendre.
La solution n'est pas dans les livres, elle est dans la façon dont tu utilises tes outils et décide des outils que tu te crée.

Si tu tâtonne, ça ne marche pas du premier coup, c'est normal. Si tu y arrive vraiment pas, c'est simplement que tu as sauté une étape et que la maîtrise de quelque chose t’échappe.
Image Dresseur de cochon (sauvage)
Avatar de l’utilisateur

Topic author
hellfrog
Messages : 5117
Inscription : 22 août 2008

#99

Message par hellfrog »

merci pour la méthode, mais ça je sais déjà ; après c'est vrai que n'étant pas programmeur de formation, et un peu rouillé, il y a qqs tatonnements.

En fait ta réponse à ma question c'est : on peut ecrire les fonctions que l'on veut avec la syntaxe du C.

Aujourd'hui j'ai eu du temps et suis arrivé à externaliser dans des sous routine (appel par include) pas mal de fonctions, et qui marchent

pour les calculs, boucles if else etc ... cf langage C

pour les instructions qui vont servir à Mapkey, : syntaxe de target, mais avec parfois qqs modifs...

Là où on manque d'infos c'est sur les limites de ce qui est dans le C mais pas géré par Target et vice versa...

Donc les contributions comme celle de irvanwfr sont très appréciables... merci pour le code partagé ! C'est pile le genre de choses que je voulais faire ! tu as du t'amuser pour mettre tout ça au point !!!!


Quand j'aurais avancé un peu je vais essayé de poster qqs exemples types documentés... mais ça risque de prendre un peu de temps...
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC] (\_/) (_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")
[/align]
Avatar de l’utilisateur

Topic author
hellfrog
Messages : 5117
Inscription : 22 août 2008

#100

Message par hellfrog »

bon y en a un où je butte :

fichier _HATCorners.tmc

Code : Tout sélectionner

// HAT3 int H3UR() {[INDENT] if( (Joystick[H3U] & Joystick[H3R]) & !(Joystick[H3U] | Joystick[H3R]) ) { [/INDENT][INDENT] return 1; [/INDENT]}[INDENT] else{ [/INDENT][INDENT] return 0; [/INDENT]} }
fichier principal.tmc :

Code : Tout sélectionner

include "_HATCorners.tmc" int main() { // HAT3 Snapviews management using UDLR and corners MapKey(&Joystick, H3U, SEQ( CHAIN( LOCK+DOWN+USBKey_KPPoint, DOWN+USBKey_KP8, LOCK), CHAIN( LOCK+UP+USBKey_KP8, UP+USBKey_KPPoint, LOCK) )); MapKey(&Joystick, H3L, SEQ( CHAIN( LOCK+DOWN+USBKey_KPPoint, DOWN+USBKey_KP4, LOCK), CHAIN( LOCK+UP+USBKey_KP4, UP+USBKey_KPPoint, LOCK) )); MapKey(&Joystick, H3R, SEQ( CHAIN( LOCK+DOWN+USBKey_KPPoint, DOWN+USBKey_KP6, LOCK), CHAIN( LOCK+UP+USBKey_KP6, UP+USBKey_KPPoint, LOCK) )); MapKey(&Joystick, H3D, SEQ( CHAIN( LOCK+DOWN+USBKey_KPPoint, DOWN+USBKey_KP2, LOCK), CHAIN( LOCK+UP+USBKey_KP2, UP+USBKey_KPPoint, LOCK) )); [color=Yellow] if( H3UR()==1){ SEQ( CHAIN( LOCK+DOWN+USBKey_KPPoint, DOWN+USBKey_KP9, LOCK), CHAIN( LOCK+UP+USBKey_KP9, UP+USBKey_KPPoint, LOCK) ); };[/color] }
ce qui est en jaune ne marche pas...
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC] (\_/) (_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")
[/align]
Répondre

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