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
A découvrir aussi
Inscrivez-vous au blog
Soyez prévenu par email des prochaines mises à jour
Rejoignez les 122 autres membres