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.
-28%
Le deal à ne pas rater :
-28% Machine à café avec broyeur à grain MELITTA Purista
229.99 € 318.99 €
Voir le deal

Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas

4 participants

Aller en bas

Besoin de comprendre pourquoi ma comparaison > et <  est validée mais en simulation ne fonctionne pas Empty Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas

Message par captflame2121 Mar 29 Juin 2021 - 11:06

Bonjour
Je débute dans le LUA et je voudrais faire une comparaison > et < pour mon RSSI
Si mon RSSI EST > je mets le texte en couleur et si RSSI < je mets le texte d 'une autre couleur.
Dans le simulateur companion SI je fais varier le signal RSSI le texte ne change pas de couleur .
Pouvez vous me dire pourquoi car je ne vois pas ou est mon pb dans le script.

Voici mon script

-- RSSI
local seuilmini_rssi = 1
local seuil1_rssi = 45
local seuil2_rssi = 50
local seuil3_rssi = 60
local seuil4_rssi = 70
local seuilmaxi_rssi = 100
local Img_rssi = Bitmap.open("/WIDGETS/Cookpit/img/rssi.png")

rssi = getValue("rssi")
lcd.drawBitmap(Img_rssi,x + 45,y+60)

if rssi > seuil3_rssi then
lcd.setColor(TEXT_COLOR, RED)
end
if rssi < seuil3_rssi then
lcd.setColor(TEXT_COLOR, 2016)
end

Ah oui autre chose comment fait on >= ou = car si j'ajoute le = le script est faux.

Merci Besoin de comprendre pourquoi ma comparaison > et <  est validée mais en simulation ne fonctionne pas 2258904616

captflame2121

Masculin Messages : 381
Date d'inscription : 10/06/2019
Age : 47
Localisation : bourgogne

Revenir en haut Aller en bas

Besoin de comprendre pourquoi ma comparaison > et <  est validée mais en simulation ne fonctionne pas Empty Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas

Message par CoyotteDundee Mar 29 Juin 2021 - 11:31

Bonjour,

Je ne suis pas spécialiste de Lua mais dans ton code je en vois pas d'affichage de la valeur (mais je le répète je ne suis pas spécialiste)

Autre petit point : Tu compares si > ou < que seuill3_rssi. Cela veut dire que si rssi vaut seuil3_rssi, aucune valeur n'est déterminée.

Dans ce genre de cas, tu peux simplifier  l'écriture avec quelque chose du genre
Code:
if rssi > seuil4 then lcd.setColor(...)
else if rssi > seuil3 then lcd.setColor(...)
else if rssi > seuil2 then lcd.SetColor(...)
else if rssi > seuil1 then lcd.SetColor(...)
else lcd.SetColor(...)

Coyotte

_________________

... the alien anthropologists admitted they were still perplexed.
But on eliminating every other reason for our sad demise, they logged the only explanation left :
This species has amused itself to death...
                                                                                                                                    (R. Waters)

Pas de support par MP ! Nous sommes sur un forum pour échanger publiquement.
CoyotteDundee
CoyotteDundee
Administrateur

Masculin Messages : 5886
Date d'inscription : 03/03/2014
Age : 60
Localisation : Montegnée (Liège)

Revenir en haut Aller en bas

Besoin de comprendre pourquoi ma comparaison > et <  est validée mais en simulation ne fonctionne pas Empty Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas

Message par Thierry94 Mar 29 Juin 2021 - 11:50

Avec un nouveau if dans un else il faudra retrouver tous les end des if à la fin du code
Code:

if rssi > seuil4 then lcd.setColor(...)
else if rssi > seuil3 then lcd.setColor(...)
      else if rssi > seuil2 then lcd.SetColor(...)
            else if rssi > seuil1 then lcd.SetColor(...)
                  else lcd.SetColor(...)
                  end
            end
       end
end

Pour éviter cela tu peux employer le "esleif" à la place de "else if" et comme cela tu n'auras besoin que d'un seul end pour finir la commande
Code:

if rssi > seuil4 then lcd.setColor(...)
elseif rssi > seuil3 then lcd.setColor(...)
elseif rssi > seuil2 then lcd.SetColor(...)
elseif rssi > seuil1 then lcd.SetColor(...)
else lcd.SetColor(...)
end

Thierry94

Masculin Messages : 581
Date d'inscription : 28/01/2016
Localisation : Ile de France

Revenir en haut Aller en bas

Besoin de comprendre pourquoi ma comparaison > et <  est validée mais en simulation ne fonctionne pas Empty Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas

Message par CoyotteDundee Mar 29 Juin 2021 - 12:01

Merci Thierry Besoin de comprendre pourquoi ma comparaison > et <  est validée mais en simulation ne fonctionne pas 2258904616

Comme évoqué, je ne suis pas un pro de Lua...C'était surtout pour éviter les double tests...

Coyotte

_________________

... the alien anthropologists admitted they were still perplexed.
But on eliminating every other reason for our sad demise, they logged the only explanation left :
This species has amused itself to death...
                                                                                                                                    (R. Waters)

Pas de support par MP ! Nous sommes sur un forum pour échanger publiquement.
CoyotteDundee
CoyotteDundee
Administrateur

Masculin Messages : 5886
Date d'inscription : 03/03/2014
Age : 60
Localisation : Montegnée (Liège)

Revenir en haut Aller en bas

Besoin de comprendre pourquoi ma comparaison > et <  est validée mais en simulation ne fonctionne pas Empty Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas

Message par captflame2121 Mar 29 Juin 2021 - 13:26

Ok merci je teste ce soir dans le simulteur.

Mais

un if ...... then
end

un autre if ...... then
end

correspond pareil

a un
elseif rssi > seuil3 then lcd.setColor(...)
elseif rssi > seuil2 then lcd.SetColor(...)
elseif rssi > seuil1 then lcd.SetColor(...)


c'est l'écriture qui change simplement non ?


En tout cas avec deux if et end à chaque fois la couleur ne change pas .

Et un égal vous avez essayé car moi le script n'en veut pas .


Merci

captflame2121

Masculin Messages : 381
Date d'inscription : 10/06/2019
Age : 47
Localisation : bourgogne

Revenir en haut Aller en bas

Besoin de comprendre pourquoi ma comparaison > et <  est validée mais en simulation ne fonctionne pas Empty Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas

Message par BRUN Philippe Mar 29 Juin 2021 - 13:38

Bonjour captflame2121

Le égal" =" met une valeur dans une variable mais pour une comparaison il faut mettre le double égal " == "

Philippe
BRUN Philippe
BRUN Philippe

Masculin Messages : 223
Date d'inscription : 31/05/2015
Age : 71
Localisation : MONTAMISE près de POITIERS

Revenir en haut Aller en bas

Besoin de comprendre pourquoi ma comparaison > et <  est validée mais en simulation ne fonctionne pas Empty Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas

Message par CoyotteDundee Mar 29 Juin 2021 - 13:44

Re,

Normalement, selon la doc de Lua, >= ou <= doivent fonctionner.
Mais, comme déjà évoqué, je ne vois pas dans ton code d'instruction pour afficher la valeur.
Est-ce automatique ?
Es-tu certain que tu ne doit pas prendre toi-même l'affichage du RSSI en charge ?

Coyotte

_________________

... the alien anthropologists admitted they were still perplexed.
But on eliminating every other reason for our sad demise, they logged the only explanation left :
This species has amused itself to death...
                                                                                                                                    (R. Waters)

Pas de support par MP ! Nous sommes sur un forum pour échanger publiquement.
CoyotteDundee
CoyotteDundee
Administrateur

Masculin Messages : 5886
Date d'inscription : 03/03/2014
Age : 60
Localisation : Montegnée (Liège)

Revenir en haut Aller en bas

Besoin de comprendre pourquoi ma comparaison > et <  est validée mais en simulation ne fonctionne pas Empty Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas

Message par captflame2121 Mar 29 Juin 2021 - 17:21

Je vais tester ce que vous me dites
Voici mon code entier :

Code:
-- RSSI
    local seuilmini_rssi = 1
    local seuil1_rssi = 45
   local seuil2_rssi = 50
   local seuil3_rssi = 60
   local seuil4_rssi = 70
   local seuilmaxi_rssi = 100
   local Img_rssi = Bitmap.open("/WIDGETS/Cookpit/img/rssi.png")
   
    rssi = getValue("rssi")
   lcd.drawBitmap(Img_rssi,x + 45,y+60)
   
   if rssi > seuil3_rssi then
   lcd.setColor(TEXT_COLOR, RED)
   end
    if rssi < seuil3_rssi then
   lcd.setColor(TEXT_COLOR, 2016)
   end
   
   lcd.drawNumber(x+100,y+60,rssi,RIGHT+MIDSIZE+TEXT_COLOR)

      
   

   
    -- RSSI mini
    rssi_mini = getValue("rssi")
   lcd.drawText(x+120,y+58,"min",SMLSIZE+CUSTOM_COLOR)
   lcd.drawNumber(x+115,y+58,rssi_mini,RIGHT+SMLSIZE+CUSTOM_COLOR)
   --lcd.drawText(x+100,y+80,"db",SMLSIZE+CUSTOM_COLOR)
   
    -- RSSI maxi


captflame2121

Masculin Messages : 381
Date d'inscription : 10/06/2019
Age : 47
Localisation : bourgogne

Revenir en haut Aller en bas

Besoin de comprendre pourquoi ma comparaison > et <  est validée mais en simulation ne fonctionne pas Empty Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas

Message par captflame2121 Mar 29 Juin 2021 - 17:35

Me revoilà

Je viens de tester avec seulement le ==
Code:
 -- RSSI
    local seuilmini_rssi = 1
    local seuil1_rssi = 45
   local seuil2_rssi = 50
   local seuil3_rssi = 60
   local seuil4_rssi = 70
   local seuilmaxi_rssi = 100
   local Img_rssi = Bitmap.open("/WIDGETS/Cookpit/img/rssi.png")
   
    rssi = getValue("rssi")
   lcd.drawBitmap(Img_rssi,x + 45,y+60)
   
   
   if rssi == seuil4 then lcd.setColor(TEXT_COLOR, 2016)
--elseif rssi > seuil3 then (TEXT_COLOR, 2016)
--elseif rssi > seuil2 then (TEXT_COLOR, BLUE)
--elseif rssi > seuil1 then (TEXT_COLOR, 65037)
--else lcd.SetColor(TEXT_COLOR, BLACK)
end
   
   lcd.drawNumber(x+100,y+60,rssi,RIGHT+MIDSIZE+TEXT_COLOR)


Le script se lance bien pas d'erreur sauf que lorsque je mets en simulation mon RSSI à 70  donc égal  au seuil 4
RIEN NE SE PASSE la valeur de mon RSSI NE CHANGE PAS.

Dailleurs pourquoi ma valeur RSSI reste à 0 et ne prends pas la valeur de RSSI du simulateur ?
Code:

captflame2121

Masculin Messages : 381
Date d'inscription : 10/06/2019
Age : 47
Localisation : bourgogne

Revenir en haut Aller en bas

Besoin de comprendre pourquoi ma comparaison > et <  est validée mais en simulation ne fonctionne pas Empty Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas

Message par Thierry94 Mar 29 Juin 2021 - 18:02

captflame2121 a écrit:Ok merci je teste ce soir dans le simulteur.

Mais

un if     ......  then
    end

un autre if ...... then
   end

correspond pareil

a un
elseif rssi > seuil3 then lcd.setColor(...)
elseif rssi > seuil2 then lcd.SetColor(...)
elseif rssi > seuil1 then lcd.SetColor(...)


c'est l'écriture qui change simplement non ?


En tout cas avec deux if et end à chaque fois la couleur ne change pas .

Et un égal vous avez essayé car moi le script n'en veut pas .


Merci

Pas tout à fait car dans le cas de 2 if à la suite si le première condition est vrai la 2eme condition sera quand même testée. Cela n'a pas trop d'influence dans ton cas mais si ce genre de code est dans une boucle avec beaucoup d'itérations ça aura un impact sur la rapidité.

Dans le cas d'un if avec plusieurs elseif le test suivant n'est effectué que si le précédent est faux.

Thierry94

Masculin Messages : 581
Date d'inscription : 28/01/2016
Localisation : Ile de France

Revenir en haut Aller en bas

Besoin de comprendre pourquoi ma comparaison > et <  est validée mais en simulation ne fonctionne pas Empty Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas

Message par CoyotteDundee Mar 29 Juin 2021 - 18:04

Pour pouvoir tester, peux-tu expliquer où tu places ton script et comment tu l'appelles ?

Lorsque je regarde certains exemples, vois des choses telles que
local rssi = getValue("rssi")

Chez toi, je ne vois pas de déclaration de la variable rssi ("local")...

Coyotte

_________________

... the alien anthropologists admitted they were still perplexed.
But on eliminating every other reason for our sad demise, they logged the only explanation left :
This species has amused itself to death...
                                                                                                                                    (R. Waters)

Pas de support par MP ! Nous sommes sur un forum pour échanger publiquement.
CoyotteDundee
CoyotteDundee
Administrateur

Masculin Messages : 5886
Date d'inscription : 03/03/2014
Age : 60
Localisation : Montegnée (Liège)

Revenir en haut Aller en bas

Besoin de comprendre pourquoi ma comparaison > et <  est validée mais en simulation ne fonctionne pas Empty Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas

Message par CoyotteDundee Mar 29 Juin 2021 - 18:07

D'autre part, s'il s'agit, comme je le pense d'un script de télémétrie, il doit respecter une certaine structure; structure que je ne retrouve pas dans ton code.
Voir ici par exemple : https://doc.open-tx.org/opentx-lua-reference-guide/part_i_-_script_type_overview/telemetry

Coyotte

_________________

... the alien anthropologists admitted they were still perplexed.
But on eliminating every other reason for our sad demise, they logged the only explanation left :
This species has amused itself to death...
                                                                                                                                    (R. Waters)

Pas de support par MP ! Nous sommes sur un forum pour échanger publiquement.
CoyotteDundee
CoyotteDundee
Administrateur

Masculin Messages : 5886
Date d'inscription : 03/03/2014
Age : 60
Localisation : Montegnée (Liège)

Revenir en haut Aller en bas

Besoin de comprendre pourquoi ma comparaison > et <  est validée mais en simulation ne fonctionne pas Empty Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas

Message par Thierry94 Mar 29 Juin 2021 - 18:09

Si il le fait dans la ligne
rssi = getValue("rssi")
Mais peut être que le mot rssi est réservé et ne peut pas être utilisé comme variable utilisateur.
Il faudrait tester avec un autre nom de variable

Thierry94

Masculin Messages : 581
Date d'inscription : 28/01/2016
Localisation : Ile de France

Revenir en haut Aller en bas

Besoin de comprendre pourquoi ma comparaison > et <  est validée mais en simulation ne fonctionne pas Empty Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas

Message par captflame2121 Mar 29 Juin 2021 - 18:11

Oui c'est moi j'ai vu il manquait le local RSSI

mais cela ne change rien marche pas n change pas ni de valeur ni de couleur.

Je suis nul.

Je fais de la programmation mais sur automate c'est bien plus clair.


captflame2121

Masculin Messages : 381
Date d'inscription : 10/06/2019
Age : 47
Localisation : bourgogne

Revenir en haut Aller en bas

Besoin de comprendre pourquoi ma comparaison > et <  est validée mais en simulation ne fonctionne pas Empty Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas

Message par CoyotteDundee Mar 29 Juin 2021 - 18:31

Re,
Thierry a écrit:Si il le fait dans la ligne
rssi = getValue("rssi")
Je parlais de la déclaration "local" qui n'était pas dans son code.

@CaptFlamme : As-tu vu la structure du script dans le lien fourni ?

Coyotte

_________________

... the alien anthropologists admitted they were still perplexed.
But on eliminating every other reason for our sad demise, they logged the only explanation left :
This species has amused itself to death...
                                                                                                                                    (R. Waters)

Pas de support par MP ! Nous sommes sur un forum pour échanger publiquement.
CoyotteDundee
CoyotteDundee
Administrateur

Masculin Messages : 5886
Date d'inscription : 03/03/2014
Age : 60
Localisation : Montegnée (Liège)

Revenir en haut Aller en bas

Besoin de comprendre pourquoi ma comparaison > et <  est validée mais en simulation ne fonctionne pas Empty Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas

Message par captflame2121 Mar 29 Juin 2021 - 18:50

Oui j'ai regardé et je tente de faire pareil mais sa doit pas être ca car rien ne s'affiche pour le RSSI
Code:
--RSSI
local function valeur_rssi()
  local RSSI = getValue("RSSI")
  local seuilmini_rssi = 1
  local seuil1_rssi = 45
  local seuil2_rssi = 50
  local seuil3_rssi = 60
  local seuil4_rssi = 70
  local seuilmaxi_rssi = 100
  local Img_rssi = Bitmap.open("/WIDGETS/Cookpit/img/rssi.png")
 
   
  lcd.drawBitmap(Img_rssi, 45,60)
 
      if rssi == seuil4 then lcd.setColor(TEXT_COLOR, 2016)
  elseif rssi > seuil3 then (TEXT_COLOR, 2016)
  elseif rssi > seuil2 then (TEXT_COLOR, BLUE)
  elseif rssi > seuil1 then (TEXT_COLOR, 65037)
  else lcd.SetColor(TEXT_COLOR, BLACK)
      end

 
  lcd.drawNumber(x+100,y+60,"RSSI",RIGHT+MIDSIZE+TEXT_COLOR)

end

et à la fin j'ai ajouté dans le refresh valeur_rssi
Code:
--mise a jour des données
function refresh(wgt)
  r_latlon()
  calPix()
  r_alt()
  valeur_rssi()
  lcd.setColor(COLOR, BLUE)
  lcd.setColor(LINE_COLOR, RED)
  dessin(wgt)
end

return { name="Cookpit", options=options, create=create, update=update, background=background, refresh=refresh }

Compliqué ce code pour moi

captflame2121

Masculin Messages : 381
Date d'inscription : 10/06/2019
Age : 47
Localisation : bourgogne

Revenir en haut Aller en bas

Besoin de comprendre pourquoi ma comparaison > et <  est validée mais en simulation ne fonctionne pas Empty Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas

Message par CoyotteDundee Jeu 1 Juil 2021 - 14:57

Hello,

Après quelques essais, voici un code qui fonctionne :
Code:
local defaultOptions = {
  -- Aucune option
}

local function createWidget(zone, options)
  return { zone=zone, options=options }  
end

local function updateWidget(widgetToUpdate, newOptions)
  widgetToUpdate.options = newOptions
end

local function backgroundProcessWidget(widgetToProcessInBackground)
  -- Rien à faire ici...
end

local function refreshWidget(widgetToRefresh)
  local rssi = getRSSI()

  if rssi >75 then lcd.setColor(CUSTOM_COLOR, lcd.RGB(0,180,0) )
  elseif rssi > 60 then lcd.setColor(CUSTOM_COLOR, lcd.RGB(0,0,200) )
  elseif rssi > 45 then lcd.setColor(CUSTOM_COLOR, lcd.RGB( 200, 0,0) )
  else lcd.setColor(CUSTOM_COLOR, lcd.RGB(0,0,0) )
  end
  
  lcd.drawNumber(
    widgetToRefresh.zone.x  
    , widgetToRefresh.zone.y    
    , rssi
    , LEFT + DBLSIZE + CUSTOM_COLOR
  );
end

return { name="Rssi", options=defaultOptions, create=createWidget, update=updateWidget
  , refresh=refreshWidget, background=backgroundProcessWidget }

C'est basique de chez basique et sert uniquement à montrer comment il est possible d'obtenir un résultat.

CoyotteDundee

_________________

... the alien anthropologists admitted they were still perplexed.
But on eliminating every other reason for our sad demise, they logged the only explanation left :
This species has amused itself to death...
                                                                                                                                    (R. Waters)

Pas de support par MP ! Nous sommes sur un forum pour échanger publiquement.
CoyotteDundee
CoyotteDundee
Administrateur

Masculin Messages : 5886
Date d'inscription : 03/03/2014
Age : 60
Localisation : Montegnée (Liège)

Revenir en haut Aller en bas

Besoin de comprendre pourquoi ma comparaison > et <  est validée mais en simulation ne fonctionne pas Empty Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas

Message par captflame2121 Ven 2 Juil 2021 - 7:22

Bonjour j'ai enfin réussi à obtenir quelque chose de simple qui fonctionne sans me servir d'un autre script. Merci beaucoup de ton aide CoyotteDundee. Besoin de comprendre pourquoi ma comparaison > et <  est validée mais en simulation ne fonctionne pas 818067345 Besoin de comprendre pourquoi ma comparaison > et <  est validée mais en simulation ne fonctionne pas 818067345

captflame2121

Masculin Messages : 381
Date d'inscription : 10/06/2019
Age : 47
Localisation : bourgogne

Revenir en haut Aller en bas

Besoin de comprendre pourquoi ma comparaison > et <  est validée mais en simulation ne fonctionne pas Empty Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas

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