Décimales COM

Questions de programmation / Offset FSUIPC et IOCP

Re: Décimales COM

Messagede mameloose » Jeu 24 Nov 2016 22:59

Enfaite fs tiens compte des centième mais pas les millièmes donc si tu as une fréquence de 121.125 que tu mette 121.120 ça sera pareil... En gros il captera les deux si tu préfères...
Jte fait le code en rentrant demain soir
Avatar de l’utilisateur
mameloose
 
Messages: 1271
Inscription: 20/04/09
Localisation: evreux

Re: Décimales COM

Messagede sertor33 » Jeu 24 Nov 2016 23:04

Ah OK, clair !
sertor33
 
Messages: 44
Inscription: 24/09/16

Re: Décimales COM

Messagede mameloose » Ven 25 Nov 2016 19:32

bon jai fait un code vite fait mais jai un soucis je passe de 121.00 a 121.02 puis 121.05 et au lieu de 121.07 jai 08 gratgrat
comprend pas jme penche dessus dimanche pour voir ca trop de boulot ce week end


voila mon code

Code: Tout sélectionner
// *****************************************************************************
// * Config_SIOC ver 4.5   -     By Manuel Velez    -    www.opencockpits.com
// *****************************************************************************
// * FileName : sioc.txt
// * Date : 25/11/2016



Var 0010, name Dis_Com1, Link IOCARD_DISPLAY, Digit 0, Numbers 6

Var 0050, name FS_Com1, Link FSUIPC_INOUT, Offset $311A, Length 2     // Com1 STBY
{
  L0 = FROMBCD &FS_Com1
  &frequencecom1 = L0   
  &frequenceENT1 = DIV L0 ,100
}

Var 0100, name Enc_Com1_DEC, Link IOCARD_ENCODER, Input 0, Aceleration 1, Type 2     // Encoder Com1 decimales
{
  L0 = &Enc_Com1_DEC * 25
  &frequenceDEC1 = ROTATE 0 ,999 ,L0
  L1 = &frequenceENT1 * 100
  L2 = &frequenceDEC1 / 10
  &frequencecom1 = L1 + L2
}

Var 0101, name Enc_Com1_ENT, Link IOCARD_ENCODER, Input 6, Aceleration 1, Type 2
{
  L0 = &Enc_Com1_ENT   
  &frequenceENT1 = ROTATE 22 ,36 ,L0
  L1 = &frequenceENT1 * 100
  L2 = &frequenceDEC1 / 10
  &frequencecom1 = L1 + L2
}

Var 0001, name frequencecom1
{
  &Dis_Com1 = &frequencecom1 + 10000
  &FS_Com1 = TOBCD &frequencecom1
}

Var 0002, name frequenceENT1

Var 0003, name frequenceDEC1
Avatar de l’utilisateur
mameloose
 
Messages: 1271
Inscription: 20/04/09
Localisation: evreux

Re: Décimales COM

Messagede fab » Ven 25 Nov 2016 22:18

J'ai retrouvé dans mes archive le code pour COM1

C'est prévu pour 2 encodeurs : un pour les dixièmes et l'autre pour les unités.

L'idée est de travailler avec des entiers, puis de diviser ensuite par 10.

Greg, ton code ressemble beaucoup, je ne vois pas où ça coince gratgrat

Code: Tout sélectionner
// *****************************************************************************
// * 15 mai 2016
// * Fabien Deheegher 
// *****************************************************************************
// * FileName : COM1_gestion_025.txt
// * Date : 15/05/2016



Var 0000, name INIT, Value 1
{
  &InitCarte = DELAY 5 ,300
}

Var 0001, name InitCarte, static
{
  CALL &COMPILCOM1
}

Var 0002, name resetaff, Link SUBRUTINE
{
  &DIGCOM1 = -999999   
}

Var 0003, name SetAff, Link SUBRUTINE
{
  L0 = &FSCOM1 + 65536     // AJOUT DE 1000 EN HEXA
  &DIGCOM1 = FROMBCD L0
}

Var 0120, name DIGCOM1, static, Link IOCARD_DISPLAY, Digit 15, Numbers 5     // *** Mettre ici les 5 Display COM1

Var 0121, name FSCOM1, static, Link FSUIPC_INOUT, Offset $034E, Length 2     // Fréquence COM1
{
  L0 = &FSCOM1 + 65536     // AJOUT DE 1000 EN HEXA
  &DIGCOM1 = FROMBCD L0
}

Var 0122, name ENCCOM1, static, Link IOCARD_ENCODER, Input 15, Aceleration 0, Type 0     // *** entrée de l'encodeur dixieme
{
  L0 = 25 * &ENCCOM1
  L0 = L0 * -1
  &COM1DIZ = ROTATE 0 ,999 ,L0
  CALL &COMPILCOM1
}

Var 0123, name ENCCOM1UNIT, static, Link IOCARD_ENCODER, Input 12, Aceleration 0, Type 0     // *** encodeur unité
{
  L0 = 100 * &ENCCOM1UNIT
  L0 = L0 * -1
  &COM1UNIT = ROTATE 1800 ,3699 ,L0
  CALL &COMPILCOM1
}

Var 0124, name COM1DIZ, static, Value 0

Var 0125, name COM1UNIT, static, Value 1800

Var 0126, name COMPILCOM1, static, Link SUBRUTINE
{
  L0 = &COM1DIZ - 1
  L0 = L0 / 10
  L0 = &COM1UNIT + L0
  &FSCOM1 = TOBCD L0
}

Avatar de l’utilisateur
fab
 
Messages: 4414
Inscription: 26/12/12
Localisation: Roubaix

Re: Décimales COM

Messagede mameloose » Dim 27 Nov 2016 16:54

c'est bon j'ai trouvé !
merci fab ta maniere de programmer etait plus simple que moi ....


voila le code qui fonctionne :

Code: Tout sélectionner
// *****************************************************************************
// * Config_SIOC ver 4.5   -     By Manuel Velez    -    www.opencockpits.com
// *****************************************************************************
// * FileName : sioc.txt
// * Date : 27/11/2016



Var 0010, name Dis_Com1, Link IOCARD_DISPLAY, Digit 0, Numbers 5

Var 0050, name FS_Com1, Link FSUIPC_INOUT, Offset $311A, Length 2     // Com1 STBY
{
  L0 = &FS_Com1 + 65536
  &Dis_Com1 = FROMBCD L0
}

Var 0100, name Enc_Com1_DEC, Link IOCARD_ENCODER, Input 0, Aceleration 1, Type 2     // Encoder Com1 decimales
{
  L0 = &Enc_Com1_DEC * 25
  &frequenceDEC1 = ROTATE 0 ,999 ,L0
  CALL &frequencecom
}

Var 0101, name Enc_Com1_ENT, Link IOCARD_ENCODER, Input 6, Aceleration 1, Type 2
{
  L0 = &Enc_Com1_ENT * 100
  &frequenceENT1 = ROTATE 1800 ,3699 ,L0
  CALL &frequencecom
}

Var 0001, name frequencecom, Link SUBRUTINE
{
  L0 = &frequenceDEC1 - 1
  L0 = L0 / 10
  L0 = &frequenceENT1 + L0
  &FS_Com1 = TOBCD L0
}

Var 0002, name frequenceENT1, Value 1800

Var 0003, name frequenceDEC1, Value 0


dans le principe comme fs affiche une frequence de 22.10 au lieu de 122.10 le faite d'ajouter 65536 en hexa resout le probleme sans toucher au valeurs en FROMBCD ....

pour le reste c'est tout con l'encodeur des decimale incremente de 25 en 25 et laffichage ne prend que le premier chiffre donc on passe de 0 a 2 a 5 a 7 a 10 a 12 ect .....

et pour les entier rien de particulier

pas facile les codes com dans fs
Avatar de l’utilisateur
mameloose
 
Messages: 1271
Inscription: 20/04/09
Localisation: evreux

Re: Décimales COM

Messagede sertor33 » Dim 27 Nov 2016 19:01

Bonsoir mameloose,

Merci pour ton code, et ton temps passé.
J'ai également planché dessus ce WE, voila ce que j'ai trouvé. Qu'en penses-tu ?

Var 0000, name INIT, Value 0
{
&RecupTout = 119450 // initialisation d'une fréquence. L0 = FROMBCD &FS_Com1_STB marche pas !!!
&ENT = &RecupTout / 10
&ENT = TRUNC &ENT
&ENT = &ENT / 100
&ENT = TRUNC &ENT
&Entier = &ENT
&RecupEnt = &ENT * 1000
L1 = &RecupTout
&DEC = L1 - &RecupEnt
&Decimal = &DEC
}

Var 0075, name RecupTout
Var 0076, name RecupEnt
Var 0080, name ENT
Var 0090, name DEC

Var 0072, name FS_Com1_STB, Link FSUIPC_OUT, Offset $311A, Length 2 // Com1 STBY
{
&Dis_Com1 = FROMBCD &FS_Com1_STB
}

Var 0081, name Entier
{
L0 = &Entier * 1000
L0 = L0 + &Decimal
&Dis_Com1 = DIV L0 ,10
&Dis_Com1 = TRUNC &Dis_Com1
&FS_Com1_STB = TOBCD &Dis_Com1
}

Var 0082, name Decimal
{
L0 = &Entier * 1000
L0 = L0 + &Decimal
&Dis_Com1 = DIV L0 ,10
&Dis_Com1 = TRUNC &Dis_Com1
&FS_Com1_STB = TOBCD &Dis_Com1
}

Var 0086, name Enc_Com1_EN, Link IOCARD_ENCODER, Input 2, Aceleration 2, Type 2 // Encoder COM1 entiers
{
&Entier = ROTATE 118 ,136 ,&Enc_Com1_EN
}

Var 0088, name Enc_Com1_DC, Link IOCARD_ENCODER, Input 0, Aceleration 2, Type 2 // Encoder Com1 decimales
{
L0 = &Enc_Com1_DC * -25
&Decimal = &Decimal - L0
IF &Decimal > 975
{
&Decimal = 0
}
IF &Decimal < 0
{
&Decimal = 975
}
}

Var 0099, name Dis_Com1, Link IOCARD_DISPLAY, Digit 0, Numbers 5

J'ai pas fait de SUBRUTINE, c'est encore du test.
Je ne sais pas comment récupérer la fréquence initiale du STBY, programmation évènementielle oblige la variable n'a pas encore bougé. Je pensais que INIT pouvait la récupérer ...
Y'a une solution (qui peut servir à toutes initialisations pré-démarrage) ?

Merci à tous. Ça c'est du forum !
sertor33
 
Messages: 44
Inscription: 24/09/16

Re: Décimales COM

Messagede mameloose » Dim 27 Nov 2016 21:02

hello !
avec mon code tu verras que les valeurs initial sont mise dans frequence ENT et DEC du coup a chaque demarrage ta frequence stby sera a 118.00
Avatar de l’utilisateur
mameloose
 
Messages: 1271
Inscription: 20/04/09
Localisation: evreux

Re: Décimales COM

Messagede sertor33 » Dim 27 Nov 2016 21:47

OK pour ton code bien sur.
Je reviens sur mon interrogation générale sur SIOC.
Comment récupérer, pour les afficher, les valeurs au démarrage de FS, sachant que dans le script les variables n'ont pas encore 'bougé' et donc n'activent pas encore le code associé ?
Quelles manip dans Var 0000 ou ailleurs faut-il faire pour déclencher ? Je pense au cap, aux fréquences, aux volets ...
sertor33
 
Messages: 44
Inscription: 24/09/16

Re: Décimales COM

Messagede mameloose » Dim 27 Nov 2016 22:47

ah si quand tu lance sioc il affiche les valeurs frequence de lavion du moment !

sauf dès linstant ou tu vas toucher a ton encodeur tu repartira a 118.00 mais ca se voit a peine au depart ....

ensuite la variable INIT est lu au demarrage (bien lui mettre 0 en numero de var )
donc dedans tu met ce que tu veux .... si tu veux tes flaps a 10 quand tu demarre fsx tu configure ca dans cette variable et au lancement de sioc ca va suivre ....ect ...
Avatar de l’utilisateur
mameloose
 
Messages: 1271
Inscription: 20/04/09
Localisation: evreux

Re: Décimales COM

Messagede sertor33 » Dim 27 Nov 2016 23:56

Compris, je vais tester ça
Re-merci pour ton assistance, ta patience ...
sertor33
 
Messages: 44
Inscription: 24/09/16

Précédente

Retourner vers Programmation Sioc





Qui est en ligne

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

cron