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.

LUA Scripting sur V2.1.x

+4
JimboFarrar
Eric84AMC
Kilrah
Heisenberg
8 participants

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

Aller en bas

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

Message par Heisenberg Mar 13 Oct 2015 - 10:43

C'est rassurant, j'ai au moins identifié correctement le problème.
Je vais essayer avec une map de mes icônes déjà placées sur un format 212X64, ça va déjà alléger de 7 bitmaps, j'ai bon espoir d'y gagner un peu en truandant un peu partout le code.

Il est très beau ton écran d'horizon artificiel !!
La partie gauche, je comprends dans les gdes lignes comment tu as fait, ça doit d'ailleurs faire un bon paquet de lignes de code et de mise au point.

Par contre, quelle est ton astuce pour le cercle de droite ?
drawCircle n'existant pas, c'est du point par point ?
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 5 Empty Re: LUA Scripting sur V2.1.x

Message par Sacre100 Mar 13 Oct 2015 - 11:50

Jette un coup d'oeil dans le script, il n'est pas énorme, même pas 500 lignes : http://quetzal.homepage.bluewin.ch/ArduIMU_SPort.zip

Le cercle est dessiné par la fonction drawEllipse, une dizaine de lignes pas plus, c'est tout simple.

Par contre la partie de gauche, c'était nettement plus "touchy" même s'il ne faut pas tant de lignes pour arriver au résultat.
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 5 Empty Re: LUA Scripting sur V2.1.x

Message par Heisenberg Mer 14 Oct 2015 - 14:20

Je compte regarder ça dans la semaine.

J'ai essayé une autre astuce pour récupérer ma valeur Cels...
Les chiffres permettraient paraît il de récupérer les tensions de chaque éléments en allant directement piocher dans la table.

 local batt_cel1 = getValue("Cels",1)
 local batt_cel2 = getValue("Cels",2)

etc...

pour obtenir à la fin :

local batt_total = (batt_cel1 + batt_cel2 + batt_cel3 + batt_cel4 + batt_cel5 + batt_cel6)

L'idée me semblait simple et facile.
Sous companion avec l'utilitaire de Dev.Fred, bizarrement, chaque cellule affiche la totalité de la tension du pack.
Et dans la radio, ça bug, encore un écran blanc.

[EDIT] Erreur de ma part, ça pourrait être dispo dans les prochaines versions mais pas encore maintenant [/EDIT]
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 5 Empty Re: LUA Scripting sur V2.1.x

Message par Sacre100 Mer 14 Oct 2015 - 15:25

Un bout de code comme ça (pas testé), ça devrait faire l'affaire me semble-t-il.

Code:
local batt_total = 0
local batt_cells = getValue("Cels")
if type(batt_cells) == "table" then
  for , item in batt_cells do
    batt_total = batt_total + item
  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 5 Empty Re: LUA Scripting sur V2.1.x

Message par Heisenberg Mer 14 Oct 2015 - 16:11

Merci Sacre100.
Je vais essayer en fin de journée.
A vue d'oeil, la ligne ci-dessous doit causer une erreur (?)
Code:

  for , item in batt_cells do
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 5 Empty Re: LUA Scripting sur V2.1.x

Message par Heisenberg Mer 14 Oct 2015 - 17:20

J'ai un peu modifié ton script.
Et il me dit que Cels n'est pas une table, c'est curieux.

Code:

local batt_total = 0
local batt_cells = getValue("Cels")
if (type(batt_cells) == "table") then
 lcd.drawText(82, 40, "Le type est une table", SMLSIZE)
   for item in batt_cells do
       batt_total = batt_total + item
     end
else
        lcd.drawText(82, 40, "Le type n'est pas une table", SMLSIZE)
end
lcd.drawNumber(82, 48, batt_total, PREC2 + SMLSIZE + LEFT)
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 5 Empty Re: LUA Scripting sur V2.1.x

Message par Sacre100 Mer 14 Oct 2015 - 22:19

Heisenberg a écrit:... A vue d'oeil, la ligne ci-dessous doit causer une erreur (?)
Code:

  for , item in batt_cells do

Pas si sur, la syntaxe complète devrait être la suivante :
Code:
for index, item in pairs(batt_cells) do

ou

Code:
for index, item in ipairs(batt_cells) do

Mais sauf erreur, on peut ignorer index tout en laissant la virgule et le pairs(...) (ou ipairs(...)) peut l'être aussi.  A vérifier

Heisenberg a écrit:J'ai un peu modifié ton script.
Et il me dit que Cels n'est pas une table, c'est curieux.

Pour ce qui est de Cels qui ne retourne pas une table, je suspecte que le problème vient de la manière dont Cels est déclaré dans la télémétrie, j'avais constaté la chose et j'en parlais ici : https://frskytaranis.forumactif.org/t2666p30-lua-scripting-sur-v2-1-x#31294

En fait, lorsque Cels est détecté automatiquement, OpenTx crée le capteur spécial qui retourne bien une table. Si Cels est créé manuellement avec l'Id de Cels, c'est un capteur normal qui donne sauf erreur la totalité de la tension du pack.

Vérifie que ton Cels est bien ce capteur un peu spécial et non un capteur prédéfini usuel.
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 5 Empty Re: LUA Scripting sur V2.1.x

Message par dev.fred Jeu 15 Oct 2015 - 8:38

Ton horizon artificiel fait des émules, 2em post de la page : http://forum.taulabs.org/viewtopic.php?f=17&t=797

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 5 Empty Re: LUA Scripting sur V2.1.x

Message par Sacre100 Jeu 15 Oct 2015 - 9:02

dev.fred a écrit:Ton horizon artificiel fait des émules, 2em post de la page : http://forum.taulabs.org/viewtopic.php?f=17&t=797

Sur le cul le Marco, excellent, il faut que je regarde ça en détail, ça me fait super plaisir, merci pour le lien.
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 5 Empty Re: LUA Scripting sur V2.1.x

Message par Heisenberg Jeu 15 Oct 2015 - 18:20

Sacre100 a écrit:.../...Vérifie que ton Cels est bien ce capteur un peu spécial et non un capteur prédéfini usuel.

Tu as eu du nez, je n'aurais jamais trouvé, c'était bien la source de l'erreur, c'est vicieux cette détection automatique.

Finalement, ça fonctionne avec un peu de modifs perso et autres sources que j'ai rassemblées d'un autre forum que tu fréquentes.

Code:

local batt_sum = 0  
cellResult = getValue("Cels")
  if (type(cellResult) == "table") then
    cellValue = ""
    for i, v in ipairs(cellResult) do
      cellValue = cellValue .. i .. ": " .. v .. " "
      batt_sum = batt_sum + v
    end
  else
    cellValue = "telemetry not available"
  end

Avec ça, je récupère ma valeur de batterie totale et j'ai aussi un string dans lequel est affiché la valeur de chaque élément individuel.

Jusque là tout va bien sauf que j'aimerais pouvoir récupérer le nombre d'éléments et la valeur de chacun éléments pour les manipuler ensuite. En gros, le string cellValue, c'est bien mais je ne parviens pas à le disséquer proprement.

Dans un autre langage de prog, ce serait cellValue[1], cellValue[2] etc... mais pas en Lua.

Avec ce qui suit, ça marche mais je ne trouve pas cette méthode très propre.
De plus ça m'a l'air bien gourmand en ressources car je dois supprimer pas mal de lignes qui suivent pour le faire tourner sur la radio sinon ça plante.

Y-a t'il une autre méthode pour le même résultat ?

Code:

local batt_sum = 0  
cellResult = getValue("Cels")
  if (type(cellResult) == "table") then
    cellValue = ""
    for i, v in ipairs(cellResult) do
      cellValue = cellValue .. i .. ": " .. v .. " "
      batt_sum = batt_sum + v      

if i == 1 then
  cell01 = v  -- Tension de l'élément 1
  battype = 1  -- Nombre d'éléments du pack
elseif i == 2 then
  cell02 = v
  battype = 2
elseif i == 3 then
  cell03 = v
  battype = 3
elseif i == 4 then
  cell04 = v
  battype = 4
elseif i == 5 then
  cell05 = v
  battype = 5
elseif i == 6 then
  cell06 = v
  battype = 6
end
  else
    cellValue = "telemetry not available"
  end

[Edit] pour connaître le nombre d'élément, je viens de réagir que je l'ai sous les yeux, c'est tout simplement "i" une fois sorti de ce bout de code.
Mais pour avoir Cell01, Cell02 et la suite, je ne trouve pas. [/Edit]
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 5 Empty Re: LUA Scripting sur V2.1.x

Message par Sacre100 Jeu 15 Oct 2015 - 20:21

Heisenberg a écrit:... Dans un autre langage de prog, ce serait cellValue[1], cellValue[2] etc... mais pas en Lua. ...
Si, si, c'est bien la syntaxe LUA pour ça.

Heisenberg a écrit:... [Edit] pour connaître le nombre d'élément, je viens de réagir que je l'ai sous les yeux, c'est tout simplement "i" une fois sorti de ce bout de code. ...[/Edit]
Ou encore plus simple #cellResult qui te donne le nombre d'élément de la table cellResult.

Pour ta série de test, tu dois pouvoir la remplacer par assert(loadstring(...))
Par ailleurs, fait attention a déclarer tes variables locales (excepté lorsque tu veux artager tes variables entre plusieurs scripts.
Au final, j'écrirais un code comme ceci, plus concis mais peut-être pas plus rapide.
Code:
local batt_sum, batttype = 0, 0
local cellValue = "telemetry not available"
local cell01, cell02, cell03, cell04, cell05, cell06 = 0, 0, 0, 0, 0 ,0
local cellResult = getValue("Cels")
if type(cellResult) == "table" then
  cellValue = ""
  batttype = #cellResult
  for i, v in pairs(cellResult) do
    cellValue = cellValue .. i .. ": " .. v .. " "
    batt_sum = batt_sum + v
    assert(loadstring("cell0" .. i .. " = v"))
  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 5 Empty Re: LUA Scripting sur V2.1.x

Message par Heisenberg Jeu 15 Oct 2015 - 21:54

J'avais bien déclaré mes variables mais ne les avais pas recopiées dans mon message, je le fais tout le temps sur tes conseils d'il y-a quelques semaines, ça m'évite des erreurs intempestives. 1000 merci pour ton bout de code.

Je ne savais même pas qu'on pouvait déclarer les variables à la chaine comme dans ton exemple ci-dessus d'ailleurs.
A chaque message échangé j'avance et je t'avoue que je m'éclate avec le Lua  Very Happy

Assert, je ne connaissais pas non-plus, j'ai trouvé quelques lignes relatant de cette fonction mais pas très documentées. Ceci dit, je comprends parfaitement ce qu'assert(loadstring("cell0" .. i .. " = v")) est censé faire dans une boucle for.
Ça condense sérieusement le code, c'est bien plus lisible aussi.

J'ai bien déclaré local cell01, cell02, cell03, cell04, cell05, cell06 = 0, 0, 0, 0, 0 ,0 mais j'ai quand-même un retour d'erreur comme si ces variables n'existaient pas : attempt to call global 'loadstring' (a nil value)

[Edit] loadstring ne semble plus être d'actu. A la place, la fonction load devrait faire l'affaire et je n'ai plus d'erreur avec load mais mes cellules restent à zéro. [/Edit]
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 5 Empty Re: LUA Scripting sur V2.1.x

Message par Sacre100 Ven 16 Oct 2015 - 1:09

Heisenberg a écrit:...A chaque message échangé j'avance et je t'avoue que je m'éclate avec le Lua  Very Happy ...
C'est vrai qe c'est un langage sympa, il est concis, rapide et peut tourner sur des environnements très léger avec peu de mémoire et peu de puissance. La bible LUA est ici : http://www.lua.org/manual/5.2/

Heisenberg a écrit:... J'ai bien déclaré local cell01, cell02, cell03, cell04, cell05, cell06 = 0, 0, 0, 0, 0 ,0 mais j'ai quand-même un retour d'erreur comme si ces variables n'existaient pas : attempt to call global 'loadstring' (a nil value)

De ce que j'ai compris, loadstring n'a pas à être déclaré en tant que variable (?)

En fait, c'est "load" qu'il faut utiliser, "loadstring" n'est là que pour assurer la compatibilité avec d'ancienne version et ce n'est pas mis en oeuvre dans OpenTx, je ne savais pas, je n'avais pas testé.

Load est un peu contraignant pour deux raisons :
- il retourne une fonction qu'il faut executer
- son environnement d'exécution et l'environnement global

Pour que ça marche, il faudrait :
- que cell01, ... , cell06 soient globales
- transmettre i et v à la fonction créée par load et les récupérer dans la chaine

Il faudrait écrire le code ainsi, c'est concis mais ce n'est pas ce qu'il y a de plus simple :
Code:
local batt_sum, batttype = 0, 0
local cellValue = "telemetry not available"
cell01, cell02, cell03, cell04, cell05, cell06 = 0, 0, 0, 0, 0 ,0  -->> variable globale (pas bon)
local cellResult = getValue("Cels")
if type(cellResult) == "table" then
  cellValue = ""
  batttype = #cellResult
  for i, v in pairs(cellResult) do
    cellValue = cellValue .. i .. ": " .. v .. " "
    batt_sum = batt_sum + v
    load("i, v = ...; cell0" .. i .. " =  v")(i, v)  -->> i, v = ... récupère les deux paramètres passés à la fonction (ça fallait le savoir)
  end
end

Tu auras noté que l'on peut mettre plusieurs instructions sur une ligne mais il faut les séparer par un ;

Le plus simple quand même, c'est d'avoir une table au lieu de ces 6 variables et d'utiliser les éléments de la table par ailleurs.
Code:
local batt_sum, batttype = 0, 0
local cellValue = "telemetry not available"
local cells = {0, 0, 0, 0, 0 ,0} -->> table de 6 éléments initialisé à 0
local cellResult = getValue("Cels")
if type(cellResult) == "table" then
  cellValue = ""
  for i = 1, #cells do cells[i] = 0 end -->> on reinitialise les 6 élément à 0
  batttype = #cellResult
  for i, v in pairs(cellResult) do
    cellValue = cellValue .. i .. ": " .. v .. " "
    batt_sum = batt_sum + v
    cells[i] = v --> on renseigne l'élément correspondant
  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 5 Empty Re: LUA Scripting sur V2.1.x

Message par dev.fred Sam 17 Oct 2015 - 23:19

Heisenberg a écrit:... tu approcherais la perfection si tu pouvais ajouter encore 4 à 6 cellules de plus de batteries pour couvrir 95% des besoins du modelisme ...
J'ai bataillé avec VC++ 2015 et le net un certain temps avant de trouver comment envoyer dans un tableaux des valeurs de cellules séparées par des ";" depuis un champ retourné par Form.
Cette ligne de C++ à la sauce Microsoft Windows Forms applications est un vrai petit trophée personnel, spécialement le type de la variable split avec l'opérateur carret (ou hat) [^] pour définir un handle vers un objet managé qui est en fait une référence vers cet objet managé. scratch  handle:

LUA Scripting sur V2.1.x - Page 5 Captur18

L'outil peut maintenant gérer jusqu'à 6 cellules, dans l'exemple j'ai saisi : 1,1;2,2;3,3;4,4;5,5;6,6

LUA Scripting sur V2.1.x - Page 5 Captur17


Code:
local cellValue = "unknown"
local cellResult = nil
local cellID = nil

local function getTelemetryId(name)
    field = getFieldInfo(name)
    if field then
      return field.id
    else
      return -1
    end
end

local function init()
  cellId = getTelemetryId("Cels")
end

local function background()
  cellResult = getValue(cellId)
  if (type(cellResult) == "table") then
    cellValue = ""
    for i, v in ipairs(cellResult) do
      cellValue = cellValue .. i .. ": " .. v .. " "
    end
  else
    cellValue = "telemetry not available"
  end
end

local function run(e)
  lcd.clear()
  lcd.drawText(1,11,"Cels:", 0)
  lcd.drawText(lcd.getLastPos()+2,11,cellValue,0)
end

return{init=init,run=run,background=background}

Edit a écrit:Compilation sous MVS2010 pour assurer la compatibilité avec Windows 7
Fichiers joints
LUA Scripting sur V2.1.x - Page 5 Attachment
Telemetry-tool.zip 6 cellules et compatible Windows 7Vous n'avez pas la permission de télécharger les fichiers joints.(23 Ko) Téléchargé 8 fois


Dernière édition par dev.fred le Mar 20 Oct 2015 - 6:28, édité 1 fois (Raison : Recompilation sous MVS2010)

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 5 Empty Re: LUA Scripting sur V2.1.x

Message par Sacre100 Dim 18 Oct 2015 - 10:44

De mon côté, après avoir réinstallé l'environnement sur nouveau portable (l'ancien m'a laché), j'ai développé hier soir un fonction lcd.drawEllipse pour OpenTX. J'ai piqué un algorithme sur net, j'y comprends rien mais ça marche.

LUA Scripting sur V2.1.x - Page 5 Drawel10
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 5 Empty Re: LUA Scripting sur V2.1.x

Message par Sacre100 Dim 18 Oct 2015 - 13:04

Et depuis tout à l'heure, j'ai ajouté la fonction drawFilledEllipse.

LUA Scripting sur V2.1.x - Page 5 Drawfi10

S'il y en a qui veulent tester, voici le code à ajouter dans lua_api.cpp. Tout d'abord les deux fonctions à mettre entre luaLcdDrawFilledRectangle et luaLcdDrawGauge par exemple:
Code:

static int luaLcdDrawEllipse(lua_State *L)
{
  if (!luaLcdAllowed) return 0;
  int xc = luaL_checkinteger(L, 1);
  int yc = luaL_checkinteger(L, 2);
  int width = luaL_checkinteger(L, 3);
  int height = luaL_checkinteger(L, 4);
  unsigned int flags = luaL_optunsigned(L, 5, 0);

/* Bresenham's procedure to draw an ellipse in two steps */
  int a2 = width * width;
  int b2 = height * height;
  int fa2 = 4 * a2, fb2 = 4 * b2;
  int x, y, sigma;

/* Plot more horizontal part */
  for (x = 0, y = height, sigma = 2*b2+a2*(1-2*height); b2*x <= a2*y; x++)
  {
    lcd_plot (xc + x, yc + y, flags);
    lcd_plot (xc + x, yc - y, flags);
    if (x > 0)
    {
      lcd_plot (xc - x, yc - y, flags);
      lcd_plot (xc - x, yc + y, flags);
    }
    if (sigma >= 0)
    {
      sigma += fa2 * (1 - y);
      y--;
    }
    sigma += b2 * ((4 * x) + 6);
  }

/* Plot more vertical part */
  for (x = width, y = 0, sigma = 2*a2+b2*(1-2*width); a2*y < b2*x; y++)
  {
    lcd_plot (xc + x, yc + y, flags);
    lcd_plot (xc - x, yc + y, flags);
    if (y > 0)
    {
      lcd_plot (xc + x, yc - y, flags);
      lcd_plot (xc - x, yc - y, flags);
    }
    if (sigma >= 0)
    {
      sigma += fb2 * (1 - x);
      x--;
    }
    sigma += a2 * ((4 * y) + 6);
  }

  return 0;
}

static int luaLcdDrawFilledEllipse(lua_State *L)
{
  if (!luaLcdAllowed) return 0;
  int xc = luaL_checkinteger(L, 1);
  int yc = luaL_checkinteger(L, 2);
  int width = luaL_checkinteger(L, 3);
  int height = luaL_checkinteger(L, 4);
  unsigned int flags = luaL_optunsigned(L, 5, 0);

/* Bresenham's procedure to draw an ellipse in two steps */
  int a2 = width * width;
  int b2 = height * height;
  int fa2 = 4 * a2, fb2 = 4 * b2;
  int x, y, sigma;

/* Plot more horizontal part */
  for (x = 0, y = height, sigma = 2*b2+a2*(1-2*height); b2*x <= a2*y; x++)
  {
    if (sigma >= 0)
    {
      lcd_line(xc - x, yc - y, xc + x, yc - y, SOLID, flags);
      lcd_line(xc - x, yc + y, xc + x, yc + y, SOLID, flags);
      sigma += fa2 * (1 - y);
      y--;
    }
    sigma += b2 * ((4 * x) + 6);
  }

/* Plot more vertical part */
  for (x = width, y = 0, sigma = 2*a2+b2*(1-2*width); a2*y < b2*x; y++)
  {
    lcd_line(xc - x, yc - y, xc + x, yc - y, SOLID, flags);
    if (y > 0)
      lcd_line(xc - x, yc + y, xc + x, yc + y, SOLID, flags);
    if (sigma >= 0)
    {
      sigma += fb2 * (1 - x);
      x--;
    }
    sigma += a2 * ((4 * y) + 6);
  }

  return 0;
}

Et l'ajout des deux fonctions dans celle disponible pour LUA :
Code:
 { "drawFilledRectangle", luaLcdDrawFilledRectangle },
  { "drawEllipse", luaLcdDrawEllipse },
  { "drawFilledEllipse", luaLcdDrawFilledEllipse },
  { "drawGauge", luaLcdDrawGauge },
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 5 Empty Re: LUA Scripting sur V2.1.x

Message par Heisenberg Lun 19 Oct 2015 - 17:37

dev.fred a écrit:J'ai bataillé avec VC++ 2015 et le net un certain temps avant de trouver comment envoyer dans un tableaux des valeurs de cellules séparées par des ";" depuis un champ retourné par Form.
J'attendais ça avec impatience sans être sur que tu t'y colles Very Happy
...Mais il ne tourne pas sur ma machine Win7 64bits, y compris en mode admin et/ou en mode de compatibilité Mad

Je me suis attelé pour ma part à un script simple, moins compliqué que vos travaux (Et sans aucun BMP !)
J'allais le mettre en partage sauf qu'il rend très bien sous Companion et refuse de tourner sur la radio. LUA Scripting sur V2.1.x - Page 5 2058596370

Il va vraiment falloir que je bricole une interface pour logguer la liaison série de la radio ...

Sinon, c'était beau et bien pratique aussi...

LUA Scripting sur V2.1.x - Page 5 Screen15
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 5 Empty Re: LUA Scripting sur V2.1.x

Message par Sacre100 Lun 19 Oct 2015 - 18:29

Probablement ton script utilise trop la mémoire, il n'y en a pas beaucoup de disponible sur la radio, et aussi surcharge trop le garbage collector. Quelques trucs :
- éviter l'opérateur .. (contaténation de chaine de caractère qui utilise pas mal de mémoire et qui surcharge le garbage collectore)
- éviter trop de variables dans les fonctions (surcharge aussi le garbage collector)

Publie ton script, je vais y jeter un coup d'oeil et si je vois quelque chose, je t'indiquerai ce qu'il est possible de faire.
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 5 Empty Re: LUA Scripting sur V2.1.x

Message par Heisenberg Lun 19 Oct 2015 - 19:27

L'opérateur .. est plutôt fort utilisé dans ce script, je vais changer ça déjà...
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 5 Empty Re: LUA Scripting sur V2.1.x

Message par dev.fred Mar 20 Oct 2015 - 7:03

Heisenberg a écrit:...Mais il ne tourne pas sur ma machine Win7 64bits, y compris en mode admin et/ou en mode de compatibilité
C'est ballot, j'ai recompilé sous MVS2010 et testé sous W7 et là ça fonctionne. LUA Scripting sur V2.1.x - Page 5 2258904616

Je me suis laissé endormir par le marketing, j'ai un peu oublié la dépendance des .exe avec l'OS :
Microsoft a écrit:Visual Studio 2015 est un environnement de développement intégré riche pour créer des applications époustouflantes pour Windows, Android et iOS, ainsi que des applications Web et des services de cloud modernes.

Edit a écrit:En fait il faudrait installer Redistribuable Visual C++ pour Visual Studio 2015; c'est un peu lourd .

LUA Scripting sur V2.1.x - Page 5 Captur19
Fichiers joints
LUA Scripting sur V2.1.x - Page 5 Attachment
Telemetry-tool.zip Avec 6 cellules et compatible W7Vous n'avez pas la permission de télécharger les fichiers joints.(23 Ko) Téléchargé 16 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 5 Empty Re: LUA Scripting sur V2.1.x

Message par Sacre100 Mar 20 Oct 2015 - 21:21

Bien pratique ton outil, merci LUA Scripting sur V2.1.x - Page 5 2258904616
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 5 Empty Re: LUA Scripting sur V2.1.x

Message par Heisenberg Mar 20 Oct 2015 - 21:23

J'allais le dire, c'est complet à présent.
Du très bon boulot et simple comme bonjour à utiliser.
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 5 Empty Re: LUA Scripting sur V2.1.x

Message par dev.fred Mar 20 Oct 2015 - 21:34

Ravi que cela vous plaise, de mon coté c'était l'occasion d'utiliser cet environnement de programmation en ayant un petit projet utile, c'est bien + motivant.

Sinon, même si ce n'est pas encore au point, je serais intéressé par le code que tu as développé pour LI-PO BattCheck, ton écran est prometteur.

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 5 Empty Re: LUA Scripting sur V2.1.x

Message par Heisenberg Mar 20 Oct 2015 - 21:43

A 1ere vue, il fonctionne, mais l'auteur est plus Marco que moi-même à présent, j'ai bénéficié honteusement de son aide précieuse en loose-day et il m'a donné un peu plus que quelques pistes.

Je compte regarder encore 2 ou 3 choses et le mettre en partage dans la semaine avec un tuto ad'hoc.
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 5 Empty Re: LUA Scripting sur V2.1.x

Message par dev.fred Mar 20 Oct 2015 - 22:04

Effectivement ma phrase est un peu maladroite étant donné la contribution de Marco qui en connait un rayon sur LUA en autre LUA Scripting sur V2.1.x - Page 5 818067345 .
A ma décharge, j'ai déjà partagé mon admiration pour son savoir faire en programmation C++ sur le projet OpenTX Multilingue.

Sinon, j'ai trouvé une option dans Visual Studio 2015 qui permet de lui faire générer du code 2010 donc compatible W7.

LUA Scripting sur V2.1.x - Page 5 Captur20

L’intérêt c'est que Visual Studio 2015 est un outil complet qui est gratuit pour les particuliers alors qu’auparavant, seule la version express était gratuite.
J'ai pu également compiler directement le projet openTX avec Visual Studio 2015 qui s'est mis automatiquement en mode de compatibilité VS2010.

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 5 Empty Re: LUA Scripting sur V2.1.x

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 4 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