#26 [↑][↓] 23-02-2021 21:08:04

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

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

zigou a écrit :

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

donc ou est cette fonction ?

la fonction je l'ai mis a la fin de ce fichier NpcKeyData.lua



[Spoiler]

Dernière modification par kzw313 (23-02-2021 21:23:00)

Hors ligne

#27 [↑][↓] 23-02-2021 22:08:33

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

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

Tu ne réponds pas à ma question e_Clown
Je ne demande pas ou tu as mis ma fonction mais la fonction MJCD8_Write
Je soupçonne que tu as du trouver sur la toile un exemple utilisant cette fonction MJCD8_Write mais que tu ne l'as jamais définie.

Insère les deux fonctions suivantes en début de fichier comme suit:
--Al Klayton, 14Nov2013

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

function MJCD8_Write(value, variable)
    ipc.writeLvar("MJC_VAR_WRITE_VALUE", value)
    ipc.writeLvar("MJC_VAR_WRITE_CODE", variable)
end

onoff = ipc.get("ONOFF")

PS: fais attention, j'ai vu que tu as copié plusieurs fois la fonction BCD_to_MJC8Q400 dans le script. Tu ne dois la déclarer qu'une seule, en début de fichier, tel que ci dessus

Hors ligne

#28 [↑][↓] 24-02-2021 13:50:50

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

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

zigou a écrit :

Tu ne réponds pas à ma question e_Clown
Je ne demande pas ou tu as mis ma fonction mais la fonction MJCD8_Write

cette fonction

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

je l’utiliser dans linda je "l'activer" via un raccourci  Vjoy,mais comme  tu le vois je dois crée une nouvelle pour chaque fréquence

Mais comment la définir ou je je dois la mettre ? mad2_gif=V=V:col

Dernière modification par kzw313 (24-02-2021 14:19:56)

Hors ligne

#29 [↑][↓] 24-02-2021 19:23:55

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

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

Je n'ai pas le plaisir de connaitre Linda, elle est jolie ? e_Clown

Tu mélanges deux choses différentes.

Avec linda, tu peux affecter des "fonctions" à des touches/boutons/etc.
Donc soit tu as 4 touches sur ton joystick de dispo et il faut écrire les 4 fonctions pour incrémenter/décrémenter les deux parties de la fréquence (entière et décimale), soit tu oublies et tu reviens à ton idée de départ d'utiliser NpCkeyData.

Les scripts NpCkeyData (de ce que j'ai vu rapidement) capturent les touches de ton clavier numérique pour rentrer une fréquence.
Je t'ai donné le code dans mon post précédent. En début de fichier, tu dois définir les deux fonctions dont tu as besoin:
- BCD_to_MJC8Q400
- MJCD8_Write

plus cette troisième qui appelle les deux précédentes:
function stby_freq_com1(NewFreq)
  local q400_freq= BCD_to_MJC8Q400(NewFreq)
  MJCD8_Write(q400_freq, 65058)
end

puis, dans le script, à chaque fois que tu vois l'instruction:
ipc.writeUW(freqloc, NewFreq)   -- update radio panel

tu changes comme suit:
ipc.writeUW(freqloc, NewFreq)   -- update radio panel
stby_freq_com1(NewFreq)

Dernier conseil:
Avant de modifier quoique ce soit, installe les scripts NpCkeyData  et vérifie que tu arrives à modifier la fréquence COM1 sur un avion de base. C'est la base de vérifier que tout fonctionne avant d'entreprendre des modifs.

Dernière modification par zigou (24-02-2021 19:27:09)

Hors ligne

#30 [↑][↓] 24-02-2021 20:36:20

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

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

zigou a écrit :

Je n'ai pas le plaisir de connaitre Linda, elle est jolie ? =

moi non plus wink


Les scripts NpCkeyData (de ce que j'ai vu rapidement) capturent les touches de ton clavier numérique pour rentrer une fréquence.
Je t'ai donné le code dans mon post précédent. En début de fichier, tu dois définir les deux fonctions dont tu as besoin:
- BCD_to_MJC8Q400
- MJCD8_Write

plus cette troisième qui appelle les deux précédentes:
function stby_freq_com1(NewFreq)
  local q400_freq= BCD_to_MJC8Q400(NewFreq)
  MJCD8_Write(q400_freq, 65058)
end

puis, dans le script, à chaque fois que tu vois l'instruction:
ipc.writeUW(freqloc, NewFreq)   -- update radio panel

tu changes comme suit:
ipc.writeUW(freqloc, NewFreq)   -- update radio panel
stby_freq_com1(NewFreq)

voila jai ajoutais tes script comme suit

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
function MJCD8_Write(value, variable)
    ipc.writeLvar("MJC_VAR_WRITE_VALUE", value)
    ipc.writeLvar("MJC_VAR_WRITE_CODE", variable)
end

function stby_freq_com1(NewFreq)
  local q400_freq= BCD_to_MJC8Q400(NewFreq)
  MJCD8_Write(q400_freq, 65058)
end
   

puis jai changer comme suit:
ipc.writeUW(freqloc, NewFreq)   -- update radio panel
stby_freq_com1(NewFreq)


les l'avions par Default c'est bon

mais pour le dash les fréquence change eusa_clap mais des fréquence bizare exemple
si je rentre au clavier 118.000 ----> 118.900 la fréquence change MAIS pas dans le bon "choix" est afficher fréquence bizare 106.864
                        119.000 ----> 119.900 la fréquence change MAIS pas dans le bon "choix" est afficher fréquence bizare 106.864 mad2_gif

Dernière modification par kzw313 (24-02-2021 20:51:46)

Hors ligne

#31 [↑][↓] 24-02-2021 22:04:54

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

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

on avance.

Modifie la fonction comme suit:

function stby_freq_com1(NewFreq)
  local q400_freq= BCD_to_MJC8Q400(NewFreq)
  ipc.log("NewFreq (BCD)= " .. NewFreq)
  ipc.log("Q400Freq= " .. q400_freq)
  MJCD8_Write(q400_freq, 65058)
end

Lance ton simu, change tes fréquences comme décrit et ensuite, ouvre le répertoire "Modules" de ton simu (là ou tu as du mettre les scripts).

Il y a un fichier FSUIPCx.log (x étant la version de ton FSUIPC).
Tu devrais voir dedans les logs que j'ai rajoutés dans la fonction ci-dessus.
copie moi ces lignes et peut etre que je comprendrais ou est l'erreur.

Hors ligne

#32 [↑][↓] 24-02-2021 22:43:27

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

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

voici un extrait du log

   113850 H:\fsx\SimObjects\Airplanes\mjc8q400\MJC8Q4.AIR
   118904 Exception 3 "UNRECOGNIZED_ID", Ref 2375, Index param 1 on write SetData for "RECIP ENG FUEL FLOW:1"
   118904 Exception 3 "UNRECOGNIZED_ID", Ref 2376, Index param 1 on write SetData for "RECIP ENG FUEL FLOW:2"
   118904 Exception 3 "UNRECOGNIZED_ID", Ref 2377, Index param 1 on write SetData for "RECIP ENG FUEL FLOW:3"
   119248 Aircraft="MJC8Q400_DTH1"
   174051 Sim stopped: average frame rate for last 55 secs = 18.7 fps
   174051    Max AI traffic was 3 aircraft (Deleted 0)
   294764 LUA.0: NewFreq (BCD)= 10240
   294764 LUA.0: Q400Freq= 124000
   295061 LUA.0: NewFreq (BCD)= 8960
   295061 LUA.0: Q400Freq= 111000
   296870 LUA.0: NewFreq (BCD)= 8960
   296886 LUA.0: Q400Freq= 111000
   297136 LUA.0: NewFreq (BCD)= 8960
   297136 LUA.0: Q400Freq= 111000
   306106 === Closing session: waiting for DLLStop to be called ...
   317088 === DLLStop called ...
   317088 === Closing external processes we started ...
   318086 === About to kill any Lua plug-ins still running ...
   318242 === Closing global Lua thread

Hors ligne

#33 [↑][↓] 24-02-2021 23:40:58

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

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

bizarre
peux tu copier le script modifié stp ?
quelle est la fréquence que tu tapes au clavier ?
si je regarde uniquement la variable d'origine NewFreq, je vois 128.00, puis 3 fois 123.00 blink

Hors ligne

#34 [↑][↓] 25-02-2021 08:23:52

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

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

le script modifier

les modification faite en gras

[Spoiler]


le log

   
     3759 Initialising SimConnect data requests now
     3759 FSUIPC Menu entry added
     3822 \\ALR-PC\Users\ALR\Documents\Fichiers Flight Simulator X\alpha.FLT
     3822 H:\fsx\SimObjects\Airplanes\B737_800\Boeing737-800.AIR
    29577 Aircraft loaded: running normally now ...
    29577 User Aircraft ID 1 supplied, now being used
    29983 System time = 25/02/2021 08:03:24, Simulator time = 08:02:59 (07:02Z)
    29983 Aircraft="Boeing 737-800 Paint1"
    30997 Starting everything now ...
    32323 Advanced Weather Interface Enabled
    46862 H:\fsx\SimObjects\Airplanes\mjc8q400\MJC8Q4.AIR
    47705 Aircraft="MJC8Q400_DTH1"
    47705 Exception 3 "UNRECOGNIZED_ID", Ref 2346, Index param 1 on write SetData for "RECIP ENG FUEL FLOW:1"
    47705 Exception 3 "UNRECOGNIZED_ID", Ref 2347, Index param 1 on write SetData for "RECIP ENG FUEL FLOW:2"
    47705 Exception 3 "UNRECOGNIZED_ID", Ref 2348, Index param 1 on write SetData for "RECIP ENG FUEL FLOW:3"
    86720 LUA.0: NewFreq (BCD)= 10240
    86720 LUA.0: Q400Freq= 124000
   100137 LUA.0: NewFreq (BCD)= 8192
   100137 LUA.0: Q400Freq= 103200
   100386 LUA.0: NewFreq (BCD)= 8192
   100386 LUA.0: Q400Freq= 103200
   143177 LUA.0: NewFreq (BCD)= 10240
   143177 LUA.0: Q400Freq= 124000
   149090 LUA.0: NewFreq (BCD)= 8448
   149090 LUA.0: Q400Freq= 105800
   149339 LUA.0: NewFreq (BCD)= 8448
   149339 LUA.0: Q400Freq= 105800
   170633 Sim stopped: average frame rate for last 122 secs = 19.5 fps
   170633    Max AI traffic was 1 aircraft (Deleted 0)
   171616 === Closing session: waiting for DLLStop to be called ...
   184627 === DLLStop called ...
   184627 === Closing external processes we started ...
   185625 === About to kill any Lua plug-ins still running ...
   185781 === Closing global Lua thread
   186780 === About to kill my timers ...
   186982 === Restoring window procs ...
   186982 === Unloading libraries ...
   186982 === stopping other threads ...
   186982 === ... Memory checking ...
   186982 === ... Button scanning ...
   187076 === ... Axis scanning ...
   187170 === Releasing joystick devices ...
   187170 === Freeing macro memory
   187170 === Removing any offset overrides
   187170 === Closing all WideFS threads
   189541 === Clearing any displays left
   189541 === NOTE: not calling SimConnect_Close ...
   189541 === AI slots deleted!
   189541 === Freeing button memory ...
   189541 === Closing my Windows ...
   189541 === Freeing FS libraries ...
   190539 === Closing devices ...
   190539 === Closing the Log ... Bye Bye! ...
   190539 System time = 25/02/2021 08:06:04, Simulator time = 08:05:13 (07:05Z)
   190539 *** FSUIPC log file being closed
Minimum frame rate was 17.5 fps, Maximum was 19.9 fps
Minimum available memory recorded was 2695Mb
Average frame rate for running time of 132 secs = 19.5 fps
G3D fix: Passes 10094, Null pointers 0, Bad pointers 0, Separate instances 0
Maximum AI traffic for session was 1 aircraft
Memory managed: 66 Allocs, 66 Freed
********* FSUIPC Log file closed ***********


les fréquences taper au clavier

120.000
121.000
ps : quand je tape 120 et 121 la fréquence afficher et 158.464 et quand je tape 120.00 ----> 137.664 si je tape le dernier 0 soit 120.000 ----> 137.664 puis affichage sur bar verte"invalidee entrée"
de même quand je tape 121.00 ----> 140.264 si je tape le dernier 0 soit 121.000 ----> 140.264 puis affichage sur bar verte " invalidee entrée"

Dernière modification par kzw313 (25-02-2021 17:07:51)

Hors ligne

#35 [↑][↓] 25-02-2021 18:26:30

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

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

Essaie ca, j'ai vu une erreur qui peut expliquer le comportement étrange

[Spoiler]

Dernière modification par zigou (25-02-2021 18:27:29)

Hors ligne

#36 [↑][↓] 25-02-2021 19:20:42

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

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

toujours problème fréquences

cette fois j'ai rentrée le fréquences 120.000 et 121.025

le log
98265 LUA.0: NewFreq (BCD)= 10240
    98265 LUA.0: Q400Freq= 124000
    98671 LUA.0: NewFreq (BCD)= 8192
    98671 LUA.0: Q400Freq= 103200
   100480 LUA.0: NewFreq (BCD)= 8192
   100480 LUA.0: Q400Freq= 103200
   100730 LUA.0: NewFreq (BCD)= 8192
   100745 LUA.0: Q400Freq= 103200
   106549 LUA.0: NewFreq (BCD)= 8192
   106549 LUA.0: Q400Freq= 103200
   107157 LUA.0: NewFreq (BCD)= 8448
   107157 LUA.0: Q400Freq= 105800
   109325 LUA.0: NewFreq (BCD)= 8448
   109325 LUA.0: Q400Freq= 105800
   109871 LUA.0: NewFreq (BCD)= 8450
   109871 LUA.0: Q400Freq= 105820
   113912 Sim stopped: average frame rate for last 74 secs = 19.2 fps
   113912    Max AI traffic was 1 aircraft (Deleted 0)
   115004 === Closing session: waiting for DLLStop to be called ...
   127983 === DLLStop called ...
   127983 === Closing external processes we started ...
   128982 === About to kill any Lua plug-ins still running ...
   129138 === Closing global Lua thread
   130136 === About to kill my timers ...
   130323 === Restoring window procs ...
   130323 === Unloading libraries ...
   130323 === stopping other threads ...
   130323 === ... Memory checking ...
   130323 === ... Button scanning ...
   130432 === ... Axis scanning ...
   130526 === Releasing joystick devices ...
   130526 === Freeing macro memory
   130526 === Removing any offset overrides
   130526 === Closing all WideFS threads
   132882 === Clearing any displays left
   132882 === NOTE: not calling SimConnect_Close ...
   132882 === AI slots deleted!
   132882 === Freeing button memory ...
   132882 === Closing my Windows ...
   132882 === Freeing FS libraries ...
   133880 === Closing devices ...
   133880 === Closing the Log ... Bye Bye! ...
   133880 System time = 25/02/2021 19:18:58, Simulator time = 16:27:06 (15:27Z)
   133880 *** FSUIPC log file being closed
Minimum frame rate was 16.2 fps, Maximum was 19.9 fps
Minimum available memory recorded was 2715Mb
Average frame rate for running time of 79 secs = 19.1 fps
G3D fix: Passes 10109, Null pointers 0, Bad pointers 0, Separate instances 0
Maximum AI traffic for session was 1 aircraft
Memory managed: 42 Allocs, 42 Freed
********* FSUIPC Log file closed ***********

Dernière modification par kzw313 (25-02-2021 19:21:47)

Hors ligne

#37 [↑][↓] 25-02-2021 20:58:43

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

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

ok j'essaierai de lancer mon simu ce week-end, au moins la valeur de la fréquence n'est plus corrompue, je retrouve bien les fréquences que tu rentres.
Je dois merder qq part dans la conversion vers le format du Q400.

Hors ligne

#38 [↑][↓] 25-02-2021 21:02:46

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

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

Ok merci

Hors ligne

#39 [↑][↓] 26-02-2021 20:45:04

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

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

En regardant à tête reposée ma fonction de conversion de format, je pense avoir trouvé l'erreur:
Remplace la fonction par celle ci (j'ai mis en gras ce que j'ai corrigé):

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

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

  digit2= logic.And(bcd_freq, 0x00F0)
  digit2= logic.Shr(digit2, 4)

  digit1= logic.And(bcd_freq, 0x000F)

  local mjc8q400_freq= 10*digit1+100*digit2+1000*digit3+10000*digit4
  return mjc8q400_freq
end

Hors ligne

#40 [↑][↓] 26-02-2021 21:18:20

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

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

un très grand BRAVO tu est un expert eusa_clap=W=W=W=W

Dernière modification par kzw313 (26-02-2021 21:21:42)

Hors ligne

#41 [↑][↓] 28-02-2021 14:50:52

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

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

Salut Zigou

désoler mais comme tu le sait moi et LUA ca fait 2 le script marche très bien, sauf que avec ces modification :

1 _ en peut changer que la fréquence com1

2 - si en appui sur la touche pour changer l'action sur quelle com en veut changer la fréquence COM1 ou COM2 c'est la même chose , alors que sur les appareil par Default en appuis sur la touche affecter pour la radio com quand veut modifier ex: la touche C est affecter pour le changement de fréquence com1 ou com2 ,je veut change la fréquence sur com2 j'appui sur C le première fois un message  "COM1 j'appui une deuxième  fois un message "COM2" je rentre la fréquence voulu

si tu a le temp j'aimerais que tu m'explique les changement que tu a effectuer et ne pas me donner les "les solutions" car j'aimerais apprendre
si c'est trop compliquer pour une personne qui ne c'est connait pas en script LUA ou pas le temp  alors a tois de voire

merci


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

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)

? mad2_gif=V

Dernière modification par kzw313 (28-02-2021 15:22:20)

Hors ligne

#42 [↑][↓] 28-02-2021 15:49:13

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

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

Salut,

oui maintenant c'est à toi de travailler laugh

Etape 1:
Nous avons créé une fonction pour écrire dans la variable COM1 SBY du Q400: 65058
function stby_freq_com1(bcd_freq)
  local q400_freq= BCD_to_MJC8Q400(bcd_freq)
  MJCD8_Write(q400_freq, 65058)
end

Donc, il faudrait que tu ajoutes un 2e paramètre à cette fonction pour pouvoir donner une autre variable que COM1.
Dans un premier temps, ajoute ce 2e paramètre, utilise le à la place de 65058 et modifie tous les appels à la fonction pour passer ce 2e paramètre avec la valeur 65058.

Etape 2 (quand tu as fini avec succès l'étape 1):
Recherche la variable: freqloc
Elle est utilisée pour justement spécifier s'il faut écrire la fréquence dans COM1, COM2, NAV1 ou NAV2 dans les radios par défaut.
Il faut utiliser le même principe pour le Q400.
En début de sujet, j'ai expliqué comment trouver le code de la variable COM1 du Majestic (65058).
Il te faut donc trouver les codes pour COM2, puis NAV1/NAV2 si tu veux tout câbler.

Etape 3:
Il te suffit de créer une nouvelle variable "q400_freqloc" et de la mettre à jour en même temps que freqloc avec les codes que tu as trouvés à l'étape 2.
Ensuite tu remplaces la valeur 65058 par la variable "q400_freqloc" quand tu appelles ta fonction "stby_freq_com1" (que tu pourrais d'ailleurs renommer)

N'hésite pas à partager tes progrès.
Bonne chance ! mad2_gif=W

Dernière modification par zigou (28-02-2021 15:51:20)

Hors ligne

#43 [↑][↓] 28-02-2021 17:46:11

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

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

oui maintenant c'est à toi de travailler

tu a lu mes pensées

Etape 1:

Donc, il faudrait que tu ajoutes un 2e paramètre à cette fonction pour pouvoir donner une autre variable que COM1.

function stby_freq_com1(bcd_freq)
  local q400_freq= BCD_to_MJC8Q400(bcd_freq)
  MJCD8_Write(q400_freq, 65058,65094) <-------- c'est ça ?
end  eusa_whistle

Dans un premier temps, ajoute ce 2e paramètre, utilise le à la place de 65058 et modifie tous les appels à la fonction pour passer ce 2e paramètre avec la valeur 65058.

??? désoler un peu plus de détail mad2_gif

Dernière modification par kzw313 (28-02-2021 18:06:57)

Hors ligne

#44 [↑][↓] 28-02-2021 18:20:45

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

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

Regarde la fonction MJCD8_Write(value, variable), c'est celle ci qui écrit la fréquence dans la variable du Majestic.
Elle prend deux paramètres, la variable (pour l'instant 65058 qui correspond à EFISdata_->ARCDUs[0].stby_freq_com[0]) et la valeur (fréquence dans notre cas).

Donc si tu veux maintenant pouvoir écrire la fréquence dans une variable COM1 ou COM2, il faut aussi avoir un 2e paramètre dans stby_freq_com1(bcd_freq) --> par exemple stby_freq_com1(variable, bcd_freq)

à toi de modifier le code de cette fonction pour prendre en compte ce nouveau paramètre.

Dernière modification par zigou (28-02-2021 18:21:35)

Hors ligne

#45 [↑][↓] 28-02-2021 19:46:16

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

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

je croi que je suis a coter de la plaque cepopossible_gif

voici les modification

Etape 1:
Nous avons créé une fonction pour écrire dans la variable COM1 SBY du Q400: 65058
function stby_freq_com1(bcd_freq)
  local q400_freq= BCD_to_MJC8Q400(bcd_freq)
  MJCD8_Write(q400_freq, 65058)
end

Donc, il faudrait que tu ajoutes un 2e paramètre à cette fonction pour pouvoir donner une autre variable que COM1.
Dans un premier temps, ajoute ce 2e paramètre, utilise le à la place de 65058 et modifie tous les appels à la fonction pour passer ce 2e paramètre avec la valeur 65058.

unction BCD_to_MJC8Q400(bcd_freq)
  digit4= logic.Shr(bcd_freq, 12)

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

  digit2= logic.And(bcd_freq, 0x00F0)
  digit2= logic.Shr(digit2, 4)

  digit1= logic.And(bcd_freq, 0x000F)

  local mjc8q400_freq= 10*digit1+100*digit2+1000*digit3+10000*digit4
  return mjc8q400_freq
end

function MJCD8_Write(value, variable)
    ipc.writeLvar("MJC_VAR_WRITE_VALUE", value)
    ipc.writeLvar("MJC_VAR_WRITE_CODE", variable)
end

function stby_freq_com1(65094,bcd_freq) <--------- 2e paramètre
    local q400_freq= BCD_to_MJC8Q400(bcd_freq)
         
 

Etape 2 (quand tu as fini avec succès l'étape 1):
Recherche la variable: freqloc
Elle est utilisée pour justement spécifier s'il faut écrire la fréquence dans COM1, COM2, NAV1 ou NAV2 dans les radios par défaut.
Il faut utiliser le même principe pour le Q400.
En début de sujet, j'ai expliqué comment trouver le code de la variable COM1 du Majestic (65058).
Il te faut donc trouver les codes pour COM2, puis NAV1/NAV2 si tu veux tout câbler.

si je cherche freqloc voila ce que je trouve  il ya 9 jai mis un seul comme exemple

      ipc.writeUW(freqloc, NewFreq)                                -- update radio panel
    MJCD8_Write(q400_freq, q400_freqloc)
                   stby_freq_com1(NewFreq)                                                       

Etape 3:
Il te suffit de créer une nouvelle variable "q400_freqloc" et de la mettre à jour en même temps que freqloc avec les codes que tu as trouvés à l'étape 2.
Ensuite tu remplaces la valeur 65058 par la variable "q400_freqloc" quand tu appelles ta fonction "stby_freq_com1" (que tu pourrais d'ailleurs renommer)

function stby_freq_com1(65094,bcd_freq) <--------- 2e paramètre
    local q400_freq= BCD_to_MJC8Q400(bcd_freq)
  ipc.log("NewFreq (BCD)= " .. bcd_freq)
  ipc.log("Q400Freq= " .. q400_freq)
  MJCD8_Write(q400_freq, q400_freqloc) remplacement de 65058 par q400_freqloc

Dernière modification par kzw313 (01-03-2021 18:40:17)

Hors ligne

#46 [↑][↓] 01-03-2021 20:04:59

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

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

Hello kzw313

il faut y aller étape par étape.

La fonction MJCD8_Write(value, variable) prend 2 paramètres: la variable et la valeur que tu veux écrire.

La fonction stby_freq_com1 appelle MJCD8_Write mais ne prend qu'un seul paramètre (bcd_freq) qui est la valeur.

function stby_freq_com1(bcd_freq)
  local q400_freq= BCD_to_MJC8Q400(bcd_freq)
  MJCD8_Write(q400_freq, 65058)
end

Donc la fonction actuelle utilise une valeur pré-définie (65058) pour donner la variable à écrire à MJCD8_Write.

Tu cherches à étendre les possibilités de ton script pour écrire dans une autre variable (ex COM2).

Donc il faut modifier la fonction pour ajouter la "variable" en paramètre:
function stby_freq(variable, bcd_freq)
  local q400_freq= BCD_to_MJC8Q400(bcd_freq)
  MJCD8_Write(q400_freq, variable)
end

Pour finir avec l'étape 1, partout ou tu appelles stby_freq_com1(NewFreq), il faut mettre à jour pour passer ce deuxième paramètre (note que j'en ai profité pour renommer la fonction puisqu'elle ne se limite plus à COM1):
- stby_freq(65058, NewFreq) si tu veux continuer à changer COM1 SBY
- ou stby_freq(65094, NewFreq) si tu veux tester si ca fonctionne avec COM2 SBY

L'étape 2 consiste à passer la valeur 65058 ou 65094 via une nouvelle variable, ce qui permettra à ton script de passer de l'un à l'autre.

J'espère que ca t'aide et que tu comprends un minimum.

cordialement

Dernière modification par zigou (01-03-2021 20:10:58)

Hors ligne

#47 [↑][↓] 01-03-2021 21:30:04

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

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

function stby_freq_com1(65058, bcd_freq)
  local q400_freq= BCD_to_MJC8Q400(bcd_freq)
  MJCD8_Write(q400_freq, (65058)
end

NewFreq = logic.Or(DigitSpace, movPARAM+0x0900)                           --add on temp 3rd freq digit = 9
                     ipc.writeUW(freqloc, NewFreq)                                          -- update radio panel
                     stby_freq_com1((65058, NewFreq) <------ mis a jour toute les lignes

ça marche pas

                        
alors qu'avec ça, ça  marche                    
                    
function stby_freq_com1(bcd_freq)
  local q400_freq= BCD_to_MJC8Q400(bcd_freq)
  MJCD8_Write(q400_freq, 65058)
end



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

Dernière modification par kzw313 (01-03-2021 21:32:27)

Hors ligne

#48 [↑][↓] 01-03-2021 21:45:43

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

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

Ce que tu as fait (et je confirme que ca ne peut pas marcher):

function stby_freq_com1(65058, bcd_freq)
  local q400_freq= BCD_to_MJC8Q400(bcd_freq)
  MJCD8_Write(q400_freq, (65058)
end

et ce que je te demande et que je t'ai donné dans mon message précédent avec l'explication du pourquoi:

function stby_freq(variable, bcd_freq)
  local q400_freq= BCD_to_MJC8Q400(bcd_freq)
  MJCD8_Write(q400_freq, variable)
end

ps: et je t'ai aussi dit que j'avais renommé la fonction puisqu'on change son comportement.

Hors ligne

#49 [↑][↓] 01-03-2021 22:11:09

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

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

function stby_freq(variable, bcd_freq)
  local q400_freq= BCD_to_MJC8Q400(bcd_freq)
  MJCD8_Write(q400_freq, variable)
end

variable com1 = 65058 ?

variable com2 = 65094 ?

function stby_freq(65058, bcd_freq)
  local q400_freq= BCD_to_MJC8Q400(bcd_freq)
  MJCD8_Write(q400_freq, 65058)

Dernière modification par kzw313 (01-03-2021 22:32:03)

Hors ligne

#50 [↑][↓] 01-03-2021 23:02:18

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

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

regarde mon post #46, je te dis comment appeler la nouvelle fonction avec 2 paramètres:

Pour finir avec l'étape 1, partout ou tu appelles stby_freq_com1(NewFreq), il faut mettre à jour pour passer ce deuxième paramètre (note que j'en ai profité pour renommer la fonction puisqu'elle ne se limite plus à COM1):
- stby_freq(65058, NewFreq) si tu veux continuer à changer COM1 SBY
- ou stby_freq(65094, NewFreq) si tu veux tester si ca fonctionne avec COM2 SBY

Dans le post #5, j'explique comment obtenir le code de la variable Majestic à partir de son nom.
Donc oui, COM1= 65058.

Je n'ai pas vérifié pour COM2, tu as mentionné 65094, je t'ai cru sur parole. mad2_gif

Dernière modification par zigou (01-03-2021 23:04:46)

Hors ligne

Pied de page des forums