Récupérer le temps de vol de tous les modèles
4 participants
Page 1 sur 1
Récupérer le temps de vol de tous les modèles
Bonjour aux LUA-taquins
Chacun de mes modèles dispose d'un timer pour enregistrer son temps de vol total effectué avec. Je cherche à extraire mon temps total passé à voler par cumul de tous ces timers. En gros savoir combien de temps j'ai passé les yeux en l'air et les doigts sur les manches, par exemple depuis le début de l'année.
La fonction model.getTimer(timer) ne s'applique qu'au modèle actif, aussi il faudrait stocker chaque timer en fin de vol dans un fichier et additionner tout ça dans un script TELEMETRY affiché pour chaque modèle. Ai-je juste ?
Sentez-vous la chose faisable ?
Merci
Chacun de mes modèles dispose d'un timer pour enregistrer son temps de vol total effectué avec. Je cherche à extraire mon temps total passé à voler par cumul de tous ces timers. En gros savoir combien de temps j'ai passé les yeux en l'air et les doigts sur les manches, par exemple depuis le début de l'année.
La fonction model.getTimer(timer) ne s'applique qu'au modèle actif, aussi il faudrait stocker chaque timer en fin de vol dans un fichier et additionner tout ça dans un script TELEMETRY affiché pour chaque modèle. Ai-je juste ?
Sentez-vous la chose faisable ?
Merci
Dernière édition par vian31 le Jeu 8 Nov 2018 - 15:59, édité 1 fois (Raison : Modif titre)
vian31- Messages : 111
Date d'inscription : 04/04/2016
Age : 41
Localisation : Toulouse
Re: Récupérer le temps de vol de tous les modèles
Tu as aussi le temps total d'allumage de la radio, si cela peut aider.
Certes ce n'est pas le temps de vol mais au moins cela cumule tous les modèles
Certes ce n'est pas le temps de vol mais au moins cela cumule tous les modèles
Re: Récupérer le temps de vol de tous les modèles
Eric84AMC a écrit:Tu as aussi le temps total d'allumage de la radio, si cela peut aider.
Certes ce n'est pas le temps de vol mais au moins cela cumule tous les modèles
Oui, mais vu le temps qu'on passe avec la radio allumée sans voler, pour des raisons diverses et variées... je vais avoir l'impression de BEAUCOUP voler, ce qui n'est malheureusement pas le cas
vian31- Messages : 111
Date d'inscription : 04/04/2016
Age : 41
Localisation : Toulouse
Re: Récupérer le temps de vol de tous les modèles
Bon, je mets les mains dans le code pour essayer d'ouvrir/écrire dans un fichier... le code tourne en boucle (je le vois dans la fenêtre de débogage) et rien ne se passe dans mon fichier. J'ai essayé aussi bien un FUNCTION script qu'un TELEMETRY script, même résultat. Je n'arrive pas non plus à afficher le contenu de la variable myFile avec Print dans la fenêtre Débog afin de voir si l'ouverture du fichier a réussi...
Contenu dans le débog:
- Code:
local function run()
local myFile = io.open("readme.txt", "w")
if myFile then
io.write(myFile, "Teste de l'ecriture dans un ficher")
io.close(myFile)
print ("Contenu de myFile: "..myFile)
end
return 0
end
return { run=run }
Contenu dans le débog:
- Code:
luaDumpState(/SCRIPTS/TELEMETRY/test2.luac): Saved bytecode to file.
convertToSimuPath(): readme.txt -> readme.txt
findTrueFileName(readme.txt)
found in map: readme.txt
f_open(readme.txt, a) = 088B49E8 (FIL 07C7F330)
f_close(088B49E8) (FIL:07C7F330)
Script test2 error: /SCRIPTS/TELEMETRY/test2.lua:8: attempt to concatenate local 'myFile' (a userdata value)
f_close(00000000) (FIL:07C7F330)
vian31- Messages : 111
Date d'inscription : 04/04/2016
Age : 41
Localisation : Toulouse
Re: Récupérer le temps de vol de tous les modèles
Faut pas confondre le handler du fichier (retourné par io.open) et son contenu ! Ensuite on peut pas en lua faire comme on ferait en 'c' un < if variable> à cause de la gestion de la valeur 'nil'. Pour bien démarrer, s'inspirer de : https://opentx.gitbooks.io/opentx-2-2-lua-reference-guide/lib/io.html
3djc
3djc
3djc- Messages : 2871
Date d'inscription : 25/09/2016
Age : 57
Localisation : Belgique
Re: Récupérer le temps de vol de tous les modèles
Oui, je l'ai lu et essaye de m'en inspirer... Pas facile quand on est pas du métier !! Mais c'est intéressant et j'aime bien apprendre de cette manière. Surtout si j'ai un petit coup de pouce de temps en temps. Ça donne du courage et ça permet souvent de débloquer..3djc a écrit:Faut pas confondre le handler du fichier (retourné par io.open) et son contenu ! Ensuite on peut pas en lua faire comme on ferait en 'c' un < if variable> à cause de la gestion de la valeur 'nil'. Pour bien démarrer, s'inspirer de : https://opentx.gitbooks.io/opentx-2-2-lua-reference-guide/lib/io.html
3djc
vian31- Messages : 111
Date d'inscription : 04/04/2016
Age : 41
Localisation : Toulouse
Re: Récupérer le temps de vol de tous les modèles
Bon, je suis reparti de la base en faisant un copier/coller du script de la page https://opentx.gitbooks.io/opentx-2-2-lua-reference-guide/lib/io.html dans un FUNCTIONS script que j'appelle avec un inter. J'ai modifié uniquement le fichier qui est "timer.txt", placé dans le même dossier que le script, et modifié le contenu de l'instruction Print pour bien la visualiser dans la fenêtre Débog.
Le script se lance bien, il s'exécute sans arrêt temps que le l'inter est en position. En revanche le fichier timer.txt reste désespérément vide...
Je ne vois pas ce qui cloche
Le fichier .lua :
Le résultat dans la fenêtre de débog:
*******************************************************************************
convertToSimuPath(): timer.txt -> timer.txt
findTrueFileName(timer.txt)
found in map: timer.txt
f_open(timer.txt, 12) = 08EEA150 (FIL 08B8D2F0)
f_size(08EEA150) 2816
f_close(08EEA150) (FIL:08B8D2F0)
f_close(00000000) (FIL:08B8D2F0)
Le script se lance bien, il s'exécute sans arrêt temps que le l'inter est en position. En revanche le fichier timer.txt reste désespérément vide...
Je ne vois pas ce qui cloche
Le fichier .lua :
- Code:
local function run(event)
print("*******************************************************************************")
local f = io.open("timer.txt", "a") -- open file in append mode
io.write(f, "first line\r\nsecond line\r\n")
io.write(f, 4, "\r\n", 35.6778, "\r\n") -- one can write multiple items at the same time
local foo = -4.45
io.write(f, foo, "\r\n")
io.close(f)
return 1 -- this will end the script execution
end
return { run=run }
Le résultat dans la fenêtre de débog:
*******************************************************************************
convertToSimuPath(): timer.txt -> timer.txt
findTrueFileName(timer.txt)
found in map: timer.txt
f_open(timer.txt, 12) = 08EEA150 (FIL 08B8D2F0)
f_size(08EEA150) 2816
f_close(08EEA150) (FIL:08B8D2F0)
f_close(00000000) (FIL:08B8D2F0)
vian31- Messages : 111
Date d'inscription : 04/04/2016
Age : 41
Localisation : Toulouse
Re: Récupérer le temps de vol de tous les modèles
L'erreur est dans le chemin du nom de fichier. Il manque le "/".
Tu remplace la ligne par
Tu remplace la ligne par
- Code:
local f = io.open("/timer.txt", "a") -- open file in append mode
Ceeb182- Modérateur
- Messages : 2280
Date d'inscription : 29/10/2016
Age : 49
Localisation : France
Re: Récupérer le temps de vol de tous les modèles
Merci Ceeb, ça marche !
Dès que j'ai un peu de temps je me penche sur la manière de manipuler les timer.value dans le fichier. Visiblement c'est un chiffre en seconde qui est enregistré, donc ça va demander un peu de manip. Ça devrait (presque) être à ma portée...
En revanche, comment faire pour que le script ne s'exécute qu'une seule fois ? Car temps que l'inter est enclenché il tourne... J'ai essayé avec un inter logique momentané type EDGE, il a quand même le temps de s'exécuter 2 fois, donc ça fait deux entrées créées dans le fichier texte.
Dès que j'ai un peu de temps je me penche sur la manière de manipuler les timer.value dans le fichier. Visiblement c'est un chiffre en seconde qui est enregistré, donc ça va demander un peu de manip. Ça devrait (presque) être à ma portée...
En revanche, comment faire pour que le script ne s'exécute qu'une seule fois ? Car temps que l'inter est enclenché il tourne... J'ai essayé avec un inter logique momentané type EDGE, il a quand même le temps de s'exécuter 2 fois, donc ça fait deux entrées créées dans le fichier texte.
vian31- Messages : 111
Date d'inscription : 04/04/2016
Age : 41
Localisation : Toulouse
Re: Récupérer le temps de vol de tous les modèles
Utilise une variable globale qui sert de Flag.
Lors du passage à ta fonction, elle ne s’exécute que si ta variable est "False". Puis elle attribue "True" à cette variable globale. Du coup ta fonction ne s’exécute plus.
C'est une autre fonction qui permet d'initialiser à "False" ta variable globale et ainsi ré-autoriser l'exécution de ta fonction précédente.
Lors du passage à ta fonction, elle ne s’exécute que si ta variable est "False". Puis elle attribue "True" à cette variable globale. Du coup ta fonction ne s’exécute plus.
C'est une autre fonction qui permet d'initialiser à "False" ta variable globale et ainsi ré-autoriser l'exécution de ta fonction précédente.
Ceeb182- Modérateur
- Messages : 2280
Date d'inscription : 29/10/2016
Age : 49
Localisation : France
Re: Récupérer le temps de vol de tous les modèles
Voilà c'est fait avec la VG9 en temps que flag. Ca marche très bien.
Il me faut maintenant décider quand l'exécuter. Je crois que le plus simple est d'injecter le temps de vol quand je coupe les logs après l'atterro.
- Code:
local function run(event)
local gv9 = model.getGlobalVariable(8, 0) -- on récupère la valeur du flag (Variable globale 9)
print("GVAR9: ", gv9)
if gv9 == 0 then -- on teste sa valeur: si 0 on va enregistrer le chrono
local f = io.open("/timer.txt", "a") -- ouverture du fichier en écriture
local modelName = model.getInfo() -- on récupère le nom du modèle
local timer = model.getTimer(1) -- on récupère le timer concerné
io.write(f, modelName.name, "\r\n", timer.value) -- écriture dans le fichier texte
io.close(f)
print("Valeur écrite: ", timer.value)
model.setGlobalVariable(8, 0, 1) -- on passe le flag à 1 pour arrêter le script
print("GVAR9: ", gv9)
end
return 1 -- this will end the script execution
end
return { run=run }
Il me faut maintenant décider quand l'exécuter. Je crois que le plus simple est d'injecter le temps de vol quand je coupe les logs après l'atterro.
vian31- Messages : 111
Date d'inscription : 04/04/2016
Age : 41
Localisation : Toulouse
Ceeb182- Modérateur
- Messages : 2280
Date d'inscription : 29/10/2016
Age : 49
Localisation : France
Re: Récupérer le temps de vol de tous les modèles
Après réflexion il n'y a même pas besoin de ce flag si j'utilise l'écriture dans le fichier avec le paramètre "w". A chaque fois l'ancienne valeur sera supprimée et réécrite avec la nouvelle. Par contre faut l'ouvrir en lecture juste avant pour lire l'ancienne valeur...
J'aurai quand même appris un truc. Merci Ceeb.
J'aurai quand même appris un truc. Merci Ceeb.
vian31- Messages : 111
Date d'inscription : 04/04/2016
Age : 41
Localisation : Toulouse
Sujets similaires
» recupérer modéles sur Turnigy 9X pour les installer sur X9D+
» Temps de fonctionnement de la radio et des modèles
» Perte de liaison avec tous mes modèles
» 1 seul recepteur pour tous mes modèles, S-Bus --> 14 voies PWM ?
» Résolu Script 2 timers, un temps de vol et un meilleur temps de vol
» Temps de fonctionnement de la radio et des modèles
» Perte de liaison avec tous mes modèles
» 1 seul recepteur pour tous mes modèles, S-Bus --> 14 voies PWM ?
» Résolu Script 2 timers, un temps de vol et un meilleur temps de vol
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum