UN SIMULATEUR DE BEECHCRAFT B200

UN SIMULATEUR DE BEECHCRAFT B200

Comment sauvegarder les fréquences com et Nav dans un fichier texte

Depuis très longtemps je cherchais à sauvegarder les fréquences com et nav des boitiers Collins dans un fichier texte pour pouvoir être rappelées par un appui vers le bas du commutateur à bascule présent sur ces boitiers.

Il n'existe pas de fonction qui permette cela depuis SIOC, on peut le faire avec AirManager mais je voulais pouvoir le faire sans ce dernier mes boitiers étant reproduits physiquement et non pas affichés sous forme de jauges.

J'ai trouvé la solution avec Lua et ses fonctions de gestion de fichiers.

 

Le commutateur double qui est à droite de ces boitiers permet de basculer la fréquence standbye vers active par un appui vers le haut et permet le défilement des fréquences mémorisées par des appuis successifs vers le bas et tout ceci en boucle.

Le bouton STO permet de mémoriser la fréquence affichée en standbye dans un des canaux mem du boitier et donc dans le fichier .txt

 

Les étapes

 

1 - Création du fichier txt

 

La première chose à faire et de créer le fichier txt qui est nommé memcom.txt pour le boitier com, ce sera memnav.txt pour le boitier nav

Il contient 5 lignes mais sur les boitiers originaux on peut mémoriser 6 fréquences donc je modifierai çà prochainement

 

13657
11820
13475
11840
11810

Sauvegarder ce fichier dans le répertoire où se situe le script lua que nous allons créer, en règle générale c'est le dossier Modules de P3D

 

2 - Création du script Lua 

 

Nous allons ensuite créer un script lua (ou compléter un script existant ) pour lire ce fichier au démarrage, le transférer dans un tableau et éventuellement le sauvegarder si les fréquences mémorisées étaient changées par appui sur le bouton STO

 

Pour lire le fichier txt et le transférer dans un tableau, on va écrire :

 

local fic_com = io.open("memcom.txt","r") -- ouverture du fichier en lecture
local contenu = {}                        -- déclaration du tableau des fréquences com1


for Line = 1,5 do   -- remplissage du tableau depuis le fichier memcom.txt
  local ligne = fic_com:read()
  if string.find(ligne,"1") then
     table.insert(contenu,ligne)
  end

end
fic_com:close()   -- on ferme le fichier memcom.txt

 

La tableau qui se nomme contenu contient maintenant les lignes du fichier memcom.txt

Je procède ainsi car je ne trouve pas judicieux d'avoir un fichier ouvert en permanence, c'est une vieille manie d'informaticien.

 

 Maintenant nous allons créer une fonction qui permettra d'écrire la fréquence standbye de com dans le tableau quand le bouton STO sera enfoncé et sauvegardera ce tableau dans le fichier memcom.txt.

Cette fonction sera appelée à chaque appui sur le bouton STO, on guettera pour cela le changement de la variable 66C8 ( offset libre de fsuipc ) depuis SIOC

 


function sto_com1()   -- stockage des valeurs du tableau dans le fichier memcom quand appui bouton sto
                        
   contenu[ipc.readUB(0x66c7)] = ipc.readUW(0x66e8)      -- ranger 66e8 ( la standbye ) dans la ligne du tableau correspond au

                                                                                                  numéro du rotate de sioc

   local fichier = io.open("memcom.txt","w")    -- ouverture du fichier en mode écriture
   for i = 1,5 do
      fichier:write(contenu[i])
      fichier:write("\n")
 
 end
 fichier:close()

end

 

Cette ligne en fin de script lua guette le changement de valeur de l'offset 66c8 attaché à l'input du bouton STO et lancera la fonction sto_com1 à chaque appui

 

 event.offset("66C8","UB","sto_com1") -- appui sur le bouton STO de com1

 

 

Dans le programme sioc on trouve donc une ligne qui déclare l'offset libre 66C8

 

var 0163, name luastocom1, link fsuipc_inout, offset $66c8, length 1   // poussoir sto de com1

et une input pour ce poussoir

 


Var 4061, name STOcom1_sw  Link IOCARD_SW, device 1, Input 52, Type I  // poussoir sto de com1 doit être de type I
{
    &luastocom1 = &STOcom1_sw
}

Je complèterai cet article au fur et à mesure de mes essais car parallèlement je travaille sur une refonte du bloc Collins CTL 22 basé sur un écran SSD1306 et une carte Arduino Nano

 

 



27/05/2019
2 Poster un commentaire

A découvrir aussi


Ces blogs de Loisirs créatifs pourraient vous intéresser

Inscrivez-vous au blog

Soyez prévenu par email des prochaines mises à jour

Rejoignez les 121 autres membres