Offset, bit, etc (Page 1) / L'électronique & les périphériques / Forum Flight-pilote.com - Simulation aérienne et Homecockpit

#1 05-02-2019 21:49:31

Aurelien

Technicien transit

Lieu : Grenoble
Inscrit le : 21-08-2018
Messages : 91

Offset, bit, etc

Bonsoir à vous!

J'ai une question à soumettre aux experts en la matière...

Voilà, j'arrive depuis peu à interfacer 2 gauges du cessna A2A, via mobiflight, la vitesse et le RPM.

Cependant, impossible de les avoir fonctionnelles en même temps!

J'ai définit la gauge de vitesse sur l'offset libre 66c0.
Cette gauge est liée à la Lvar L:AirspeedIndicatedNeedle, qui d'après le log donne des valeurs entre 0 et 200 grosso modo si on fait péter le badin!  smile
Dans la liste des Lvar, la valeur a 12 chiffres après la virgule, mais FSUIPC récupère une valeur arrondie à l'unité. J'ai donc une valeur qui en binaire va de 0 a 00010011, soit une place de 8 bit = 1 octet pour exploiter cette variable. (Qu'on m'arrête si je dis des bêtises)

Je me suis donc dit que la seconde gauge que j'arrive à faire fonctionner seule sur l'offset 66c0, je dois la mettre a 66c0+1octet=66c1?

Donc en plus de la vitesse en 66c0, j'affecte le RPM en 66c1, mais...
Malheureusement, pour la gauge RPM, FSUIPC ne reçoit aucune valeur pour celle ci (alors qu'il recoit bien des valeurs entre 0 et 2700env si elle est sur l'offset 66c0...), J'ai testé sur d'autre offset, comme 66c8, 66ff, mais impossible. Ça ne marche que sur 66c0.

Quelqu'un aurait-il une idée à ce petit souci? Je me demande s'il faut pas, à tout hasard, faire des scripts sur des Lua séparés?!

Merci en tout cas
Aurélien

Déconnecté

#2 05-02-2019 22:29:49

HB-EBC

Électronicien

Lieu : Yerres
Inscrit le : 07-08-2018
Messages : 328
Site Web
Récompense : TroCrea

Re : Offset, bit, etc

Comment as tu défini ton offset 66c0 (en byte, word, dword, ...) ?
Désolé mais les scripts sous LUA je ne connais pas.


Inventer un avion n'est rien. Le construire est un début. Voler c'est tout.

Simulateur B737-800 / Prosim737
Hardware : CPFlight / PlugNFly / Fabrication maison

Déconnecté



#3 06-02-2019 09:37:19

Aurelien

Technicien transit

Lieu : Grenoble
Inscrit le : 21-08-2018
Messages : 91

Re : Offset, bit, etc

HB-EBC a écrit :

Comment as tu défini ton offset 66c0 (en byte, word, dword, ...) ?
Désolé mais les scripts sous LUA je ne connais pas.

je ne suis pas sûr de répondre à ta question,
mais j'ai défini dans le script .Lua avec "ipc.writeUB" pour Unsigned 8 bit = 1 byte,
et dans mobiflight, offset 66c0, size in bytes = 1.

J'ai progressé dans mon souci, et j'ai trouvé quelque chose d'intéressant!...

En fait,

si je met dans le script .Lua l'offset 66c0 pour l'IAS, et 66c1 pour le RPM, via mobiflight, je ne recoit des valeurs que pour l'IAS.
A tout hasard, j'ai inversé la position des scripts, c'est à dire que j'ai d'abord écrit le script pour le RPM, toujours en 66c1, puis à la suite le script pour l'IAS, toujours en 66c0. Et bingo! J'ai des valeurs pour le RPM, mais plus pour l'IAS!

J'ai donc fait un second fichier .Lua, avec l'IAS en 66c0, déclaré dans FSUIPC. Et ca marche maintenant: j'ai bien les valeurs à la fois du RPM et de l'IAS!

Mais j'avoue que cela me parait bizarre que je doive en faire un nouveau .Lua;

Pour les offset des switch battery (3340) et alternateur (3344), j'arrive bien a les mettre à la suite sans que ça pose problème.

Savez vous éventuellement si j'ai oublié quelque chose entre mes 2 scripts RPM et IAS, qui fait que la lecture s'arrête au premier?!

-- test IAS
while 1 do
IAS = ipc.readLvar("L:AirspeedIndicatedNeedle")
ipc.writeUB(0x66c0, IAS)
ipc.sleep(100)
end


-- test RPM 
while 1 do
RPM = ipc.readLvar("L:Eng1_RPM")
ipc.writeUW(0x66c1, RPM)
ipc.sleep(100)
end

mes scripts sont à la suite, tel quel, avec end à la fin de chaque

Dernière modification par Aurelien (06-02-2019 09:39:00)

Déconnecté



#4 06-02-2019 10:52:37

Ptipilot

Douanier

Inscrit le : 21-10-2018
Messages : 63

Re : Offset, bit, etc

C'est normal Aurelien...
Ton script réagit correctement à son écriture actuelle. clioeil

Là, tu lui as fait deux boucles.
Il reste donc scotché dans la première boucle sans jamais pouvoir passer à la seconde puisqu'il n'y a pas de mode de sortie.

Nota :
J'ai très bien compris ce que tu voulais faire dans ton petit test, mais je ne te donnerais pas la solution à celui-ci. sad
Si, je te la donne, tu n'apprendrais rien... clioeil


A+                  Alain
AMD Ryzen Threadripper 1950X (16 cores-32 threads) / 64 GB RAM / NVMe SSD 960 PRO : 512 & 1024 GB + 2 DD de 4 To / GTX 980 4 Mo / Windows 10 Enterprise / P3Dv4.4

Déconnecté



#5 06-02-2019 11:05:23

Aurelien

Technicien transit

Lieu : Grenoble
Inscrit le : 21-08-2018
Messages : 91

Re : Offset, bit, etc

Ptipilot a écrit :

C'est normal Aurelien...
Ton script réagit correctement à son écriture actuelle. clioeil

Là, tu lui as fait deux boucles.
Il reste donc scotché dans la première boucle sans jamais pouvoir passer à la seconde puisqu'il n'y a pas de mode de sortie.

Nota :
J'ai très bien compris ce que tu voulais faire dans ton petit test, mais je ne te donnerais pas la solution à celui-ci. sad
Si, je te la donne, tu n'apprendrais rien... clioeil


tu vas rire, mais c'est sous la douche que j'ai trouvé...   lol  lol
J'me repetais "while 1 do"... "while 1 do"... et là BINGO!!!! je me suis rappelé que ca se traduit par "tant que... faire"! Mais biensûr!! résultat, il reste bien bloqué à la première partie!

J'ai donc édité ce script:

-- test RPM IAS 
while 1 do
RPM = ipc.readLvar("L:Eng1_RPM")
IAS = ipc.readLvar("L:AirspeedIndicatedNeedle")
ipc.writeUW(0x66c0, RPM)
ipc.writeUB(0x66c2, IAS)
ipc.sleep(100)
end

arma  arma  arma  youpi! ça marche!!!!

Bon bah, let's go, y'en reste un paquet, et bien d'autres problèmes/mystères qui vont surgir!

Dernière modification par Aurelien (06-02-2019 12:29:42)

Déconnecté



#6 06-02-2019 11:05:44

Ptipilot

Douanier

Inscrit le : 21-10-2018
Messages : 63

Re : Offset, bit, etc

Aurelien a écrit :

Quelqu'un aurait-il une idée à ce petit souci? Je me demande s'il faut pas, à tout hasard, faire des scripts sur des Lua séparés?!

Alors là, je vais te répondre directement et te donner la solution!... lol

Dans ton cas, tu peux tout écrire dans le même script (1 seul fichier...).
L'intérêt d'engager plusieurs scripts est au niveau de ton Operating System. En effet, chaque script (fichier) sera lancé dans un thread différent au niveau de ton System. Il y a même des options d'Affinity mask dans FSUIPC pour gérer cela.


A+                  Alain
AMD Ryzen Threadripper 1950X (16 cores-32 threads) / 64 GB RAM / NVMe SSD 960 PRO : 512 & 1024 GB + 2 DD de 4 To / GTX 980 4 Mo / Windows 10 Enterprise / P3Dv4.4

Déconnecté



#7 06-02-2019 11:11:22

Ptipilot

Douanier

Inscrit le : 21-10-2018
Messages : 63

Re : Offset, bit, etc

Aurelien a écrit :

arma  arma  arma  youpi! ça marche!!!!

Ha... L'enthousiasme de la jeunesse!... arma

Je vieux con que je suis maintenant, va te dire de ne pas partir dans cette logique algorithmique...
Car même, si elle marche sur un ou deux items (ou même plus...) et qu'elle te donne satisfaction, elle n'est pas bonne car elle consomme trop de CPU.  sad

Trouve autre chose!... angel

clioeil   clioeil   clioeil

Dernière modification par Ptipilot (06-02-2019 11:22:11)


A+                  Alain
AMD Ryzen Threadripper 1950X (16 cores-32 threads) / 64 GB RAM / NVMe SSD 960 PRO : 512 & 1024 GB + 2 DD de 4 To / GTX 980 4 Mo / Windows 10 Enterprise / P3Dv4.4

Déconnecté



#8 06-02-2019 12:26:38

Aurelien

Technicien transit

Lieu : Grenoble
Inscrit le : 21-08-2018
Messages : 91

Re : Offset, bit, etc

L'intérêt d'engager plusieurs scripts est au niveau de ton Operating System. En effet, chaque script (fichier) sera lancé dans un thread différent au niveau de ton System. Il y a même des options d'Affinity mask dans FSUIPC pour gérer cela.


Hum, intéressant. Donc ca serait pas mal de scinder en plusieurs scripts, rangés un peu par «thème», ou «famille» de composants interfacés par exemple.

Cependant, il y a un truc qui me chagrine là dedans: j'ai remarqué que pour que le script fonctionne, il faut qu'il soit «appelé», sinon je ne recois pas de valeur.

Par exemple, avant le script des gauges, j'ai un script pour le switch de la batterie. Quand je lance le simu, si je démarre moteur allumé, que je ne touche pas a la batterie, alors je n'ai aucune valeur sur mes offset 66c0 et 66c2, je n'en reçoit qu'une fois le script «lancé» après avoir actionné la batterie.

Cela voudrait donc dire qu'il faut que je trouve une action différente/script, que je ferai forcément avant mise en route, pour que tous les script soient fonctionnels. Hum,... pas simple. A moins de mettre a chaque debut de script le switch de la batterie, mais j'suis pas sûr que ça se fasse!

Ou alors on peut peut-être simplement mettre un code au debut, qui servirait justement a lancer le script?un peu comme un void setup sous arduino?

Dernière modification par Aurelien (06-02-2019 12:28:25)

Déconnecté

#9 06-02-2019 12:42:46

HB-EBC

Électronicien

Lieu : Yerres
Inscrit le : 07-08-2018
Messages : 328
Site Web
Récompense : TroCrea

Re : Offset, bit, etc

Bonjour Aurelien,

juste une petite remarque dans ton script, transforme ton

ipc.writeUB(0x66c2, IAS)

En

ipc.writeUW(0x66c2, IAS)

car si ton IAS dépasse 255 ça ne marchera plus.

offset suivant possible le 0x66C4.


Inventer un avion n'est rien. Le construire est un début. Voler c'est tout.

Simulateur B737-800 / Prosim737
Hardware : CPFlight / PlugNFly / Fabrication maison

Déconnecté



#10 06-02-2019 13:49:14

Aurelien

Technicien transit

Lieu : Grenoble
Inscrit le : 21-08-2018
Messages : 91

Re : Offset, bit, etc

HB-EBC a écrit :

Bonjour Aurelien,

juste une petite remarque dans ton script, transforme ton

ipc.writeUB(0x66c2, IAS)

En

ipc.writeUW(0x66c2, IAS)

car si ton IAS dépasse 255 ça ne marchera plus.

offset suivant possible le 0x66C4.


Merci, mais comme c'est uniquement pour le cessna, je n'ai pas besoin de > 255. J'ai testé pour être sûr, mais sur le cessna A2A (et sûrement sur tout bon cessna  big_smile ) j'ai mis plein gaz, manche en bas, j'arrive difficilement à 200 et puis c'est le crash par overspeed, donc je peux garder cette valeur en 8 bit  smile

J'ai poursuivi avec la vitesse verticale, en bloquant le stepper à <= -2000 et >= 2000, ca fonctionne également! waah

Déconnecté



#11 06-02-2019 14:41:29

Ptipilot

Douanier

Inscrit le : 21-10-2018
Messages : 63

Re : Offset, bit, etc

Aurelien a écrit :

Hum, intéressant. Donc ca serait pas mal de scinder en plusieurs scripts, rangés un peu par «thème», ou «famille» de composants interfacés par exemple.

Pour l'instant, ce n'est pas ta priorité...
Je t'ai juste donné la réponse à ton interrogation, pour plus tard. clioeil


Aurelien a écrit :

Cependant, il y a un truc qui me chagrine là dedans: j'ai remarqué que pour que le script fonctionne, il faut qu'il soit «appelé», sinon je ne recois pas de valeur.

Par exemple, avant le script des gauges, j'ai un script pour le switch de la batterie. Quand je lance le simu, si je démarre moteur allumé, que je ne touche pas a la batterie, alors je n'ai aucune valeur sur mes offset 66c0 et 66c2, je n'en reçoit qu'une fois le script «lancé» après avoir actionné la batterie.

Cela voudrait donc dire qu'il faut que je trouve une action différente/script, que je ferai forcément avant mise en route, pour que tous les script soient fonctionnels. Hum,... pas simple. A moins de mettre a chaque debut de script le switch de la batterie, mais j'suis pas sûr que ça se fasse!

Ou alors on peut peut-être simplement mettre un code au debut, qui servirait justement a lancer le script?un peu comme un void setup sous arduino?

Alors, pour te faire gagner du temps et t'éviter de partir sur des fausses pistes, il y a deux choses d'évoqué dans ton texte.
- Premièrement, le lancement et éventuellement le déclenchement de ton script (de tout ou d'une partie...),
- Deuxièmement, le réveil d'un périphérique.

Concernant le deuxième point, laisse tomber car il ne dépends pas de toi. Là, c'est du domaine de la liaison, généralement USB et de sa couche HID. clioeil

Pour ton "test", tes deux items sont amplement suffisant pour trouver une écriture plus sioux de ton script LUA.

Un indice pour te faire gagner du temps...
Regarde bien ta boite à outils de fonction!... clioeil

Dernière modification par Ptipilot (06-02-2019 14:44:24)


A+                  Alain
AMD Ryzen Threadripper 1950X (16 cores-32 threads) / 64 GB RAM / NVMe SSD 960 PRO : 512 & 1024 GB + 2 DD de 4 To / GTX 980 4 Mo / Windows 10 Enterprise / P3Dv4.4

Déconnecté

#12 06-02-2019 20:56:01

Aurelien

Technicien transit

Lieu : Grenoble
Inscrit le : 21-08-2018
Messages : 91

Re : Offset, bit, etc

Merci Alain pour ton aide didactique! Je regarde ça vendredi et te redis!  wink

Déconnecté

#13 09-02-2019 10:35:14

Aurelien

Technicien transit

Lieu : Grenoble
Inscrit le : 21-08-2018
Messages : 91

Re : Offset, bit, etc

Bonjour!  smile

Bon j'avoue que j'ai fouiné un peu dans le fichier de FSUIPC Lua librairie, et j'avoue également que je pose des questions sur le forum FSUIPC. Et à ce sujet, Pete Dowson me suggère d'utiliser la fonction event.Lvar() à la place de ipc.readLvar(), qui permettrait d'avoir un script qui se "lance" seul, sans avoir à "l'appeler" en basculant un switch pour qu'il s'active. Peut être cela dont du fais allusion Alain?
Malheureusement, j'ai bien essayé avec la fonction event.Lvar, en remplacant les ipc.readLvar dans le script mais ca ne fonctionne pas. Je ne sais pas dans quel genre de boucle je dois mettre cet "event.Lvar"  etone
J'ai essayé dans le "while 1 do ... end", ca ne marche pas, j'ai essayé sans rien, idem

Si je comprend bien la doc FSUIPC, il semblerait que ce doit être dans une fonction déclarée, alors j'ai pensé que ce script serait le bon, mais toujours pas. Aucune valeur reçue  mur

function(Eng1_RPM, value)
event.Lvar("L:Eng1_RPM", 100, Eng1_RPM)
ipc.writeUW(0x66c0, Eng1_RPM)
end

Dernière modification par Aurelien (09-02-2019 10:58:30)

Déconnecté



#14 09-02-2019 10:56:17

Ptipilot

Douanier

Inscrit le : 21-10-2018
Messages : 63

Re : Offset, bit, etc

Aurelien a écrit :

Bonjour!  smile

Bon j'avoue que j'ai fouiné un peu dans le fichier de FSUIPC Lua librairie, et j'avoue également que je pose des questions sur le forum FSUIPC. Et à ce sujet, Pete Dowson me suggère d'utiliser la fonction event.Lvar() à la place de ipc.readLvar(), qui permettrait d'avoir un script qui se "lance" seul, sans avoir à "l'appeler" en basculant un switch pour qu'il s'active. Peut être cela dont du fais allusion Alain?

Dommage que tu n'es pas trouvé cette solution tout seul, en cherchant et analysant le contenu de ta boite à outils comme je te l'avais suggéré... sad

Merder et se faire chier font partie de l'apprentissage d'un langage informatique. Ce n'est pas en donnant la solution à quelqu'un qu'on le fait avancer. smile

Là, tu as eu directement la bonne solution qui est de passer par un "Event"...
Mais, tu n'as pas appris grand chose au final!... tongue

Dernière modification par Ptipilot (09-02-2019 11:03:11)


A+                  Alain
AMD Ryzen Threadripper 1950X (16 cores-32 threads) / 64 GB RAM / NVMe SSD 960 PRO : 512 & 1024 GB + 2 DD de 4 To / GTX 980 4 Mo / Windows 10 Enterprise / P3Dv4.4

Déconnecté



#15 09-02-2019 11:07:10

Aurelien

Technicien transit

Lieu : Grenoble
Inscrit le : 21-08-2018
Messages : 91

Re : Offset, bit, etc

Ptipilot a écrit :
Aurelien a écrit :

Bonjour!  smile

Bon j'avoue que j'ai fouiné un peu dans le fichier de FSUIPC Lua librairie, et j'avoue également que je pose des questions sur le forum FSUIPC. Et à ce sujet, Pete Dowson me suggère d'utiliser la fonction event.Lvar() à la place de ipc.readLvar(), qui permettrait d'avoir un script qui se "lance" seul, sans avoir à "l'appeler" en basculant un switch pour qu'il s'active. Peut être cela dont du fais allusion Alain?

Dommage que tu n'es pas trouvé cette solution tout seul, en cherchant et analysant le contenu de ta boite à outils comme je te l'avais suggéré... sad

Merder et merdouiller font partie de l'apprentissage d'un langage informatique. Ce n'est pas en donnant la solution à quelqu'un qu'on le fait avancer. smile

Là, tu as eu directement la bonne solution qui est de passer par un "Event"...
Mais, tu n'as pas appris grand chose au final!... tongue

Ah bah pour merder et merdouiller, je le fais ne t'inquiètes pas  tongue  Et même si j'ai un coup de pouce ici et là, je cherche avant tout à comprendre le pourquoi du comment  arma

Hier j'ai passé bien 4 heures à tenter d'interfacer le turn coordinator avec les Lvars, sans succès... Et bien le soir c'était chose faite à force de chercher  wink

Déconnecté

#16 09-02-2019 11:48:40

Aurelien

Technicien transit

Lieu : Grenoble
Inscrit le : 21-08-2018
Messages : 91

Re : Offset, bit, etc

Trouvé! en merdant et merdouillant  clioeil

Plus besoin de "lancer" le script, les Lvars sont dorénavant "surveillées"  tongue

Déconnecté

Pied de page des forums

Propulsé par FluxBB
Haut