#1 [↑][↓] 19-02-2021 20:00:10

kzw313
Membre
Inscription : 09-03-2009
Renommée :   

[P3D][FSX] demande aide pour script lua

salut a tous

j'ai besoin d'aide,voila j’utilise un script lua npcv2.21.zip trouver sur avsim pour contrôler les instruments des avions par des commande vocales via VOICE ATTACK avec ce script en peut par exemple changer la fréquence COMs NAVs ADFs SQWK les valeur ALT HDG CRS IAS VS pour les avions par Default PMDG A2A même LE majestics dash8 " via le clavier" en attribut des touches clavier au différente commande puis en entre au clavier numérique les différentes valeur, pour l'Altitude en veut saisire 10000 pied sur le mcp en appui sur la touche  affecter pour le changement de la valeur et puis en tape directement 10000 sur le clavier numérique et la valeur change la radio pareille pour NAV HDG etc

sauf que pour le Majestic pour les COMs NAVs ADFs SQWK impossible en cherchant jai trouver les valeur dans le fichier varlist.xlsx et a laide de IntVarCRCGen.exe

You have to use the XML interface for setting them. The variables are in the EFIS section.

EFISdata_->ARCDUs[0].stby_freq_com[0] Like: 35775 for 135.775

EFISdata_->ARCDUs[0].stby_freq_com[0] en entran ca dans IntVarCRCGen.exe = 65058

avec ce script la frequence com change  135.775

function stby_freq_com1 ()
MJCD8_Write(35775, 65058).
end

30775 = 135.775

si vous voulez je peut mettre les script lua mes comment ?

Dernière modification par kzw313 (20-02-2021 09:46:35)

Hors ligne

#2 [↑][↓] 19-02-2021 20:05:26

ydelta
Membre
Lieu : FL 390
Inscription : 25-07-2015
Renommée :   131 
Site Web

Re : [P3D][FSX] demande aide pour script lua

C'est quoi la question ? laugh


PC: i9 9900K @5.2 Ghz - Gigabyte GEForce RTX 4080 OC 16 Go - Asus Z390 Pro Gaming - 32Go de RAM DDR4 3200Mhz
Portable: MSI Raider 18 HX - i9 14900HX  RTX 4080 12Go 4K 18" display 240hz - 64Go DDR5 - 3To M2 SSD

Hors ligne

#3 [↑][↓] 19-02-2021 20:10:36

kzw313
Membre
Inscription : 09-03-2009
Renommée :   

Re : [P3D][FSX] demande aide pour script lua

ydelta a écrit :

C'est quoi la question ? laugh

oui mad2_gif

comment crée un script lua qui fait la même chose mais pour le majestic ?

Hors ligne

#4 [↑][↓] 19-02-2021 21:39:44

ydelta
Membre
Lieu : FL 390
Inscription : 25-07-2015
Renommée :   131 
Site Web

Re : [P3D][FSX] demande aide pour script lua

Alors un script LUA pour ce genre de chose, il faut assigner une valeur à une variable locale lue et écrite par l'avion en question via une fonction.

Ca va ressembler à ça dans ton exemple :

function COM_frequency ()
    Lvar = "ARCDUs[0].stby_freq_com"
    ipc.writeLvar(Lvar, 35775)

Dernière modification par ydelta (19-02-2021 21:40:46)


PC: i9 9900K @5.2 Ghz - Gigabyte GEForce RTX 4080 OC 16 Go - Asus Z390 Pro Gaming - 32Go de RAM DDR4 3200Mhz
Portable: MSI Raider 18 HX - i9 14900HX  RTX 4080 12Go 4K 18" display 240hz - 64Go DDR5 - 3To M2 SSD

Hors ligne

#5 [↑][↓] 19-02-2021 23:59:27

zigou
Membre
Lieu : LFMD
Inscription : 24-04-2008
Renommée :   11 

Re : [P3D][FSX] demande aide pour script lua

en effet, la question n'est pas claire.

La fonction LUA de kzw313 est correcte, pour programmer le majestic, il faut bien appeler MJCD8_Write ou MJCD8_Read.
Le code est donné quelque part pour ces deux fonctions LUA (je peux le retrouver si c'était la question).

Si la question est de comprendre l'appel à:
MJCD8_Write(35775, 65058)

Le premier paramètre est la fréquence: 35775 ==> (1) 35.775 wink

Le deuxième paramètre correspond à la variable interne EFISdata_->ARCDUs[0].stby_freq_com[0]
Pour obtenir le code qui correspond à cette variable, il faut utiliser l'utilitaire de Majestic: IntVarCRCGen.exe
Tu rentres le nom de la variable (EFISdata_->ARCDUs[0].stby_freq_com[0]), il te donne son code à utiliser comme deuxième paramètre: 65058.
MJCCRCGen.jpg

bon courage

Dernière modification par zigou (20-02-2021 00:06:13)

Hors ligne

#6 [↑][↓] 20-02-2021 07:49:46

Armand42
Membre
Lieu : Saint Etienne (42)
Inscription : 16-09-2014
Renommée :   21 

Re : [P3D][FSX] demande aide pour script lua

Bonjour,
Je ne peux pas aider, désolé, mais je suis le sujet, et je voudrais savoir :
- que veut dire "aux expires" dans le titre ?
- c'est quoi la touche "Didier" mentionnée dans le premier post ?
Merci

En ligne

#7 [↑][↓] 20-02-2021 08:36:04

D5Turbi
Membre
Lieu : BA 103 - Classe 69/4
Inscription : 14-12-2014
Renommée :   10 

Re : [P3D][FSX] demande aide pour script lua

Bonjour,
Vu l'orthographe, je pencherais pour la touche "dédiée". cepopossible_gif


MSI B250M Mortar, I7-7700K, 16Go 2400MHz, MSI RTX 4060 Ti 8Go, be quiet! Dark Rock TF, SSD Samsung 850 EVO, DD WD 1To, Oculus rift
RFN.jpg  BA103.jpg RVT.jpg Turbi.jpeg

Hors ligne

#8 [↑][↓] 20-02-2021 09:09:56

ydelta
Membre
Lieu : FL 390
Inscription : 25-07-2015
Renommée :   131 
Site Web

Re : [P3D][FSX] demande aide pour script lua

Expires -> experts je pense :))


PC: i9 9900K @5.2 Ghz - Gigabyte GEForce RTX 4080 OC 16 Go - Asus Z390 Pro Gaming - 32Go de RAM DDR4 3200Mhz
Portable: MSI Raider 18 HX - i9 14900HX  RTX 4080 12Go 4K 18" display 240hz - 64Go DDR5 - 3To M2 SSD

Hors ligne

#9 [↑][↓] 20-02-2021 09:20:58

D5Turbi
Membre
Lieu : BA 103 - Classe 69/4
Inscription : 14-12-2014
Renommée :   10 

Re : [P3D][FSX] demande aide pour script lua

Bien vu !
Bon au moins on apprend une nouvelle langue laugh


MSI B250M Mortar, I7-7700K, 16Go 2400MHz, MSI RTX 4060 Ti 8Go, be quiet! Dark Rock TF, SSD Samsung 850 EVO, DD WD 1To, Oculus rift
RFN.jpg  BA103.jpg RVT.jpg Turbi.jpeg

Hors ligne

#10 [↑][↓] 20-02-2021 10:08:27

kzw313
Membre
Inscription : 09-03-2009
Renommée :   

Re : [P3D][FSX] demande aide pour script lua

Merci Zigou

avec mon script

function stby_freq_com1 ()
MJCD8_Write(35775, 65058).
end

Je peut changer la fréquence du com1 afficher exemple 118.000 ----) a 135.775

De cette manière je devrais faire plusieurs script lua pour chaque fréquence

Pour le changement com1  en 136.775

function stby_freq_com1 ()
MJCD8_Write(36775, 65058).
end

Pour le changement com1  en 124.775


function stby_freq_com1 ()
MJCD8_Write(24775, 65058).
end

Pour le changement com1  en 118.775


function stby_freq_com1 ()
MJCD8_Write(18775, 65058).
end

Etc

Mai avec le script sur avsim en peut changer la fréquence via le pavé numérique

En entre directement la fréquence 118.000 a traver les touches
Touche : 1 
Touche : 1
Touche : 8
Touche : . (point pavé numérique)
Touche : 0
Touche : 0
Touche : 0

D5turbi titre changer

Dernière modification par kzw313 (20-02-2021 12:20:47)

Hors ligne

#11 [↑][↓] 20-02-2021 13:09:19

Armand42
Membre
Lieu : Saint Etienne (42)
Inscription : 16-09-2014
Renommée :   21 

Re : [P3D][FSX] demande aide pour script lua

Je ne comprends rien : "aux expires" veut dire "demande aide" ?
??????

Ah!!!! Je viens de comprendre : ce message était destiné "aux experts" ...
Bein fallait le trouver.
Bien vu ydelta eusa_clap

Dernière modification par Armand42 (20-02-2021 13:13:40)

En ligne

#12 [↑][↓] 20-02-2021 18:56:54

zigou
Membre
Lieu : LFMD
Inscription : 24-04-2008
Renommée :   11 

Re : [P3D][FSX] demande aide pour script lua

Hello kzw123

Non, tu ne vas pas écrire une fonction par fréquence, tu ajoutes la fréquence en paramètre de ta fonction:

function stby_freq_com1 (freq)
MJCD8_Write(freq, 65058).
end

Et tu appelles ta fonction avec la fréquence voulue:
- pour 135.775 --> stby_freq_com1(35775)
- pour 124.800 --> stby_freq_com1(24800)
- etc

Ce qui veut dire que pour faire la boucle, il va falloir que tu lises d'abord la fréquence standby, tu la modifies selon ta guise et tu écris la nouvelle fréquence.

La lecture des variables majestic fonctionne de la même manière: freq= MJCD8_Read(65058).
(le paramètre du read étant le code de la variable Majestic)

Dernière modification par zigou (20-02-2021 18:58:30)

Hors ligne

#13 [↑][↓] 20-02-2021 19:44:56

kzw313
Membre
Inscription : 09-03-2009
Renommée :   

Re : [P3D][FSX] demande aide pour script lua

Hello zigou

une vidéo mieux que les mots " a partir de 3:40 min

                           

Flash required

Dernière modification par kzw313 (20-02-2021 19:48:46)

Hors ligne

#14 [↑][↓] 20-02-2021 20:32:42

zigou
Membre
Lieu : LFMD
Inscription : 24-04-2008
Renommée :   11 

Re : [P3D][FSX] demande aide pour script lua

oui c'est sur, c'est plus clair avec la vidéo.
Du coup, tu as toutes les infos que tu voulais ? le script LUA de la vidéo capture les touches du clavier pour rentrer diverses fréquences, donc il te faut l'adapter pour écrire la fréquence dans la bonne variable du Majestic.

Tu as déjà la fonction pour écrire la fréquence standby du COM1:

function stby_freq_com1 (freq)
MJCD8_Write(freq, 65058).
end

Tu n'as plus qu'à appeler cette fonction à partir de ton script pour commencer.
Il faudra certainement convertir le format de la fréquence COM. Ton script semble prendre tous les digits (1 3 5 . 7 7 5) alors que la variable Majestic ne prend que les 5 derniers digits sans le point de séparation.
Si tu as du mal, partage le bout de code, et on verra ce qu'on peut faire.

Hors ligne

#15 [↑][↓] 20-02-2021 20:58:17

kzw313
Membre
Inscription : 09-03-2009
Renommée :   

Re : [P3D][FSX] demande aide pour script lua

le script lua est long comment le partager

Hors ligne

#16 [↑][↓] 20-02-2021 22:28:34

Bobonhom
Membre
Lieu : Les Laurentides Québecoise
Inscription : 24-04-2012
Renommée :   125 
Site Web

Re : [P3D][FSX] demande aide pour script lua

kzw313 a écrit :

le script lua est long comment le partager

Fonction balise Spoiler:

Comme ceci, mais enlève astérisque

[Spoiler*][/Spoiler]


79et5g.jpg

Hors ligne

#17 [↑][↓] 20-02-2021 22:47:27

kzw313
Membre
Inscription : 09-03-2009
Renommée :   

Re : [P3D][FSX] demande aide pour script lua

NpCkeyData.lua

[Spoiler]

NpCsetCom.lua

--NpCsetCom 14Aug2013
-- Modified not to show frequencies on green bar
--Must enter first Com or Nav digit (a 1)
--Al Klayton, 1Oct2013

acr = ipc.get("ACTIVE_RADIO")
ipc.set("KEY_POS", 1)
onoff = ipc.get("ONOFF")

if (not(onoff == nil) and onoff == "OFF") then
    return
end

if ipcPARAM == 1 then                                    --setup for toggle code below
    acr = "COM_2"                                         --ipcPARAM =0 for toggle, =1 for COM_1 only, =2 for COM_2 only
else
    if ipcPARAM == 2 then
         acr = "COM_1"
    end
end

if not(acr == nil) and acr == "COM_1" then
    nacr = "COM_2"                                          --do this code to setup for Com radio toggle
              ipc.writeSTR(0x3380, nacr);                         --display delected radio on green bar
else
    nacr = "COM_1"                                         --do this code to setup for Com radio toggle 
              ipc.writeSTR(0x3380, nacr);                         --display delected radio on green bar
end
ipc.set("ACTIVE_RADIO", nacr);
ipc.writeSW(0x32FA, 3);                                       --show active radio on green bar for 3 sec

Dernière modification par kzw313 (20-02-2021 22:48:40)

Hors ligne

#18 [↑][↓] 21-02-2021 11:35:57

zigou
Membre
Lieu : LFMD
Inscription : 24-04-2008
Renommée :   11 

Re : [P3D][FSX] demande aide pour script lua

Hello

pas trop le temps alors j'espère que tu maitrises un peu le LUA mad2_gif

le bout de code dans ton script qui lit la fréquence COM1:
if acr == "COM_1"  then
               CurrFreq =  ipc.readUW(0x311A)                                               --get freq of active radio
     freqloc= 0x311A 

idéalement, il faudrait la remplacer avec la lecture de la variable COM1 du Majestic (ie MJC_Read)

Et déjà pour t'entrainer, le bout de code qui écrit la valeur COM1 dans la radio de base FSX:
NewFreq = logic.Or(DigitSpace, movPARAM+0x0900)                           --add on temp 3rd freq digit = 9
ipc.writeUW(freqloc, NewFreq)                                          -- update radio panel                                                   

Il faut remplacer le ipc.writeUW par l'appel à ta fonction: stby_freq_com1 (NewFreq)

PS: Il faut certainement convertir le format de NewFreq (format FSX) au format Majestic.
PS2: je te fais ca rapide car ton script est complexe et il gère toutes les fréquences COM1, COM2, NAV1, NAV2
mais si tu comprends la modif pour COM1, tu sauras l'adapter pour les autres fréquences

Bon dimanche

Dernière modification par zigou (21-02-2021 11:38:31)

Hors ligne

#19 [↑][↓] 21-02-2021 12:13:58

Pierrick
Membre
Lieu : St Malo Les Homards
Inscription : 03-04-2011
Renommée :   26 

Re : [P3D][FSX] demande aide pour script lua

Yo !
Complètement HS.
Comme tous les posts de PV que je lis deux fois par jour, celui-ci a toute mon admiration.
Aucun humour la dedans, juste que je suis ébahi devant tant de connaissance.
Et avec une pointe d'humour: En "lisant" ces données techniques (même traduite du Mandarin au Breton...)
j'en arrive à rire de mon inculture !
Bref, chapeau les gars, dans le même registre que bien des pointures que contient ce fofo.
Fin du HS; Pierrick.


Veuillez emprunter l’ascenseur, l'escalier est en panne...

Hors ligne

#20 [↑][↓] 22-02-2021 10:43:11

kzw313
Membre
Inscription : 09-03-2009
Renommée :   

Re : [P3D][FSX] demande aide pour script lua

zigou a écrit :

Hello

pas trop le temps alors j'espère que tu maitrises un peu le LUA mad2_gif

le bout de code dans ton script qui lit la fréquence COM1:
if acr == "COM_1"  then
               CurrFreq =  ipc.readUW(0x311A)                                               --get freq of active radio
     freqloc= 0x311A 

idéalement, il faudrait la remplacer avec la lecture de la variable COM1 du Majestic (ie MJC_Read)

Et déjà pour t'entrainer, le bout de code qui écrit la valeur COM1 dans la radio de base FSX:
NewFreq = logic.Or(DigitSpace, movPARAM+0x0900)                           --add on temp 3rd freq digit = 9
ipc.writeUW(freqloc, NewFreq)                                          -- update radio panel                                                   

Il faut remplacer le ipc.writeUW par l'appel à ta fonction: stby_freq_com1 (NewFreq)

PS: Il faut certainement convertir le format de NewFreq (format FSX) au format Majestic.
PS2: je te fais ca rapide car ton script est complexe et il gère toutes les fréquences COM1, COM2, NAV1, NAV2
mais si tu comprends la modif pour COM1, tu sauras l'adapter pour les autres fréquences

Bon dimanche

zigou bonjour

1: je ne maitrise pas du tout les script lua cepopossible_gifmad2_gif=V

ce que jai fait

 

if acr == "COM_1"  then
               CurrFreq =  ipc.readUW(0x311A)                                               --get freq of active radio
     freqloc= 0x311A

changement

if acr == "COM_1"  then
       CurrFreq =  MJC_Read(65094)                                               --get freq of active radio
     freqloc= 65094



ipc.writeUW(freqloc, NewFreq)                                          -- update radio panel

changement

MJCD8_Write(freqloc, NewFreq)                                          -- update radio panel

mais ça ne marche pas

Hors ligne

#21 [↑][↓] 22-02-2021 18:23:16

zigou
Membre
Lieu : LFMD
Inscription : 24-04-2008
Renommée :   11 

Re : [P3D][FSX] demande aide pour script lua

w00t tu es ambitieux de te lancer dans une telle aventure e_Clown eusa_clap

je ne peux pas tester alors je ne te garantis rien, d'autant que le script est complexe malgré tout.

Tes changements ne fonctionnent pas parce que FSX (et donc ton script) utilise un format BCD pour encoder les fréquences.
Il faudrait réécrire toute la logique du script qui capture les touches numériques.

Je te propose une solution intermédiaire, on laisse la logique telle qu'elle est, et on convertit à la volée la fréquence au format BCD en décimal pour appeler la fonction du Majestic.

Sauf erreur de ma part, cette fonction devrait convertir le format BCD en format compatible avec le Q400:
function BCD_to_MJC8Q400(bcd_freq)
digit4= 10000*logic.Shr(bcd_freq, 12)

digit3= logic.And(bcd_freq, 0x0F00)
digit3= 1000*logic.Shr(bcd_freq, 8)

digit2= logic.And(NewFreq, 0x00F0)
digit2= 100*logic.Shr(NewFreq, 4)

digit1= 10*logic.And(NewFreq, 0x000F)

local mjc8q400_freq= digit1+digit2+digit3+digit4
return mjc8q400_freq
end


A chaque fois que tu vois une écriture de la fréquence sur la radio FSX: ipc.writeUW(freqloc, NewFreq)
tu appelles les deux fonctions suivantes (et tu conserves l'appel à ipc.writeUW...):
q400_freq= BCD_to_MJC8Q400(NewFreq)
MJCD8_Write(q400_freq, 65058)

je croise les doigts.... blink

Hors ligne

#22 [↑][↓] 23-02-2021 11:10:59

kzw313
Membre
Inscription : 09-03-2009
Renommée :   

Re : [P3D][FSX] demande aide pour script lua

j'ai crée un fichier lua MJC8Q400.lua ou j'ai coller ce script 

a écrit :

function BCD_to_MJC8Q400(bcd_freq)
digit4= 10000*logic.Shr(bcd_freq, 12)

digit3= logic.And(bcd_freq, 0x0F00)
digit3= 1000*logic.Shr(bcd_freq, 8)

digit2= logic.And(NewFreq, 0x00F0)
digit2= 100*logic.Shr(NewFreq, 4)

digit1= 10*logic.And(NewFreq, 0x000F)

local mjc8q400_freq= digit1+digit2+digit3+digit4
return mjc8q400_freq
end

activer via la touche C

puis jai coller ces deux ligne dans le script NpCkeyData.lua comme ca


                         NewFreq = logic.Or(DigitSpace, movPARAM+0x0900)                           --add on temp 3rd freq digit = 9
                             ipc.writeUW(freqloc, NewFreq)                                          -- update radio panel   
                            q400_freq= BCD_to_MJC8Q400(NewFreq)
                             MJCD8_Write(q400_freq, 65058)

                                                   
                             keypos=keypos+1
j active le 'script' la touche C puis je rentre la fréquence via le pave numérique ex:123.25 la jai un message (No Function Selected) cop_gif

Dernière modification par kzw313 (23-02-2021 11:14:59)

Hors ligne

#23 [↑][↓] 23-02-2021 19:50:31

zigou
Membre
Lieu : LFMD
Inscription : 24-04-2008
Renommée :   11 

Re : [P3D][FSX] demande aide pour script lua

la fonction BCD_to_MJC8Q400 est faite pour convertir le format de fréquence, il ne faut pas l'appeler à partir d'une touche mais dans ton script.

Ou as tu mis la fonction MJCD8_Write ?
tu peux mettre la fonction BCD_to_MJC8Q400 dans le même fichier que MJCD8_Write

Hors ligne

#24 [↑][↓] 23-02-2021 20:13:05

kzw313
Membre
Inscription : 09-03-2009
Renommée :   

Re : [P3D][FSX] demande aide pour script lua

salut zigou


tu veut que je mais la fonction la fonction BCD_to_MJC8Q400 dans le même fichier a la fin de ce même fichier ou avant ou après     
              ipc.writeUW(freqloc, NewFreq)                                          -- update radio panel   
              q400_freq= BCD_to_MJC8Q400(NewFreq)
              MJCD8_Write(q400_freq, 65058)

Dernière modification par kzw313 (23-02-2021 20:17:50)

Hors ligne

#25 [↑][↓] 23-02-2021 20:34:32

zigou
Membre
Lieu : LFMD
Inscription : 24-04-2008
Renommée :   11 

Re : [P3D][FSX] demande aide pour script lua

Tu as modifié le script initial pour appeler cette fonction:
MJCD8_Write(q400_freq, 65058)

donc ou est cette fonction ?

Hors ligne

Pied de page des forums