Page 1 sur 1

offset float 64

MessagePosté: Dim 4 Sep 2011 16:38
de Wolff
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.

Re: offset float 64

MessagePosté: Dim 4 Sep 2011 17:51
de JeeHell
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

Re: offset float 64

MessagePosté: Lun 5 Sep 2011 00:58
de chtipilot
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

Re: offset float 64

MessagePosté: Lun 5 Sep 2011 22:52
de Wolff
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.

Re: offset float 64

MessagePosté: Lun 5 Sep 2011 23:13
de JeeHell
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

Re: offset float 64

MessagePosté: Mar 6 Sep 2011 16:07
de Wolff
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.

Re: offset float 64

MessagePosté: Mar 6 Sep 2011 17:28
de JeeHell
Cool, une petite vidéo? chouettedoights