Le forum français des radios OpenTX ou FrOS
Le forum français des radios OpenTX ou FrOS
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
-17%
Le deal à ne pas rater :
(Black Friday) Apple watch Apple SE GPS + Cellular 44mm (plusieurs ...
249 € 299 €
Voir le deal

Récupérer le temps de vol de tous les modèles

4 participants

Aller en bas

Récupérer le temps de vol de tous les modèles Empty Récupérer le temps de vol de tous les modèles

Message par vian31 Jeu 8 Nov 2018 - 15:46

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 Wink


Dernière édition par vian31 le Jeu 8 Nov 2018 - 15:59, édité 1 fois (Raison : Modif titre)
vian31
vian31

Masculin Messages : 111
Date d'inscription : 04/04/2016
Age : 41
Localisation : Toulouse

Revenir en haut Aller en bas

Récupérer le temps de vol de tous les modèles Empty Re: Récupérer le temps de vol de tous les modèles

Message par Eric84AMC Jeu 8 Nov 2018 - 21:09

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
Eric84AMC
Eric84AMC

Masculin Messages : 2057
Date d'inscription : 21/09/2013
Age : 50
Localisation : Monteux

http://www.amc-pernes-lesvalayans.com/index.php

Revenir en haut Aller en bas

Récupérer le temps de vol de tous les modèles Empty Re: Récupérer le temps de vol de tous les modèles

Message par vian31 Jeu 8 Nov 2018 - 21:33

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 Récupérer le temps de vol de tous les modèles 2058596370
vian31
vian31

Masculin Messages : 111
Date d'inscription : 04/04/2016
Age : 41
Localisation : Toulouse

Revenir en haut Aller en bas

Récupérer le temps de vol de tous les modèles Empty Re: Récupérer le temps de vol de tous les modèles

Message par vian31 Ven 9 Nov 2018 - 11:27

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...

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
vian31

Masculin Messages : 111
Date d'inscription : 04/04/2016
Age : 41
Localisation : Toulouse

Revenir en haut Aller en bas

Récupérer le temps de vol de tous les modèles Empty Re: Récupérer le temps de vol de tous les modèles

Message par 3djc Ven 9 Nov 2018 - 11:37

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

Masculin Messages : 2871
Date d'inscription : 25/09/2016
Age : 57
Localisation : Belgique

Revenir en haut Aller en bas

Récupérer le temps de vol de tous les modèles Empty Re: Récupérer le temps de vol de tous les modèles

Message par vian31 Ven 9 Nov 2018 - 13:25

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
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..
vian31
vian31

Masculin Messages : 111
Date d'inscription : 04/04/2016
Age : 41
Localisation : Toulouse

Revenir en haut Aller en bas

Récupérer le temps de vol de tous les modèles Empty Re: Récupérer le temps de vol de tous les modèles

Message par vian31 Ven 9 Nov 2018 - 14:27

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  Embarassed

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
vian31

Masculin Messages : 111
Date d'inscription : 04/04/2016
Age : 41
Localisation : Toulouse

Revenir en haut Aller en bas

Récupérer le temps de vol de tous les modèles Empty Re: Récupérer le temps de vol de tous les modèles

Message par Ceeb182 Ven 9 Nov 2018 - 19:52

L'erreur est dans le chemin du nom de fichier. Il manque le "/".
Tu remplace la ligne par
Code:
local f = io.open("/timer.txt", "a")        -- open file in append mode
et ça fonctionne ! Le fichier créé se trouve à la racine de la carte SD.

_________________
Récupérer le temps de vol de tous les modèles E0ej[OpenTX-Doc] Vos questions ont sans doute une réponse francophone ICI !
Comme le dit Récupérer le temps de vol de tous les modèles Wbz6 la question n'est plus "Est-ce possible ?" mais "Comment faire pour... ?"
           Le tandem Récupérer le temps de vol de tous les modèles F2o3 & Récupérer le temps de vol de tous les modèles Tg3z est semblable à un jeu de LEGO®, chaque brique étant une fonctionnalité.
Ceeb182
Ceeb182
Modérateur

Masculin Messages : 2280
Date d'inscription : 29/10/2016
Age : 49
Localisation : France

Revenir en haut Aller en bas

Récupérer le temps de vol de tous les modèles Empty Re: Récupérer le temps de vol de tous les modèles

Message par vian31 Lun 12 Nov 2018 - 10:11

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.
vian31
vian31

Masculin Messages : 111
Date d'inscription : 04/04/2016
Age : 41
Localisation : Toulouse

Revenir en haut Aller en bas

Récupérer le temps de vol de tous les modèles Empty Re: Récupérer le temps de vol de tous les modèles

Message par Ceeb182 Lun 12 Nov 2018 - 10:24

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.

_________________
Récupérer le temps de vol de tous les modèles E0ej[OpenTX-Doc] Vos questions ont sans doute une réponse francophone ICI !
Comme le dit Récupérer le temps de vol de tous les modèles Wbz6 la question n'est plus "Est-ce possible ?" mais "Comment faire pour... ?"
           Le tandem Récupérer le temps de vol de tous les modèles F2o3 & Récupérer le temps de vol de tous les modèles Tg3z est semblable à un jeu de LEGO®, chaque brique étant une fonctionnalité.
Ceeb182
Ceeb182
Modérateur

Masculin Messages : 2280
Date d'inscription : 29/10/2016
Age : 49
Localisation : France

Revenir en haut Aller en bas

Récupérer le temps de vol de tous les modèles Empty Re: Récupérer le temps de vol de tous les modèles

Message par vian31 Lun 12 Nov 2018 - 11:24

Voilà c'est fait avec la VG9 en temps que flag. Ca marche très bien.
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
vian31

Masculin Messages : 111
Date d'inscription : 04/04/2016
Age : 41
Localisation : Toulouse

Revenir en haut Aller en bas

Récupérer le temps de vol de tous les modèles Empty Re: Récupérer le temps de vol de tous les modèles

Message par Ceeb182 Lun 12 Nov 2018 - 13:04

Cool ! Récupérer le temps de vol de tous les modèles 2258904616

_________________
Récupérer le temps de vol de tous les modèles E0ej[OpenTX-Doc] Vos questions ont sans doute une réponse francophone ICI !
Comme le dit Récupérer le temps de vol de tous les modèles Wbz6 la question n'est plus "Est-ce possible ?" mais "Comment faire pour... ?"
           Le tandem Récupérer le temps de vol de tous les modèles F2o3 & Récupérer le temps de vol de tous les modèles Tg3z est semblable à un jeu de LEGO®, chaque brique étant une fonctionnalité.
Ceeb182
Ceeb182
Modérateur

Masculin Messages : 2280
Date d'inscription : 29/10/2016
Age : 49
Localisation : France

Revenir en haut Aller en bas

Récupérer le temps de vol de tous les modèles Empty Re: Récupérer le temps de vol de tous les modèles

Message par vian31 Lun 12 Nov 2018 - 14:15

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.
vian31
vian31

Masculin Messages : 111
Date d'inscription : 04/04/2016
Age : 41
Localisation : Toulouse

Revenir en haut Aller en bas

Récupérer le temps de vol de tous les modèles Empty Re: Récupérer le temps de vol de tous les modèles

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum