offset float 64

Questions de programmation / Offset FSUIPC et IOCP

offset float 64

Messagede Wolff » Dim 4 Sep 2011 16:38

Bonjour à tous.

Cela fait deux jours que je tourne en rond (et sur le net) pour solutionner mon problème et je suis toujours dans le brouillard.
Voila j'attaque mon programe Sioc pour commander le servo de l'aiguille de mon rudder trim.
L'offset FSUIP est 2EC0 en float 64 pour une valeur qui varie de -0.17453 à + 0.17453 ( c'est FS interrogate qui le dit)
J'aurai tendence à penser que je doit faire (variable contenant l'offset * 2933.59) + 512. Mais il me semble que l'on ne peut pas utiliser directement les offsets en float 64 sur un ordi 32 bits.
alors j'en fait quoi de mon offset? murrouge
Merci par avance.
Dominique.
PEDESTAL, MCP, EFIs, CDU ET PANELS GRAVES, Tiller,
SERVEUR ASUS P6T avec intel I7-950, 2Go, DD500Go 2 GTX470 1280Mo, Triple head, 3 BENQ 21.5",1 ACER 19 Window 7.
2 PC XP, 1 ACER 17" et 5" CDU
FSX, FSUIPC, Prosim, TOPCAT
Avatar de l’utilisateur
Wolff
 
Messages: 180
Inscription: 18/10/10
Localisation: Châlons en Champagne

Re: offset float 64

Messagede JeeHell » Dim 4 Sep 2011 17:51

Salut Wolff,

Ne t'inquiète pas, un windows 32 bits sait gérer des valeurs en 64 bits, et SIOC également. je te mets l'extrait de l'aide de SIOC à ce sujet:

The variable will store the value from FSUIPC offset. The associated script will be executed only if the variable value changes.

Attributes :
Name: Assigns a symbolic name to a variable.

Offset: FSUIPC offset.

Length: Variable size in bytes. Values can be 1, 2, 4 and 8.

Numbers: If we work with 8 bytes FLOAT, this attribute sets the division factor. If we set 1 and FLOAT is 12.3, the variable will store 123.

Type: By setting 1, we force a binary to signed integer conversion. The value stored in the variable is signed.

Example:

Var 0015, Link FSUIPC_IN, Offset $02CC, Length 8, Numbers 1


Et étonnament, SIOC ne gère PAS les float 32 bits! j'ai d'ailleurs mis une sub-routine quie permet d'utiliser ce genre de variables sur le forum.

@+
JL
JeeHell
 
Messages: 1853
Inscription: 18/05/09

Re: offset float 64

Messagede chtipilot » Lun 5 Sep 2011 00:58

J'ai retrouvé ça que j'avais fait pour les index de trim du throttle:

Code: Tout sélectionner
Var 0031, name TrimControl, Link FSUIPC_INOUT, Offset $0BC0, Length 2

Var 0032, name TrimIndicator, Link FSUIPC_IN, Offset $0BC2, Length 2
{
  L0 = &TrimIndicator   
  &ServoTrim_L = L0 / 32.029324
  &ServoTrim_R = L0 / 32.029324
}

Var 0033, name ServoTrim_L, Link USB_SERVOS, Device 1, Output 4, PosL 786, PosC 905, PosR 1023     // Servo trim Left

Var 0034, name ServoTrim_R, Link USB_SERVOS, Device 1, Output 5, PosL 786, PosC 905, PosR 1023     // Servo trim Right
Chtipilot Image

Image
Avatar de l’utilisateur
chtipilot
 
Messages: 371
Inscription: 2/04/11
Localisation: Lille (Nord)

Re: offset float 64

Messagede Wolff » Lun 5 Sep 2011 22:52

Bonsoir.

Merci de vos réponses
Premièrement il n'y aura pas de merguez nondoightblanc ça n'a pas fumer

Deuxièmement j'ai procédé comme me l'a dit JL avec ma variable float 64 mais ça me donne une variation de -2 à +2 en entiers. ce qui fait que mon index n'a que 5 positions au lieu d'avoir une course continue. Sinon mon petit programme fonctionnerait. Comme ça fait quatre heures que je fait des tests je vais prendre un aspirine et me coucher. J'ai trouver un truc dans la doc FSUIPC ou on coupe l'offset en deux on "tripatouille" la partie basse on test le bit 16 et ensuite on recombine ce resultat avec la partie haute mais je n'ai pas tout compris. furieuxfumée
merci affiche pour une lumière éventuelle.

A+
Dominique.
PEDESTAL, MCP, EFIs, CDU ET PANELS GRAVES, Tiller,
SERVEUR ASUS P6T avec intel I7-950, 2Go, DD500Go 2 GTX470 1280Mo, Triple head, 3 BENQ 21.5",1 ACER 19 Window 7.
2 PC XP, 1 ACER 17" et 5" CDU
FSX, FSUIPC, Prosim, TOPCAT
Avatar de l’utilisateur
Wolff
 
Messages: 180
Inscription: 18/10/10
Localisation: Châlons en Champagne

Re: offset float 64

Messagede JeeHell » Lun 5 Sep 2011 23:13

Salut,

Pour que l'on puisse t'aider, il nous faudrait le code SIOC.
De ce que tu nous dit, à mon avis tu as réutilisé le code exemple de l'extrait de l'aide de SIOC que j'ai donné.
Donc il fort probable que le +2 que tu lis soit en fait +0.2, soit sensiblement la valeur extrême de ton offset arrondie (+0.17453 * 10 = +1.7 arrondi à +2).

Donc je traduis l'aide de sioc: le paramêtre "number" est en gros le facteur multiplicatif avec lequel SIOC va transformer ton nombre à virgule en nombre entier.

Donc si tu mets number=1, une valeur 12.7145 va devenir 127 dans la variable SIOC.
Si tu mets number=3, une valeur 12.7145 va devenir 12715 dans la variable SIOC (un 5 en dernier car il arrondit).

L'offset que tu lis va de -0.17453 à +0.17453. Avec number à 1, tu n'as pas de précision du tout (en nombres entiers comme tu l'as remarqué, de -2 à +2 soit 5 positions). Il faut que tu mettes number au moins à 3 (variations entre -175 et +175) ou 4 (variations entre -1745 et +1745) pour augmenter le nombre de pas entiers. Ensuite à toi d'adapter le code du moteur pour le faire bouger proportionnellement...)

@+
JL
JeeHell
 
Messages: 1853
Inscription: 18/05/09

Re: offset float 64

Messagede Wolff » Mar 6 Sep 2011 16:07

Bonjour.

Grand merci à toi. merci affiche merci affiche
Je n'avais pas bien pigé la signification de ce 1. Je suis passé à 4, modifié mon coefficient et j'ai un index de rudder trim qui fonctionne parfaitement. grandsoleil

Dominique.
PEDESTAL, MCP, EFIs, CDU ET PANELS GRAVES, Tiller,
SERVEUR ASUS P6T avec intel I7-950, 2Go, DD500Go 2 GTX470 1280Mo, Triple head, 3 BENQ 21.5",1 ACER 19 Window 7.
2 PC XP, 1 ACER 17" et 5" CDU
FSX, FSUIPC, Prosim, TOPCAT
Avatar de l’utilisateur
Wolff
 
Messages: 180
Inscription: 18/10/10
Localisation: Châlons en Champagne

Re: offset float 64

Messagede JeeHell » Mar 6 Sep 2011 17:28

Cool, une petite vidéo? chouettedoights
JeeHell
 
Messages: 1853
Inscription: 18/05/09


Retourner vers Programmation Sioc





Qui est en ligne

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