Potentiomètre : retour de valeurs étranges !

Questions de programmation / Offset FSUIPC et IOCP

Potentiomètre : retour de valeurs étranges !

Messagede OscarDelta77 » Jeu 30 Avr 2020 17:20

Alors là ... gratgrat

Dans SIOC, le potentiomètre retourne des valeurs allant de 0 à 254. Normal, donc.

Mais les valeurs que je capte dans P3D vont de -1 à-127 puis de 127 à -1 ..... gratgrat murrouge

J'ai refait le script SIOC au cas où : idem.

Et je ne vois rien dans le script LUA qui pourrait lui faire prendre de telles valeurs ...

Code: Tout sélectionner
while 1 do

------------------------------------------------------------------------------------------   
-- Gestion du Sélecteur de carburant A2A C182                                           --
------------------------------------------------------------------------------------------

-- Lecture de la variable A2A   
   Fuel_Selector_A2A = ipc.readLvar("L:FSelC182State")
   
-- Lecture Du retour de la variable SIOC
   Fuel_Selector_SIOC = ipc.readSB(0X66C8)
      
-- Traitement de la variable SIOC
   -- Traitement Fuel Selector
    if (Fuel_Selector_SIOC ~= Fuel_Selector_A2A) then
      -- if Fuel_Selector_SIOC = 245 then
      if Fuel_Selector_SIOC == -1 then
         ipc.writeLvar("L:FSelC182State", 0)
         ipc.writeSB(0X66C8, Fuel_Selector_SIOC)
      end
      
      if Fuel_Selector_SIOC >= -85 and Fuel_Selector_SIOC <= -75 then
         ipc.writeLvar("L:FSelC182State", 1)
         ipc.writeSB(0X66C8, Fuel_Selector_SIOC)
      end
      
      if Fuel_Selector_SIOC >= 80 and Fuel_Selector_SIOC <= 90 then
         ipc.writeLvar("L:FSelC182State", 2)
         ipc.writeSB(0X66C8, Fuel_Selector_SIOC)
      end
      
      --if Fuel_Selector_SIOC >= 245 then
      if Fuel_Selector_SIOC >= 0 and Fuel_Selector_SIOC <= 10 then
         ipc.writeLvar("L:FSelC182State", 3)
         ipc.writeSB(0X66C8, Fuel_Selector_SIOC)
      end
    end

-- Affichage dans P3D pour tests
  -- Fuel Selector
   ipc.display("L:FSelC182State : " .. Fuel_Selector_A2A .. "\r\n" .. "Valeur Potentiometre SIOC : " .. Fuel_Selector_SIOC )
   
------------------------------------------------------------------------------------------   
-- Fin de Gestion du Sélecteur de carburant A2A C182                                    --
------------------------------------------------------------------------------------------   

end


Je vais donc déjà tout éteindre, aller courir un peu (moins d'1 heure, et dans un rayon de 1 km max, bien entendu !), et je reteste après !!

Si vous aves des idées : à vot' bon coeur ! yeuxhaut
Dernière édition par OscarDelta77 le Jeu 30 Avr 2020 19:04, édité 1 fois.
OscarDelta77
 
Messages: 96
Inscription: 19/02/14

Re: Potentiomètre : retour de valeurs étranges !

Messagede OscarDelta77 » Jeu 30 Avr 2020 17:37

Voici une petite vidéo du problème ...

https://youtu.be/PTwrGs_jf9M
OscarDelta77
 
Messages: 96
Inscription: 19/02/14

Re: Potentiomètre : retour de valeurs étranges !

Messagede tabar57 » Jeu 30 Avr 2020 17:55

Moi je mettrai plutôt du ipc.readUW et ipc.writeUW à la place de SB car si ton potar envoie 0 à 255 c'est pas de la var signée
D'autre part il me semble qu'une longueur de 1 ( length 1 ) suffit dans ton code sioc pour la var 66c8 et donc un ipc.readUB et ipc.writeUB devrait fonctionner

Explique moi, si tu veux bien ce que tu veux faire avec ce potar , j'arrive pas trop à comprendre gratgrat
Bernard
Dernière édition par tabar57 le Jeu 30 Avr 2020 18:12, édité 3 fois.
Mon blog de construction : http://tabar57.blog4ever.com
Hémicockpit de Beechcraft B200 ( de FlightOne ) P3DV4.5 et 2 PC en réseau W7 64 bits et W10, cartes OC et FDbus, vibreur et yoke rdf de BFFsimulation, météo réelle asp4
Avatar de l’utilisateur
tabar57
 
Messages: 3651
Inscription: 29/12/10
Localisation: Dans ma cabine en Lorraine

Re: Potentiomètre : retour de valeurs étranges !

Messagede OscarDelta77 » Jeu 30 Avr 2020 18:01

Bernard,

Je testerai ça tout à l'heure. D'ailleurs ce point reste un peux épineux pour moi. Tout comme la plage des offsets dispos dans FSUIPC ...

En tous cas, après reboot : idem.
OscarDelta77
 
Messages: 96
Inscription: 19/02/14

Re: Potentiomètre : retour de valeurs étranges !

Messagede fab » Jeu 30 Avr 2020 18:35

Bernard a bien cerné le problèmes, la valeur sur 8 bits 0..255 (non signé) que tu captes est envoyées vers une variable signées sur 8 bit qui devient -127 .. 127 ...
Avatar de l’utilisateur
fab
 
Messages: 4414
Inscription: 26/12/12
Localisation: Roubaix

Re: Potentiomètre : retour de valeurs étranges !

Messagede OscarDelta77 » Jeu 30 Avr 2020 19:01

@ Bernard et Fabien : Bravo Messieurs ! Cela fonctionne parfaitement avec votre correction !

Cela dit, je pense que le potard a un souci (ou il est de piètre qualité ) : lorsque j'arrive à 0, il suffit d'un chouya plus loin pour qu'il bascule à 255. Constaté dans SIOC monitor et dans le script LUA.
OscarDelta77
 
Messages: 96
Inscription: 19/02/14

Re: Potentiomètre : retour de valeurs étranges !

Messagede tabar57 » Jeu 30 Avr 2020 19:09

Merci Olivier,

Tant qu'on y est dans les bonnes habitudes, il faudrait que tu corriges ton Lua en enlevant le while do, c'est une mauvaise façon de faire car ton programme tourne en permanence.
Tant que tu n'auras qu'une valeur çà va aller mais après çà va beaucoup moins bien marcher lolaffiche
Pour ce faire , il faut que tu utilise les Events de Lua, en clair quand il y a un évènement , tu lances une fonction.
Dans ton cas par exemple tu pourrais utiliser un event.offset (0x66C8, "UW", "nom de la fonction") qui ferait que chaque fois que l'offset change et uniquement quand il change, tu lance la fonction "nom de la fonction" et le reste du temps ton lua ne fait rien, ce qui lui donne du temps
Ca vaut vraiment le coup d'étudier cela, je peux t'aider si çà te dis

Bernard
Mon blog de construction : http://tabar57.blog4ever.com
Hémicockpit de Beechcraft B200 ( de FlightOne ) P3DV4.5 et 2 PC en réseau W7 64 bits et W10, cartes OC et FDbus, vibreur et yoke rdf de BFFsimulation, météo réelle asp4
Avatar de l’utilisateur
tabar57
 
Messages: 3651
Inscription: 29/12/10
Localisation: Dans ma cabine en Lorraine

Re: Potentiomètre : retour de valeurs étranges !

Messagede OscarDelta77 » Jeu 30 Avr 2020 19:21

Bernard, merci pour le conseil !

Saurais-tu où je pourrais trouver des explications et/ou des exemples ?
(Je réponds à la volée, je n'ai pas cherché, pas encore !)
Dernière édition par OscarDelta77 le Jeu 30 Avr 2020 19:35, édité 1 fois.
OscarDelta77
 
Messages: 96
Inscription: 19/02/14

Re: Potentiomètre : retour de valeurs étranges !

Messagede tabar57 » Jeu 30 Avr 2020 19:30

Voilà ton code modifié , sans le while do

Code: Tout sélectionner
function FUELSELECT()
    ------------------------------------------------------------------------------------------   
    -- Gestion du Sélecteur de carburant A2A C182                                           --
    ------------------------------------------------------------------------------------------

    -- Lecture de la variable A2A   
       Fuel_Selector_A2A = ipc.readLvar("L:FSelC182State")
       
    -- Lecture Du retour de la variable SIOC
       Fuel_Selector_SIOC = ipc.readSB(0X66C8)
         
    -- Traitement de la variable SIOC
       -- Traitement Fuel Selector
        if (Fuel_Selector_SIOC ~= Fuel_Selector_A2A) then
          -- if Fuel_Selector_SIOC = 245 then
          if Fuel_Selector_SIOC == -1 then
             ipc.writeLvar("L:FSelC182State", 0)
             ipc.writeUB(0X66C8, Fuel_Selector_SIOC)
          end
         
          if Fuel_Selector_SIOC >= -85 and Fuel_Selector_SIOC <= -75 then
             ipc.writeLvar("L:FSelC182State", 1)
             ipc.writeUB(0X66C8, Fuel_Selector_SIOC)
          end
         
          if Fuel_Selector_SIOC >= 80 and Fuel_Selector_SIOC <= 90 then
             ipc.writeLvar("L:FSelC182State", 2)
             ipc.writeUB(0X66C8, Fuel_Selector_SIOC)
          end
         
          --if Fuel_Selector_SIOC >= 245 then
          if Fuel_Selector_SIOC >= 0 and Fuel_Selector_SIOC <= 10 then
             ipc.writeLvar("L:FSelC182State", 3)
             ipc.writeUB(0X66C8, Fuel_Selector_SIOC)
          end
        end

    -- Affichage dans P3D pour tests
      -- Fuel Selector
       ipc.display("L:FSelC182State : " .. Fuel_Selector_A2A .. "\r\n" .. "Valeur Potentiometre SIOC : " .. Fuel_Selector_SIOC )
       
    ------------------------------------------------------------------------------------------   
    -- Fin de Gestion du Sélecteur de carburant A2A C182                                    --
    ------------------------------------------------------------------------------------------   
end

event.offset (0x66C8, "UB", "FUELSELECT")
   


Il faut se rappeler que les events se mettent après les fonctions, à la fin du script Lua, sinon çà ne fonctionne pas

Cordialement

Pour les exemples, il y a du code Lua à étudier dans la doc Fsuipc, sinon y a aussi mon blog lolaffiche

Bernard
Mon blog de construction : http://tabar57.blog4ever.com
Hémicockpit de Beechcraft B200 ( de FlightOne ) P3DV4.5 et 2 PC en réseau W7 64 bits et W10, cartes OC et FDbus, vibreur et yoke rdf de BFFsimulation, météo réelle asp4
Avatar de l’utilisateur
tabar57
 
Messages: 3651
Inscription: 29/12/10
Localisation: Dans ma cabine en Lorraine

Re: Potentiomètre : retour de valeurs étranges !

Messagede OscarDelta77 » Jeu 30 Avr 2020 19:38

Merci beaucoup Bernard !

Je vais étudier ça de très près car j'ai encore du pain sur la planche ... Vous risdquez donc d'avoir de mes nouvelles très régulièrement ! lolaffiche rirebleu
OscarDelta77
 
Messages: 96
Inscription: 19/02/14

Suivante

Retourner vers Programmation Sioc





Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 5 invités