Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas
4 participants
Page 1 sur 1
Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas
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
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
captflame2121- Messages : 381
Date d'inscription : 10/06/2019
Age : 47
Localisation : bourgogne
Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas
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
Coyotte
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- Administrateur
- Messages : 5886
Date d'inscription : 03/03/2014
Age : 60
Localisation : Montegnée (Liège)
Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas
Avec un nouveau if dans un else il faudra retrouver tous les end des if à la fin du code
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(...)
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- Messages : 581
Date d'inscription : 28/01/2016
Localisation : Ile de France
Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas
Merci Thierry
Comme évoqué, je ne suis pas un pro de Lua...C'était surtout pour éviter les double tests...
Coyotte
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- Administrateur
- Messages : 5886
Date d'inscription : 03/03/2014
Age : 60
Localisation : Montegnée (Liège)
Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas
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
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- Messages : 381
Date d'inscription : 10/06/2019
Age : 47
Localisation : bourgogne
Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas
Bonjour captflame2121
Le égal" =" met une valeur dans une variable mais pour une comparaison il faut mettre le double égal " == "
Philippe
Le égal" =" met une valeur dans une variable mais pour une comparaison il faut mettre le double égal " == "
Philippe
BRUN Philippe- Messages : 223
Date d'inscription : 31/05/2015
Age : 71
Localisation : MONTAMISE près de POITIERS
Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas
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
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- Administrateur
- Messages : 5886
Date d'inscription : 03/03/2014
Age : 60
Localisation : Montegnée (Liège)
Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas
Je vais tester ce que vous me dites
Voici mon code entier :
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- Messages : 381
Date d'inscription : 10/06/2019
Age : 47
Localisation : bourgogne
Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas
Me revoilà
Je viens de tester avec seulement le ==
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 ?
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- Messages : 381
Date d'inscription : 10/06/2019
Age : 47
Localisation : bourgogne
Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas
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- Messages : 581
Date d'inscription : 28/01/2016
Localisation : Ile de France
Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas
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
Chez toi, je ne vois pas de déclaration de la variable rssi ("local")...
Coyotte
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- Administrateur
- Messages : 5886
Date d'inscription : 03/03/2014
Age : 60
Localisation : Montegnée (Liège)
Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas
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
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- Administrateur
- Messages : 5886
Date d'inscription : 03/03/2014
Age : 60
Localisation : Montegnée (Liège)
Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas
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
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- Messages : 581
Date d'inscription : 28/01/2016
Localisation : Ile de France
Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas
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.
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- Messages : 381
Date d'inscription : 10/06/2019
Age : 47
Localisation : bourgogne
Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas
Re,
@CaptFlamme : As-tu vu la structure du script dans le lien fourni ?
Coyotte
Je parlais de la déclaration "local" qui n'était pas dans son code.Thierry a écrit:Si il le fait dans la ligne
rssi = getValue("rssi")
@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- Administrateur
- Messages : 5886
Date d'inscription : 03/03/2014
Age : 60
Localisation : Montegnée (Liège)
Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas
Oui j'ai regardé et je tente de faire pareil mais sa doit pas être ca car rien ne s'affiche pour le RSSI
et à la fin j'ai ajouté dans le refresh valeur_rssi
Compliqué ce code pour moi
- 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- Messages : 381
Date d'inscription : 10/06/2019
Age : 47
Localisation : bourgogne
Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas
Hello,
Après quelques essais, voici un code qui fonctionne :
C'est basique de chez basique et sert uniquement à montrer comment il est possible d'obtenir un résultat.
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.
_________________
... 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- Administrateur
- Messages : 5886
Date d'inscription : 03/03/2014
Age : 60
Localisation : Montegnée (Liège)
Re: Besoin de comprendre pourquoi ma comparaison > et < est validée mais en simulation ne fonctionne pas
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.
captflame2121- Messages : 381
Date d'inscription : 10/06/2019
Age : 47
Localisation : bourgogne
Sujets similaires
» Nouveau membre
» Récepteur SXR en mode delta et simulation du différentiel élevons (+simulation dérive)
» fichier xls de comparaison f550
» marre de rien comprendre
» Comprendre le bind avec access
» Récepteur SXR en mode delta et simulation du différentiel élevons (+simulation dérive)
» fichier xls de comparaison f550
» marre de rien comprendre
» Comprendre le bind avec access
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum