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.
Le Deal du moment : -25%
PC Portable Gamer 16,1” HP Victus 16 – 16 ...
Voir le deal
749.99 €

LUA Scripting sur V2.1.x

+4
JimboFarrar
Eric84AMC
Kilrah
Heisenberg
8 participants

Page 3 sur 7 Précédent  1, 2, 3, 4, 5, 6, 7  Suivant

Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par dev.fred Mar 22 Sep 2015 - 9:18

J'essaye d'utiliser ce code sans succès pour le moment:

Code:
void FrSkySportSensorGps::setData(float lat, float lon, float alt, float speed, float cog, uint8_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
{
  FrSkySportSensorGps::lat = setLatLon(lat, true);
  FrSkySportSensorGps::lon = setLatLon(lon, false);
  FrSkySportSensorGps::cog = cog * 100;
  FrSkySportSensorGps::speed = speed * 1944; // Convert m/s to knots
  FrSkySportSensorGps::alt = alt * 100;
  FrSkySportSensorGps::date = setDateTime(year, month, day, true);
  FrSkySportSensorGps::time = setDateTime(hour, minute, second, false);
}

uint32_t FrSkySportSensorGps::setLatLon(float latLon, bool isLat)
{
  uint32_t data = (uint32_t)((latLon < 0 ? -latLon : latLon) * 60 * 10000) & 0x3FFFFFFF;
  if(isLat == false) data |= 0x80000000;
  if(latLon < 0) data |= 0x40000000;

  return data;
}

J'en suis là, ç'est Ok pour GPS-T mais je n'arrive à rien avec GPS-LL:
Code:
 bool isDate=true;
  _int32 data = 1; //YearorHour;
  data <<= 8;
  data |= 2; //monthOrMinute;
  data <<= 8;
  data |= 10; //dayOrSecond;
  data <<= 8;
  if(isDate == true) data |= 0xFF;
 // return data;
  bool isLat=true;
  float latLon=45;
  data = (_int32)((latLon < 0 ? -latLon : latLon) * 60 * 10000) & 0x3FFFFFFF;
  if(isLat == false) data |= 0x80000000;
  if(latLon < 0) data |= 0x40000000;

  return data;

dev.fred

Masculin Messages : 760
Date d'inscription : 07/02/2014
Localisation : Paimpol (22)

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par dev.fred Mar 22 Sep 2015 - 9:26

ça progresse du coté de github, mon cas alimente un appel ouvert par albino et il reprend mes arguments.

projectkk2glider a écrit:commented 4 minutes ago

Why we don't have the simple possibility to enter until 6 cells values separated by a semicolumn in CELLS and a converter will crunch this string to create the right s.port format internally. And at the other side, getValue able to have a second optionnal parameter, an indice to get the simple value : eg getValue("Cels",4) to get the value of Cels number 4.
GPS-LL, 2 values, longitude;latitude, GPS-T, 6 values, H;M;S;Y;M;D. Something like that.

Nice idea, I've added it to the #2447

Donc il n'y aura peut-être plus besoin de coder-décoder pour utiliser un truc qui devrait être simple

dev.fred

Masculin Messages : 760
Date d'inscription : 07/02/2014
Localisation : Paimpol (22)

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par Sacre100 Mar 22 Sep 2015 - 9:56

Chouette, c'est une bonne idée que tu as eue.

Pour le getValue, j'imagine que ce serait mieux d'avoir un getCellValue("Cels", 4), au moins c'est ambiguité.

En attendant, ce n'est pas complqué de l'écrire en LUA :
Code:
local function getCellValue(name, position)
  local values = getValue(name)
  if type(values) == "table" and position >= 1 and position <= #values then
    return values[position]
  else
    return nil -- ou tout autre valeur indiquant qu'on n'a rien trouvé
  end
end
Sacre100
Sacre100

Masculin Messages : 1889
Date d'inscription : 30/11/2013
Age : 67
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par Sacre100 Mar 22 Sep 2015 - 10:10

dev.fred a écrit:... mais je n'arrive à rien avec GPS-LL ...

Le problème, c'est que GPS envoie la latitude et la longitude séparément.

Alors j'ai essayé d'envoyé deux valeurs, séparée par un espace, par une virgule, par un point-virgule ou même à tour de rôle mais ça ne marche pas :
Latitude 45° -> 0x019BFFC0
Longitude 45° -> 0x819BFCC0

[EDIT]

En fait ça marche à moitié, la latitude est bien renseignée mais la longitude pas du tout.

LUA Scripting sur V2.1.x - Page 3 Latlon10

LUA Scripting sur V2.1.x - Page 3 Latlon11

[/EDIT]
Sacre100
Sacre100

Masculin Messages : 1889
Date d'inscription : 30/11/2013
Age : 67
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par Heisenberg Mar 22 Sep 2015 - 11:02

dev.fred a écrit:ça progresse du coté de github, mon cas alimente un appel ouvert par albino et il reprend mes arguments.

projectkk2glider a écrit:commented 4 minutes ago

Why we don't have the simple possibility to enter until 6 cells values separated by a semicolumn in CELLS and a converter will crunch this string to create the right s.port format internally. And at the other side, getValue able to have a second optionnal parameter, an indice to get the simple value : eg getValue("Cels",4) to get the value of Cels number 4.
GPS-LL, 2 values, longitude;latitude, GPS-T, 6 values, H;M;S;Y;M;D. Something like that.

Nice idea, I've added it to the #2447

Donc il n'y aura peut-être plus besoin de coder-décoder pour utiliser un truc qui devrait être simple

Ahhh là, ce sera opé pour tous !!
Tu causais de synergie, ça paye. Very Happy
Heisenberg
Heisenberg

Masculin Messages : 1505
Date d'inscription : 30/07/2015
Age : 52
Localisation : A l'étranger

http://tinyurl.com/TARANIS-HEISENBERG

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par dev.fred Mar 22 Sep 2015 - 16:38

Sacre100 a écrit:En fait ça marche à moitié, la latitude est bien renseignée mais la longitude pas du tout.

Que nenni, ça peut marcher Wink

1) Il faut utiliser la valeur décimale, la longitude n'aime pas l'hexadécimal  Very Happy
Longitude 45 => -2120483648 au lieu de 0x819bfcc0
Latitude 45 => 27000000 au lieu de 0x19bfcc0
2) Tu rentres la 1ere, le GPS reste muet mais l’Édition du capteur la voit bien, mais dés que tu rentres, à la place, la 2eme valeur le GPS affiche le tout et l"*" clignote:

LUA Scripting sur V2.1.x - Page 3 Captur33

Les devs ont beau mettre plein d'obstacles pour qu'on ne puisse pas simuler les capteurs à valeurs multiples, mais rien ne résiste !

dev.fred

Masculin Messages : 760
Date d'inscription : 07/02/2014
Localisation : Paimpol (22)

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par Sacre100 Mar 22 Sep 2015 - 18:59

dev.fred a écrit:...
Les devs ont beau mettre plein d'obstacles pour qu'on ne puisse pas simuler les capteurs à valeurs multiples, mais rien ne résiste !

Trop fort, bravo, fallait le trouver.

Je me suis fait un petit utilitaire en Robol qui me fait les calculs et les copie dans le presse-papiers, ça simplifie la vie. Le voici si par hasard d'autres utilisent ce langage.
Code:
lat: func [value [number! unset!]][
  if unset? get/any 'value [value: attempt [to-decimal trim read clipboard://]]
  if value [write clipboard:// mold value: 1073741823 and to-integer (value * 60 * 10000)]
  value
]
lon: func [value [number! unset!]][
  if unset? get/any 'value [value: attempt [to-decimal trim read clipboard://]]
  if value [write clipboard:// mold value: (1073741823 and to-integer (value * 60 * 10000)) or -2147483648]
  value
]

Sinon, voici un jeu test avec deux coordonnées converties distantes de 790m environ (celle où je décolle et celle quand je pose au trou)

Code:
46.515826, 6.999142 -> 27909495 -2143284163
46.510178, 6.992867 -> 27906106 -2143287928
Sacre100
Sacre100

Masculin Messages : 1889
Date d'inscription : 30/11/2013
Age : 67
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par Heisenberg Mer 23 Sep 2015 - 23:19

Hello tertous.

Ça avance bien tout ça, et je commence à arriver à sortir qqch de pas trop mal sur mon écran grâce à vos lumières.

Pour le moment, je n'en suis qu'au stade du script télémétrique, je n'ai pas encore étudié les autres types de scripts et j'ai encore une chose que je ne parviens pas à faire : Stocker une info sur l'écran.

Exemple : J'arrive à récupérer la position de mon manche de gaz et ma conso. Maintenant, je veux connaitre ma position de ce manche à un certain seuil de conso.

Concrètement avec un seuil défini à 20A :
Code:
if (CURRENT >2000) and (CURRENT <2100) then
local positiongaz = getValue(MIXSRC_Thr)
lcd.drawNumber(30, 30, positiongaz,0)
end

Jusque là tout va bien, j'ai créé ma variable "positiongaz" mais comment la conserver pour une lecture après vol ? (hormis logs).
----
2eme question : Est-ce qu'un script télémétrique permet de faire un setGlobalVariable ? Je n'y parviens pas, et soit j'ai un problème de syntaxe, soit j'essaie quelque-chose d'impossible.

Et enfin, sans vouloir abuser, quelle est l'exacte formule de calcul pour obtenir ce résultat : [Longitude 45 => -2120483648 & Latitude 45 => 27000000]
Je ne pige pas comment vous avez fait.

Je sais que 3 questions dans un seul message ça fait beaucoup, la plus importante pour moi est la 1ere, et les 2 suivantes vont très vite m'être utiles, et comme c'est le sujet le plus approprié Wink
Heisenberg
Heisenberg

Masculin Messages : 1505
Date d'inscription : 30/07/2015
Age : 52
Localisation : A l'étranger

http://tinyurl.com/TARANIS-HEISENBERG

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par dev.fred Jeu 24 Sep 2015 - 7:14

1eme question : comment la conserver pour une lecture après vol ?
Dans une VGn par exemple.

2eme question : Est-ce qu'un script télémétrique permet de faire un setGlobalVariable ? Je n'y parviens pas, et soit j'ai un problème de syntaxe, soit j'essaie quelque-chose d'impossible.

J'avais fait ça : on ajoute la ligne
--model.setGlobalVariable(gvar, flightmode, value)
model.setGlobalVariable(0, 0, percent)


flightmode= la phase de vol
gvar=0->VG1
Que l'on peut exploiter en utilisant le couple inters logiques/fonctions spéciales
LUA Scripting sur V2.1.x - Page 3 Captur63

LUA Scripting sur V2.1.x - Page 3 Captur64


Et enfin, sans vouloir abuser, quelle est l'exacte formule de calcul pour obtenir ce résultat : [Longitude 45 => -2120483648 & Latitude 45 => 27000000]
Je ne pige pas comment vous avez fait.

J'ai utilisé MVC++ express que j'ai installé pour créer l’environnement de build et le code je l'ai trouvé sur un forum.
Le code utilisé est très proche du C, ici, on n'est pas dans les concepts abstraits du C++, c'est lisible facilement.
Il est brut de pomme, pour avoir les 2 valeurs lat et lon, il faut faire islLat=true; noter la valeur de lat et isLat=false; et relancer pour noter lon!

Code:
 bool isLat=true;
   float latLon=45;
  _int32 data = 0;
  data = (_int32)((latLon < 0 ? -latLon : latLon) * 60 * 10000) & 0x3FFFFFFF;
  if(isLat == false) data |= 0x80000000;
  if(latLon < 0) data |= 0x40000000;
return data

dev.fred

Masculin Messages : 760
Date d'inscription : 07/02/2014
Localisation : Paimpol (22)

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par Kilrah Jeu 24 Sep 2015 - 9:01

Il est possible de créer un ficher sur la carte SD et d'écrire/relire ce qu'on veut dedans depuis lua.

Kilrah

Masculin Messages : 2181
Date d'inscription : 28/01/2014
Localisation : Suisse

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par Heisenberg Jeu 24 Sep 2015 - 13:36

Kilrah a écrit:Il est possible de créer un ficher sur la carte SD et d'écrire/relire ce qu'on veut dedans depuis lua.

Je ne connaissais pas, je vais aussi explorer ce domaine.

@Dev.fred : Je vais re-tenter les GV dans ce cas Sad
Sinon, pour la formule, selon ta réponse, elle n'est pas possible à définir dans un doc Excel si je ne me trompe (?)
Heisenberg
Heisenberg

Masculin Messages : 1505
Date d'inscription : 30/07/2015
Age : 52
Localisation : A l'étranger

http://tinyurl.com/TARANIS-HEISENBERG

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par dev.fred Jeu 24 Sep 2015 - 13:47

Avant de faire un petit outil sous MVC++, j'ai regardé la fonction de décalage de mon excel qui est en version 2007 et je ne l'ai pas.

Par contre elle existe sous Excel 2016, Excel 2013, Excel Online, Excel 2016 for Mac, Excel for Mac 2011.
https://support.office.com/fr-ca/article/BITDECALG-BITDECALG-fonction-c55bb27e-cacd-4c7c-b258-d80861a03c9c

Maintenant, j'ai fini mon ciment ce matin, je peux ajouter le gps dans l'outil, je trouve ça fun  LUA Scripting sur V2.1.x - Page 3 2258904616


Dernière édition par dev.fred le Jeu 24 Sep 2015 - 19:28, édité 1 fois (Raison : orto)

dev.fred

Masculin Messages : 760
Date d'inscription : 07/02/2014
Localisation : Paimpol (22)

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par dev.fred Jeu 24 Sep 2015 - 15:45

Les coordonnées sont à entrer en degrés décimaux, attention à utiliser une virgule dans les valeurs décimales et la télémétrie affiche en DM:

LUA Scripting sur V2.1.x - Page 3 Captur37
Fichiers joints
LUA Scripting sur V2.1.x - Page 3 Attachment
Telemetry-tool.zip Vous n'avez pas la permission de télécharger les fichiers joints.(21 Ko) Téléchargé 18 fois

dev.fred

Masculin Messages : 760
Date d'inscription : 07/02/2014
Localisation : Paimpol (22)

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par Heisenberg Jeu 24 Sep 2015 - 18:58

Wow, ça, c'est du boulot !
Merci.
Heisenberg
Heisenberg

Masculin Messages : 1505
Date d'inscription : 30/07/2015
Age : 52
Localisation : A l'étranger

http://tinyurl.com/TARANIS-HEISENBERG

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par Kilrah Jeu 24 Sep 2015 - 20:33

Qui aurait pu être fait directement dans le simu de télémétrie Wink

Kilrah

Masculin Messages : 2181
Date d'inscription : 28/01/2014
Localisation : Suisse

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par dev.fred Jeu 24 Sep 2015 - 21:31

Il ne manquait plus que la date et l'heure pour avoir toute la famille des capteurs à données multiples  LUA Scripting sur V2.1.x - Page 3 2258904616

LUA Scripting sur V2.1.x - Page 3 Captur38

Fichiers joints
LUA Scripting sur V2.1.x - Page 3 Attachment
Telemetry-tool1.zip Vous n'avez pas la permission de télécharger les fichiers joints.(22 Ko) Téléchargé 7 fois

dev.fred

Masculin Messages : 760
Date d'inscription : 07/02/2014
Localisation : Paimpol (22)

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par dev.fred Jeu 24 Sep 2015 - 22:30

Kilrah a écrit:Qui aurait pu être fait directement dans le simu de télémétrie
Je ne sais faire que des soins palliatifs LUA Scripting sur V2.1.x - Page 3 2258904616 .


Dernière édition par dev.fred le Ven 25 Sep 2015 - 3:02, édité 1 fois

dev.fred

Masculin Messages : 760
Date d'inscription : 07/02/2014
Localisation : Paimpol (22)

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par Heisenberg Jeu 24 Sep 2015 - 23:46

Tu me trouverais casse-c... Si je te disais que tu approcherais la perfection si tu pouvais ajouter encore 4 à 6 cellules de plus de batteries pour couvrir 95% des besoins du modelisme ?

Oui ? Bon, je sors.

Blague à part, je te tire ma révérence pour cet utilitaire qui vient combler ce manque dans companion !
Bravo.
Heisenberg
Heisenberg

Masculin Messages : 1505
Date d'inscription : 30/07/2015
Age : 52
Localisation : A l'étranger

http://tinyurl.com/TARANIS-HEISENBERG

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par Sacre100 Ven 25 Sep 2015 - 19:05

Heisenberg a écrit:...
Jusque là tout va bien, j'ai créé ma variable "positiongaz" mais comment la conserver pour une lecture après vol ? (hormis logs).
...

La 2.1 offre quelques possibilités d'accès aux fichiers sur la SD :
- io.open(filename, options)
- io.seek(file, position)
- io.read(file)
- io.write(file, value)
- io.close(file)

Je ne peux pas t'en dire plus, je n'ai pas testé.
Sacre100
Sacre100

Masculin Messages : 1889
Date d'inscription : 30/11/2013
Age : 67
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par Heisenberg Ven 2 Oct 2015 - 10:34

Ce topic et d'autres infos glanées ici et outre Atlantique m'a permit de réaliser un très joli écran de télémétrie en version bêta, pas encore totalement terminé, pas encore optimisé, et avec des jauges verticales, des aides aux réglages de modèle, des interactions etc... le tout en respectant une certaine organisation du script comme suggérée par Sacre100. Sans vous, je n'y serais pas arrivé, et je suis encore médiocre.

Pour garder une valeur affichée à l'écran, c'était tout simple, il suffisait de déclarer la locale variable avant la boucle et ensuite de jouer avec dans la boucle.
Erreur de débutant, tout mon script était dans la boucle, les variables étaient re-déclarées à chaque passage et il ne m'était pas possible de faire des moyennes, garder des maxima/minima etc... J'en apprend un peu plus chaque jour et ce n'est pas très compliqué, ça se rapproche un peu du Perl. Vos réponses sur la conservation d'une valeur m'a été instructive car ça va me permettre de faire des moyennes sur plusieurs vols, sur un pack de batterie qui va dans plusieurs zincs etc...

A présent, je recherche à faire une jauge de fuel basée sur le restant en mAh.
- Une variable fixe à 3000 pour un accu de 3000.
- Une variable proportionnelle de 100 à 0% selon ce qui a été pompé dans l'accu.

Je pensais y-être arrivé mais mon calcul est faux.
Au début, j'ai pensé simplement à ça :
LUA Scripting sur V2.1.x - Page 3 2015-110

... mais c'est bcp trop simple.

Je ne vois qu'une possibilité : C'est de sampler Curr et incrémenter une variable à chaque fois, ou me servir d'un timer pour ensuite recalculer.

J'ai donc encore 3 questions :

1) Suis-je passé à côté de qqch de plus simple déjà natif dans OpenTX pour le calcul de la jauge fuel ?

2) Comment savoir combien de fois est exécuté un Lua en 1 seconde ?

3) Comment savoir quelle quantité de ressources en mémoire et processeur que prend un Lua ? (Le mien fait + de 600 lignes et à l'air bien lourd car les annonces vocales sont saccadées)
Heisenberg
Heisenberg

Masculin Messages : 1505
Date d'inscription : 30/07/2015
Age : 52
Localisation : A l'étranger

http://tinyurl.com/TARANIS-HEISENBERG

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par Kilrah Ven 2 Oct 2015 - 10:47

1) Oui, faut utiliser la formule "consommation", pas "totalisation".
2) - 3) Page statistiques/debug

Kilrah

Masculin Messages : 2181
Date d'inscription : 28/01/2014
Localisation : Suisse

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par Sacre100 Ven 2 Oct 2015 - 12:07

Heisenberg a écrit:... Pour garder une valeur affichée à l'écran, c'était tout simple, il suffisait de déclarer la locale variable avant la boucle et ensuite de jouer avec dans la boucle.
Erreur de débutant, tout mon script était dans la boucle, les variables étaient re-déclarées à chaque passage et il ne m'était pas possible de faire des moyennes, garder des maxima/minima etc...

Juste pour préciser :
- les variables "local xxx ..." déclarées dans une fonction sont disponible uniquement dans la fonction et sont réinitialisées à chaque appel de la fonction.
- les variables "local xxx ..." déclarées en dehors des fonctions sont disponibles dans tout le script et sont crées au chargement du script.
- les variables "xxx ..." (celles qui ne sont pas déclarées "local", utilisées aussi bien à l'intérieur qu'à l'extérieur d'une fonction) sont disponibles dans tous les scripts chargés dans l'environnement LUA et sont crées au chargement du premier script qui les utilise.

Ce qu'il faut savoir, c'est que les model (mixer) script, function script et telemetry script sont chargés dans le même environnement LUA. Lorsqu'un one-time script (dont font partie les wizard), les model, function et telemetry script sont déchargés, l'environnement LUA est recrée et seul le one-time script est chargé dans cet environnement. L'opération inverse est effectuée lorsque le one-time script est terminé. C'est important de le savoir car cela permet de partager des variables globales (et donc échanger des données) entre les model, function et telemtry script, mais il n'est pas possible d'échanger des données entre ces script et un one-time script.

Autre chose qu'il faut savoir, c'est que si tu déclares une fonction qui fait usage d'une variable qui n'est pas encore déclarée "local", la fonction va toujours accéder à une variable globale. Puis si tu déclares "local" une variable avec le même nom dans ton script et que tu écris ensuite une fonction qui accède à cette variable, même si elle portent le même nom, ce sont deux variables différentes autrement dit, pour la fonction écrite avant la déclaration, elle va accéder à la variable globale et pour celles écrite après la déclaration, elle va accéder à la variable locale. Ceci s'explique par le fait que LUA "compile" le script au moment du chargement et résout l'accès aux variable à ce moment là, pas lors de l'exécution.

Exemple de code pour illustrer cela :
Code:
local function f1 ()
  return (v)          -- v n'est pas encore déclarée alors retourne la variable globale
end
v = 1                 -- initialise v globale avec 1

local v               -- déclaration locale de v
local function f2 ()
  return (v)          -- v est déclarée local alors retourne la variable locale
end
v = 2                 -- initialise v locale avec 2

print("f1 : ", f1())  -- Appel de f1() -> donne 1 (variable globale)
print("f2 : ", f2())  -- Appel de f2() -> donne 2 (variable locale)

Ce script va donner dans la console :
Code:
f1 : 1
f2 : 2

J'en parle parce que cela m'est arrivé et que j'ai mis beaucoup, beaucoup de temps à comprendre où était le problème.
Sacre100
Sacre100

Masculin Messages : 1889
Date d'inscription : 30/11/2013
Age : 67
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par JimboFarrar Dim 4 Oct 2015 - 23:26

Salut à tous,
Question simple : comment récupérer pour un script la tension des batteries du Tx ? ça marchait pour 2.0.17 avec "tx-voltage", mais en 2.1.3, pas moyen.
J'ai écrit un joli script spécial planeur electrique qui reprend les différentes tension, les niveaux Rx et le vario pour 2.0.x, mais il me manque ça pour finir la conversion.
C'est un peu relou ce manque de doc, officielle ou pas, sur le scriptage en 2.1.x
Au secours !
Merci d'avance,
Jimbo

JimboFarrar

Masculin Messages : 22
Date d'inscription : 17/12/2014
Age : 64
Localisation : Bordeaux

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par Invité Lun 5 Oct 2015 - 7:29

J'ai eu pas mal de soucis de script en 2.1.3, et la conclusion empirique a laquelle je suis arrivé, c'est que souvent, les capteurs avec 'unité' ("v", "mah",...) posent des soucis. Essaye de créer un capteur calculé qui reprend la valeur mais sans unité (mais je n'ai pas testé spécifiquement pour tx batt).

G

Invité
Invité


Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par Heisenberg Lun 5 Oct 2015 - 9:05

Essaie : getValue("BtRx")
Heisenberg
Heisenberg

Masculin Messages : 1505
Date d'inscription : 30/07/2015
Age : 52
Localisation : A l'étranger

http://tinyurl.com/TARANIS-HEISENBERG

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x - Page 3 Empty Re: LUA Scripting sur V2.1.x

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 3 sur 7 Précédent  1, 2, 3, 4, 5, 6, 7  Suivant

Revenir en haut


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