Offset en virgule flottante et potentiomètre

Questions de programmation / Offset FSUIPC et IOCP

Offset en virgule flottante et potentiomètre

Messagede tabar57 » Sam 13 Jan 2018 20:56

Bonjour,

Peut être suis je un peu fatigué ou vieillissant mais je cherche la combine pour piloter un offset codé en virgule flottante ( float 32 bits ) à partir d'un potar.
Pour être clair, il s'agit de l'offset $320, il est donné comme non modifiable mais j'ai réussi à le modifier depuis la console IOCP.
Je souhaiterai modifier le taux de montée (ou de descente) de l'altitude cabine à partir d'un potentiomètre

Merci pour vos réponses

Cordialement

Bernard
Mon blog de construction : http://tabar57.blog4ever.com
Hémicockpit KA350 natif de P3DV4.1 modifié en B200 et 2 PC en réseau W7 64 bits et W10, cartes OC et FDbus, vibreur et yoke rdf de BFFsimulation
Avatar de l’utilisateur
tabar57
 
Messages: 2509
Inscription: 29/12/10
Localisation: Dans ma cabine en Lorraine

Re: Offset en virgule flottante et potentiomètre

Messagede fab » Dim 14 Jan 2018 08:39

Je n'ai pas réussi non plus pour mes tests, à voir, SIOC utilise que des float en 64 bits ( offset d'une longueur de 8 octets)
Avatar de l’utilisateur
fab
 
Messages: 2976
Inscription: 26/12/12

Re: Offset en virgule flottante et potentiomètre

Messagede stevelep » Dim 14 Jan 2018 12:26

Je crois qu’on peux mais c’est un peu compliqué
Le principe c’est d’envoyer la valeur du pot 0-127 dans un offset libre
de FSUIPC (7000-...) de créer une macro en langage LUA de déclarer
ton offset en F32 et de lire ton offset 7000 et d’écrire la valeur sur
l’offset F32 moyennant une petite conversion.

Je l’ai jamais fait mais ça prend que 3-4 lignes de code

BOB
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2027
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Re: Offset en virgule flottante et potentiomètre

Messagede tabar57 » Dim 14 Jan 2018 12:30

Bonjour Steve,

Je suis preneur de cette macro pour l'étudier, si tu as le temps bien évidemment merci affiche


Bernard
Mon blog de construction : http://tabar57.blog4ever.com
Hémicockpit KA350 natif de P3DV4.1 modifié en B200 et 2 PC en réseau W7 64 bits et W10, cartes OC et FDbus, vibreur et yoke rdf de BFFsimulation
Avatar de l’utilisateur
tabar57
 
Messages: 2509
Inscription: 29/12/10
Localisation: Dans ma cabine en Lorraine

Re: Offset en virgule flottante et potentiomètre

Messagede PapaLima » Lun 15 Jan 2018 13:45

Bernard

Tu as peut être un début de réponse là :
viewtopic.php?p=25560

a+
Avatar de l’utilisateur
PapaLima
 
Messages: 370
Inscription: 14/04/16
Localisation: LFPG

Re: Offset en virgule flottante et potentiomètre

Messagede tabar57 » Lun 15 Jan 2018 14:37

Bonjour,

fab a écrit:Je n'ai pas réussi non plus pour mes tests, à voir, SIOC utilise que des float en 64 bits ( offset d'une longueur de 8 octets)


Pourtant ces variables ( 318 , 320 ...) sont données dans la table des offsets pour être de longueur 4 en float 32 bits gratgrat

Merci pour l'info Papalima, je vais regarder çà de plus près, il faut que j'arrive à retrouver cette routine de JL

Cordialement

Bernard
Mon blog de construction : http://tabar57.blog4ever.com
Hémicockpit KA350 natif de P3DV4.1 modifié en B200 et 2 PC en réseau W7 64 bits et W10, cartes OC et FDbus, vibreur et yoke rdf de BFFsimulation
Avatar de l’utilisateur
tabar57
 
Messages: 2509
Inscription: 29/12/10
Localisation: Dans ma cabine en Lorraine

Re: Offset en virgule flottante et potentiomètre

Messagede fab » Lun 15 Jan 2018 14:41

tabar57 a écrit:Pourtant ces variables ( 318 , 320 ...) sont données dans la table des offsets pour être de longueur 4 en float 32 bits gratgrat
...


Oui, c'est bien des floats avec une longueur de 4 octets (4x8=32 bits), mais SIOC ne reconnait pas les floats en 32 bits
Avatar de l’utilisateur
fab
 
Messages: 2976
Inscription: 26/12/12

Re: Offset en virgule flottante et potentiomètre

Messagede stevelep » Mer 17 Jan 2018 11:05

Hello,

Comme dit précedemment je ne l'ai pas testé.

Mais le principe est inspiré de ce post sur les L:VARS: (page 1)
viewtopic.php?f=89&t=3709#

Le code donné permet de copier des L:VARS dans un offset FSUIPC et des offsets FSUIPC dans des L:VARS.

Ici on a pas besoin de L:VARS, donc rien ne t'empêche de copier un offsets FSUIPC (ton potentiomètre)
dans un autre offset FSUIPC (la variable que tu cherches à commander)

Voici le code à modifier (les parties en rouge sont inutile pour toi)
Evidemment il faut trouver le bon format de lecture et d'écriture
c'est ici les lettre UB et SD, il faut les remplacer pour le Float32

les formats de nombre dans LUA (fichier FSUIPC Lua Library dans dossier document de FSUIPC)

UB unsigned 8-bit byte
UW unsigned 16-bit word
UD unsigned 32-bit dword
SB signed 8-bit byte
SW signed 16-bit word
SD signed 32-bit dword
DD signed 64-bit value
DBL 64-bit double floating point
FLT 32-bit single floating point
STR string of ASCII characters


A suivre, dit moi si tu comprend quelque chose

BOB


while 1 do

-- Lecture des LVars
boost = ipc.readLvar("L:Eng1_MPGauge")
rad = ipc.readLvar("L:Eng1_WaterTempGauge")
rpm = ipc.readLvar("L:Eng1_RPMGauge")
ias = ipc.readLvar("L:AirspeedIndicatedNeedle")
vsi = ipc.readLvar("L:VerticalSpeed")


-- Lecture des offsets
vent = ipc.readUB(0x66E0)
oxalt = ipc.readUB(0x66E2)
oxsup = ipc.readUB(0x66E4)

-- formatage des valeurs
boost = boost * 100
if boost < -600 then
boost = -600
end
if rpm < 1000 then
rpm = 1000
end
if rad < 40 then
rad = 40
end
if ias < 50 then
ias = 50
end

roxalt = oxalt * 250

-- Ecriture dans Offsets Libres
ipc.writeSD(0x66c0, boost)
ipc.writeSD(0x66c4, rad)
ipc.writeSD(0x66c8, rpm)
ipc.writeSD(0x66D2, ias)
ipc.writeSD(0x66D6, vsi)

LVarSet = "L:CabinVent"
ipc.writeLvar(LVarSet,vent)
LVarSet = "L:OxyAltSetValve"
ipc.writeLvar(LVarSet,oxalt)
LVarSet = "L:OxyMaster"
ipc.writeLvar(LVarSet,oxsup)


ipc.sleep(68)

end
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2027
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Re: Offset en virgule flottante et potentiomètre

Messagede stevelep » Mer 17 Jan 2018 18:03

En résumé ça doit ressembler à ça:

la variable pot lit l'offset libre où tu envoie la valeur de ton potentiomètre (0-225) (8bit non-signé=UB)
on multiplie pot par un coefficient pour transformer 0-255 en 0.0-1.0 (float32=FTL)
puis on écrit la valeur dans l'offset désiré pour commander FS.

while 1 do

-- Lecture de l'offset
pot = ipc.readUB(0x6600)

-- formatage des valeurs
coef = 1 / 255
value = pot * coef

-- Ecriture dans offset
ipc.writeFLT(0x0320, value)

ipc.sleep(68)

end
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2027
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Re: Offset en virgule flottante et potentiomètre

Messagede tabar57 » Jeu 18 Jan 2018 14:48

Merci Steve pour ta réponse, je vais décortiquer tout çà tranquillement et essayer de le digérer.
Il en ressort que c'est plus de la curiosité intellectuelle qu'autre chose, car régler un taux de montée cabine sur un simulateur faut déjà être pas mal atteint mais bon ... clownblanc

Bernard
Mon blog de construction : http://tabar57.blog4ever.com
Hémicockpit KA350 natif de P3DV4.1 modifié en B200 et 2 PC en réseau W7 64 bits et W10, cartes OC et FDbus, vibreur et yoke rdf de BFFsimulation
Avatar de l’utilisateur
tabar57
 
Messages: 2509
Inscription: 29/12/10
Localisation: Dans ma cabine en Lorraine

Suivante

Retourner vers Programmation Sioc





Qui est en ligne

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