LVARS: Interfacer des avions add-ons: C'EST POSSIBLE !

FSUIPC / Emulateurs de claviers & souris / IOCP, etc...

Re: Interfacer des avions add-ons: C'EST POSSIBLE !!!!

Messagede Honoresia » Sam 17 Aoû 2013 14:11

Cool, alors dans la doc des offsets FSUIPC je prend tout ce qui est marqué "Free" ou "Reserved"... Entendu je vais continuer la progression du code donc.

Voila un tableau avec les correspondances des commandes ipc.write (script LUA) et les data types de panel builder avec la taille des données. Merci de me corriger en cas d'erreur (valeurs oranges à confirmer), en espérant que çà serve pour d'autres...

Image
Honoresia
 
Messages: 23
Inscription: 6/08/13

Re: Interfacer des avions add-ons: C'EST POSSIBLE !!!!

Messagede Honoresia » Dim 18 Aoû 2013 11:53

A propos de Panel Builder !

Je m'oriente vers cette solution - pour le moment - car elle est très peu chère et permet de programmer un panel rapidement. Lorsque l'on fait son premier cockpit ça motive les troupes pour avoir une instrumentation volable rapidement chouettedoights ... Bien sûr il y a des logiciels qui présentent des 'gauges' plus abouties graphiquement.

Bon je m'arrache la tête pour mettre en place mon script LUA et j'ai beaucoup beaucoup de mal à afficher des valeurs correctes avec les vibrations. J'en ai tellement marre que j'ai bien eu envie d'envoyer tout ch... furieuxfumée furieuxfumée furieuxfumée

J'ai pourtant de solides bases en informatique/programmation, et même si une erreur arrive toujours, je tourne en rond et en rond et je rage de ne pas y arriver ! ! !

Je viens enfin de trouver le coupable : simPlugins FSUIPC.exe qui assure la connection entre FS et Panel Builder.

Ce petit blagueur ne s'arrête parfois pas correctement. La fenêtre se ferme mais il reste dans les processus !

Au résultat, lorsque l'on a fait une modification et que l'on relance le module dans la foulée, il y a alors plusieurs processus, chacun renvoyant les valeurs selon l'état du fichier de configuration au moment ou ils ont été ouverts ! Vous me suivez ? On a alors plusieurs valeurs différentes envoyées en même temps pour les jauges, et donc des affichages totalement erratiques.

Donc pour panel builder, à chaque modification, surveillez les processus et terminez les résistants à la main !

Bon dimanche, m'en vais prendre une p'tite mousse pour cette victoire somme toute très mineure, et ce contretemps qui m'a pourri mon week-end (beh oui quand on sèche sur une connerie on s'énerve vite car monsieur l'égo n'est pas satisfait...)
Honoresia
 
Messages: 23
Inscription: 6/08/13

Re: Interfacer des avions add-ons: C'EST POSSIBLE !!!!

Messagede arcc » Jeu 2 Jan 2014 20:21

Bonsoir

Et tout d'abord, meilleurs voeux à tous

J'ai suivi attentivement cette discussion, car c'est tout à fait ce que je recherche à faire.
Je me construit un cockpit orienté Twin Otter.

Pour ce qui est des switchs et autres bouton poussoir, pas de soucis.
Le twin otter est "scripté" pour LINDA et donc pour manoeuvrer les interupteurs des variables inconnues par FSX, pas de soucis. Pour ceux connu,

j'utiliserai
SIOC. Par contre je butte pour les sorties du type VOYANT;
Si j'ai bien suivi, il est possible de Lire l'etat d'une variable avec un script LINDA
De lui dédier une valeur d'Offset (Fsuipc) puis avec sioc de recuperer cette valeur vers une Led.

Je m'explique

Sur l'annonciateur du Twin Otter j'ai entre autre un voyant qui s'allume si une porte exterieure est ouverte: "DOORS UNLOCKED"
La variable pour cet affichage est L:Twot_Ann_Doors_unl = 0.000000 et = 1.0000 pour le voyant allumé.

toujours en suivant la discussion (mais la je ne suis pas sur du tout, je n'ai jamais fais de script en LUA)


-- LECTURE DES LVARS
ann_doors = ipc.readLvar("L:Twot_Ann_Doors_unl")
-- LECTURE DES OFFSETS

-- ECRITURE DANS DES OFFSETS LIBRES
ipc.writeSD(0X66C8, ann_doors)

-- TEMPS D'ATTENTE (RAFRAICHISSEMENT AVANT NOUVELLE BOUCLE)
ipc.sleep(100)

end


A partir de maintenant , je cale.
Je suppose que ce petit script, je l'ecris avec le bloc note" ?
par contre je ne sais pas ou le ranger ni sous quel extension (.lua je suppoose)

Comment fsuipc fait il pour le lire, je dois renseigner le fichier fsuipc.ini ?

J'ai bien essayé de comprendre qq choses dans la doc de Linda et Fsuipc, mais j'ai un tel niveau en Anglais, que je ne comprend absolument rien.

Merci pour votre aide.

Christian
Un ancien sous-marinier qui a pris de la hauteur.
Avatar de l’utilisateur
arcc
 
Messages: 715
Inscription: 16/12/13
Localisation: La ou fini la terre (Finistere)

Re: Interfacer des avions add-ons: C'EST POSSIBLE !!!!

Messagede stevelep » Ven 3 Jan 2014 13:06

C'est expliqué dans le 3ème message de ce post

Redit moi si t'as pas compris.

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

Re: Interfacer des avions add-ons: C'EST POSSIBLE !!!!

Messagede arcc » Ven 3 Jan 2014 19:28

Merci Bob

Je suivais bien ce troisième message, mais avec ma tablette je ne voyais pas que le script était tronqué (donc il en manquait)

Et lancer le script dans FSUIPC en le liant par exemple au switch batterie ou autre.

Par contre je ne comprend pas comment le lier dans FSUIPC.

MISE A JOUR (depuis ce matin)

Je viens de réussir à allumer une led (output de SIOC) lorsque j'ouvre une porte de mon avion avec ce script.
Code: Tout sélectionner
while 1 do

-- Lecture des LVars
ann_doors = ipc.readLvar("L:Twot_Ann_Doors_unl")


-- Ecriture dans Offsets Libres
ipc.writeSD(0X66C8, ann_doors)

ipc.sleep(68)

end


Grace à toi, j'ai un peu mieux compris mes erreurs.
Tout d'abord "while 1 do" que je ne mettais pas (je sais toujours pas ce que ca veux dire)
J'ai, dans fsuipc, rajouter quand je relâche le bouton du "parking brake" (pour l'instant un bouton du throttle Saitek)
le fichier en .lua que je viens de créer. C'est ca lier...

En tout cas, cela m'ouvre des perspectives et je vais pouvoir, maintenant que l'exemple fonctionne, approfondir le sujet.

Encore merci

Christian
Un ancien sous-marinier qui a pris de la hauteur.
Avatar de l’utilisateur
arcc
 
Messages: 715
Inscription: 16/12/13
Localisation: La ou fini la terre (Finistere)

Re: Interfacer des avions add-ons: C'EST POSSIBLE !!!!

Messagede C6_Pat » Dim 19 Jan 2014 14:58

Hello les pilotes !

Je cherche à corriger les jauges du P47 A2A, et a en créer une autre qui n'existe pas dans Panel Builder car c'est le soft que j'utilise pour mes jauges.
En outre j'aimerai intégrer les valeurs de vibrations des aiguilles.
A corriger, MANIFOLD PRESSURE qui est systématiquement sous les valeurs du cockpit A2A ; DUAL FUEL qui ne fonctionne pas. :
Image

Ensuite la jauge TURBO est à créer, facultativement la jauge DUAL FUEL du P47, je pense que les gars de Simplugins devraient pouvoir me les faire à condition que je leur apporte le code (ilsne gèrent pas A2A)
Image

Je m'arrache les cheveux depuis un moment dèjà pour simplement obtenir dans un premier temps le résultat recherché sur la jauge MANIFOLD PRESSURE (MAP) juste pour la valeur de course d'aiguille sans les tremblements.
Le tout après avoir bien sur décortiqué ce post et d'autres.

Voici la manip :
- dans simPluginsFSUIPC.ini je repère :
[EngMAP]
MAP0 = ushort,08C0,{0} / 1024
MAP1 = ushort,0958,{0} / 1024
MAP2 = ushort,09F0,{0} / 1024
MAP3 = ushort,0A88,{0} / 1024

J'ai donc ceci dans EngMAP, l'offset 08C0 correspond bien au point MAP0 = avion monomoteur.
Image

C'est confirmé dans FS Interrogate qui indique également qu'il s'agit d'une valeur 16 bit a nommer donc UW sur Lua.
Image

- dans les LVars du P47, c'est là que ça se complique, j'ai plusieurs lignes concernant la jauge MAP :
436522 L:ManifoldPressure1_real = 1.000000
436522 L:MP1_Shake = 0.057626
436537 L:ManifoldPressure1Normal = -6.758212
436537 L:ManifoldPressure1_Total = -9.129841
436537 L:ManifoldPressure1_Goal = 1.000000
436537 L:ManifoldPressure1_Goal_OLD = -4.152393
436537 L:ManifoldPressure1_Difference = 0.000000
436537 L:ManifoldPressure1 = 1.057626

A cela se rajoutent les items correspondant à la jauge TURBO :
436537 L:ManifoldPressure1SuperCharged = -2.371629
436537 L:ManifoldPressure1PreTurbo = -9.129841
436537 L:ManifoldPressure1Turbo = 0.000000

J'ai un fichier .lua dans FSX/Modules qui correspond au boulot fait sur les voyants (merci Bob), ce fichier est relié à une commande sur le tableau de bord et est bien actif (les voyants fonctionnent normalement) :

while 1 do

-- Lecture des LVars
lowfuel = ipc.readLvar("L:FuelLow1Lamp")
lowpress = ipc.readLvar("L:FuelPressLow1Lamp")
rgear = ipc.readLvar("L:LGearTransLamp")
ggear = ipc.readLvar("L:LGearSafeLamp")
oversp = ipc.readLvar("L:TurboOverspeed1Lamp")
oxymask = ipc.readLvar("L:OxyMaskOn")

-- Ecriture dans Offsets Libres
ipc.writeSB(0x66c0, lowfuel)
ipc.writeSB(0x66c1, lowpress)
ipc.writeSB(0x66c2, rgear)
ipc.writeSB(0x66c3, ggear)
ipc.writeSB(0x66c4, oversp)
ipc.writeSB(0x66c5, oxymask)

ipc.sleep(68)

end

En corrigeant le fichier comme suit j'obtient un résultat erratique de l'aiguille, comme prévu lorsque l'on renvoie la Lvar vers l'offset défini par Panel builder :

while 1 do

-- Lecture des LVars
lowfuel = ipc.readLvar("L:FuelLow1Lamp")
lowpress = ipc.readLvar("L:FuelPressLow1Lamp")
rgear = ipc.readLvar("L:LGearTransLamp")
ggear = ipc.readLvar("L:LGearSafeLamp")
oversp = ipc.readLvar("L:TurboOverspeed1Lamp")
oxymask = ipc.readLvar("L:OxyMaskOn")
engmap = ipc.readLvar("L:ManifoldPressure1")

-- Ecriture dans Offsets Libres
ipc.writeSB(0x66c0, lowfuel)
ipc.writeSB(0x66c1, lowpress)
ipc.writeSB(0x66c2, rgear)
ipc.writeSB(0x66c3, ggear)
ipc.writeSB(0x66c4, oversp)
ipc.writeSB(0x66c5, oxymask)
ipc.writeUW(0x08C0, engmap)

ipc.sleep(68)

end

La réaction s’arrête là, aucune des autres manip réalisées n'a de résultat, la jauge reste immobile.

QUESTIONS :
- comment reconnaître les Lvars à utiliser pour la jauge? dans le même ordre d'idée comment reconnaître les Lvars liés au tremblement de l'aiguille ?
- puis je à la suite utiliser les offsets 0x66c6....7....8 etc sachant que je ne les voit pas dans FS Interrogate.
- FS Interrogate : les offset contenant des 0 ou rien du tout sont ils donc identifiables comme offsets libres ?
- cette jauge contient deux offsets, l'ecriture suivante serait elle correcte ? , (sachant qu'elle ne fonctionne pas) :

while 1 do

-- Lecture des LVars
lowfuel = ipc.readLvar("L:FuelLow1Lamp")
lowpress = ipc.readLvar("L:FuelPressLow1Lamp")
rgear = ipc.readLvar("L:LGearTransLamp")
ggear = ipc.readLvar("L:LGearSafeLamp")
oversp = ipc.readLvar("L:TurboOverspeed1Lamp")
oxymask = ipc.readLvar("L:OxyMaskOn")
engmap = ipc.readLvar("L:ManifoldPressure1")

-- Ecriture dans Offsets Libres
ipc.writeSB(0x66c0, lowfuel)
ipc.writeSB(0x66c1, lowpress)
ipc.writeSB(0x66c2, rgear)
ipc.writeSB(0x66c3, ggear)
ipc.writeSB(0x66c4, oversp)
ipc.writeSB(0x66c5, oxymask)
ipc.writeUW(0x66c6, engmap)
ipc.writeUW(0x66c7, engmap)

ipc.sleep(68)

end

Merci pour votre aide les gars, ma femme me préfère avec des cheveux sourirebis
" Tout arrive à l'homme qui sait attendre "
.....enfin pas trop longtemps quand même.....
Mon pit' P47 Razorback https://www.checksix-forums.com/viewtopic.php?f=286&t=156962
Avatar de l’utilisateur
C6_Pat
 
Messages: 834
Inscription: 20/12/11
Localisation: Devant l'nordinateur en Alsace

Re: Interfacer des avions add-ons: C'EST POSSIBLE !!!!

Messagede C6_Pat » Jeu 23 Jan 2014 00:07

Personne n'a une toute petite idée ? grandsoleil
" Tout arrive à l'homme qui sait attendre "
.....enfin pas trop longtemps quand même.....
Mon pit' P47 Razorback https://www.checksix-forums.com/viewtopic.php?f=286&t=156962
Avatar de l’utilisateur
C6_Pat
 
Messages: 834
Inscription: 20/12/11
Localisation: Devant l'nordinateur en Alsace

Re: Interfacer des avions add-ons: C'EST POSSIBLE !!!!

Messagede stevelep » Jeu 23 Jan 2014 01:29

- comment reconnaître les Lvars à utiliser pour la jauge? dans le même ordre d'idée comment reconnaître les Lvars liés au tremblement de l'aiguille ?

Il faut envoyer les données dans un offset FSUIPC puis monitorer les valeurs soit avec FSInterrogate
ou mieux avec un programme SIOC (une seule ligne la variable qui lit l'offset) et voir si ca correspond
aux variationx sur le tdb

- puis je à la suite utiliser les offsets 0x66c6....7....8 etc sachant que je ne les voit pas dans FS Interrogate.

Il faut utiliser ces offsets libres 66c..., car on est sûr qu'il sont libres.
Mais attention

ipc.writeUW(0x66c6, engmap)
ipc.writeUW(0x66c7, engmap)

UW = unsigned Word (regarde plus haut dans ce post) Word = 16bits = longueur 2
donc tu doit décaler le n° d'offset héxadécimal de la variable suivante pour laisser une place de 2 offsets

donc 66c6 puis 66c8

La variable prend 2 places


- FS Interrogate : les offset contenant des 0 ou rien du tout sont ils donc identifiables comme offsets libres ?
- cette jauge contient deux offsets, l'ecriture suivante serait elle correcte ? , (sachant qu'elle ne fonctionne pas)
:

Non seuls les offset réservé 66cX etc sont assurément libres. Utiliser des autres pourrait ne pas fonctionner
si par exemples ils sont bloqués par FS à zéro.

Avant de programmer ta gauge Simplugin tu dois monitorer la valeur de ton offset pour voir
si les données sont correctes et surtout si elles sont transmises

Var 0001, name test, Link FSUIPC_IN, Offset $66c6, Length 2

Tu utilises la console de SIOC pour voir les valeurs en temps réel avec la fenetre du panel FS à coté pour comparer

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

Re: Interfacer des avions add-ons: C'EST POSSIBLE !!!!

Messagede C6_Pat » Ven 24 Jan 2014 00:22

Bob toujours sur le pont hein applaublanc

Je me met au boulot ce WE et je mettrai le post à jour si c'est solutionné.

Merci Bob.
" Tout arrive à l'homme qui sait attendre "
.....enfin pas trop longtemps quand même.....
Mon pit' P47 Razorback https://www.checksix-forums.com/viewtopic.php?f=286&t=156962
Avatar de l’utilisateur
C6_Pat
 
Messages: 834
Inscription: 20/12/11
Localisation: Devant l'nordinateur en Alsace

Re: Interfacer des avions add-ons: C'EST POSSIBLE !!!!

Messagede stevelep » Ven 24 Jan 2014 00:45

Si tu hésites entre plusieurs variables envoie les toutes sur des offsets
et monitore les toutes dans SIOC console, pour trouver la bonne.

autre remarque importante, pour une bonne fluidité donc pour voir les tremblements des
aiguille il faut baisser la valeur du "Simplugins FSUIPC Update Interval" à 100ms ou moins
dans Network Setting du Simplugins FSX.

Sinon la réaction des gauges sera trop lente et tu verras pas les oscillations ...

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

PrécédenteSuivante

Retourner vers Liaisons entreFS et les autres logiciels





Qui est en ligne

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