Page 1 sur 1

Publié : sam. août 28, 2004 11:43 pm
par smerlo
Bonjour à tous,

pour des raisons professionnelles je commence à programmer en Visual basic (je sais, C pas ce qu'il y a de mieux mais je commence)
Je suis équipé Goflight, qui fonctionne tres bien sur FS et puis c'est tout...
J'aimerais faire en sorte que mes modules agissent sur Falcon.

J'ai récupéré le SDK Goflight qui donne toutes les ficelles pour faire fonctionner les modules, et franchement ça n'a pas l'air compliqué.
Maintenant il ne me reste plus qu' à échanger les données avec Falcon, et là ...

QQun connait il les solutions qui existent? le top ce serait de trouver une solution qui fonctionne avec toutes les versions de Falcon.

Merci de votre aide.

Pour info je commencerai par les modules GF-LGT (Train, volets et trim), GF-P8 (8 boutons push) et GF-T8 (8 boutons toggle)

Publié : dim. août 29, 2004 12:49 am
par smerlo
J'ai récupéré sur ce post :
http://forums.frugalsworld.com/vbb/show ... hp?t=72353

il y a 2 outils (avec les sources, merci aux auteurs) qui permettent de lire des éléments de F4 BMS2.0

cela ne m'aidera pas beaucoup dans le sens ou je desire modifier les valeurs de falcon:
Par exemple, lorsque je remonte le train, je positionne la variable falcon TRAIN sur Haut.

En y reflechissant, je me complique peut-être un peu la tâche, peut être qu'un simple envoi de la touche G suffirait...

Publié : dim. août 29, 2004 2:16 am
par smerlo
Bon, j'arrive à envoyer un caractère "g" lorsque je change la position de mon levier Goflight.
Lorsque j'ouvre une autre appli, par exemple le bloc notes ou word, je vois bien des "g" qui s'y inscrivent. ... C'est bon signe !
Par contre, chose bizarre, falcon ne reagit pas.
J'ai ajouté l'éclairage des diodes du train sur le module Goflight pour être sûr que ça marche bien, elles changent bien de couleur (rouge/vert) en fonction de ma position... donc mon programme fonctionne bien en tâche de fond, ce que word m'avait déjà confirmé.

J'ai donc la nette impression que Falcon4 ne gère pas les caractères qui lui arrivent, mais certainement des interruptions clavier. Ca aurait été trop simple ! J'aurais été fier de pouvoir vous mettre dès à présent un train d'atterrissage opérationnel !

Bon, si qqun a des infos sur la gestion clavier de Falcon, je me debrouillerai pour integrer ça au programme. Je pense que ce type de problème a du être rencontré par les concepteurs de cartes électroniques ou autres Xkeys...

Merci d'avance,

PS : j'ai pas l'impression que ça interresse grand monde ! Je suis peut-être un peu pressé !

Publié : dim. août 29, 2004 11:01 am
par Red Dog
Non, non, c'est très intéressant.
Mais F4 gère parfaitement les touches clavier puisque ca fonctionne avec les Xkeys.
On programme simplement G pour le train.

As tu vérifié ton keystroke.
Et aussi, depuis le BMS, il y a maintenant des touches plus spécifiques pour les callbacks. Ce fichier est fait principalement pour les utilisateurs de cockpits de sorte qu'il n'y ait pas de déphasages entre la position des switchs et F4.
Par exemple, lorsque tu lance F4 et que ton levier de train est vers le haut. Si tu le passe vers le bas tu rentre ton train)...

Jettes y un oeil

Mais bravo pour l'initiative Goflight :)
Seul souci, c'est que peu de gars ont ces modules puisque pour le moment, ils ne sont pas compatibles F4

Publié : dim. août 29, 2004 10:07 pm
par smerlo
Salut Red Dog,

Par Keystroke, tu entends la config clavier dans F4 ?

En ce qui concerne le déphasage entre la position du train et la position de mon levier GoFlight, c'est resolu puisque j'ai accès avec precision à l'état du train et dans F4, et sur mon module GoFlight, après ce n'est plus que de la programmation pour savoir si je dois envoyer la touche G ou pas.

J'ai fait une tentative en utilisant l'API clavier directement plutôt que les fonctions toutes faites de visual basic : le resultat est le même.

J'ai investigué sur X-Key, à priori ils utilisent la connectique clavier pour envoyer les infos vers le PC, donc normal que ça marche.

Je vais orienter mes recherches vers DirectX ou ce genre de truc. J'ai pu constater que le mode graphique des menus et le mode graphique en cours de jeu est different (ex: lorsque je suis dans les menus, ma souris peut se deplacer sur mes 2 ecrans, par contre en jeu, je bute sur les bords de l'ecran dans lequel se deroule le jeu)

Pour info, j'ai un peu avancé, j'arrive à lire les valeurs F4 grace a un module Visual Basic developpé par Eagle 9 (ceux qui font F4Glass) mais à priori ça me limitrai à BMS2.0 (preuve qu'ils vont nous sortir un F4Glass compatible BMS2.0 d'ailleurs)

Pour l'instant je me concentre sur le module GF-LGT, mon programme envoi un "g" qui ne fonctionne pas si le levier est dans une position compatible avec la necessité de "bouger" le train et les diodes du modules s'allument en fonction des voyants du cockpit de F4.

Si j'arrive à envoyé ce sacré "g", tout est gagné ...

Pour info les modules géré par le SDK (Software Developpment Kit - ça permet de programmer les modules dans les normes et standards du constructeur) de Goflight sont:
GF-LGT : train, trim et volets
GF-P8 : 8 bouttons PUSH avec LEDs
GF-T8 : 8 boutons Toggle avec LEDS
GF-45 : 2 rotatifs avec 2 afficheurs (sur lesquels je peux affciher 4 caracteres et 5 chiffres)
GF166 : Module COM ou NAV complet (2 rotatifs, 3 boutons PUSH, 2 afficheurs freq en cours et stand by)

Je suis équipé du pilote automatique GF-MCP mais le SDK ne le gère pas.

Je compte me rapprocher de Goflight pour pouvoir gérer les modules non pris en compte et de Eagle9 et BMS pour pouvoir envoyer des actions à F4.

Publié : dim. août 29, 2004 11:02 pm
par smerlo
pour info les mails vers BMS et Eagle9 sont partis

Publié : dim. sept. 05, 2004 11:50 am
par smerlo
Point mort sur le developpement du pilote.
Je suis confronté à un gros problème: Falcon4 n'utilise pas les entrées clavier standards de Windows (on s'en serait douté !)
Il utilise (à priori) DirectX via DirectInput qui est beaucoup plus proche du matériel.

Seul souci : lorsque l'on programme en DirectX il y a les devices d'entrées (clavier, souris, joystick..) et les devices de sorties (ecran, son..).
Et bien sur il n'est pas possible d'envoyer (send) des données de sorties vers un device d'entrée !?!?

J'ai pas mal dialogué la dessus sur vbfrance (site dédié à la programmation) et à priori c'est bloqué !

L'unique chance est de pouvoir agir sur Falcon4 en changeant directement sur Falcon l'état du train ....
Sachant que ni BMS, ni Eagle9 ne m'ont répondu à ce jour c'est mal parti...
Je vais tenté l'équipe SuperPak...

Si vous connaissez un programmeur qui peut m'aider... Voici le post envoyé sur vbfrance:
http://www.vbfrance.com/forum.v2.aspx?ID=291512

A bientôt, je vous tiens au courant.

Publié : mer. sept. 15, 2004 7:52 pm
par smerlo
Dernieres nouvelles:

Hi Erwin,

Thx a lot for your answering, no matter if it is late, I know you've got many things to do. No problem, take time.
The SendInput seems to be the right choice, I got other same answers.
The problem is that, in DirectX programming, the keyboard is an input device. The SendInput command seems to only work with output devices.
Do you have links that explain Input and Output DirectX programming ?

If you talk about the user32.dll API, I tested, it doesn't work.

By the way, I know you're working on F4glass upgrade for BMS2.0. Is the work progressing OK ?

Thx again for all,

Stephane

-----Message d'origine-----
De : Erwin Neyt [@Eagle9Systems.com]
Envoyé : mercredi 15 septembre 2004 17:08
À : Stéphane Merlo
Objet : RE: Searching for infos to send keys to F4 for Goflight driver


Sorry I respond a bit late.

The problem is in using SendKey, which does not work with DirectX applications. Use SendInput instead to write directly to the keyboard buffer.

Hope that helps,

Erwin

Publié : jeu. sept. 16, 2004 7:29 pm
par colimateur
pourrai tu traduires ou du moins résumé en français SVP car ta recherche est tres tres interressante. merci

Publié : dim. sept. 19, 2004 9:59 pm
par smerlo
Je traduis ma demande: ;)

Je programme en VB, pour l'instant le seul moyen qu'il m'a été donné de tester pour envoyer des appuis de touches est:
- soit d'utilisaer la commande sendkey incluse dans VB
- soit de faire appel à user32.dll par la fonction:
Private Declare Function SendInput Lib "user32.dll" (ByVal nInputs As Long, pInputs As GENERALINPUT, ByVal cbSize As Long) As Long

Or dans les deux cas, j'arrive bien à envoyer une touche ("g" pour les trains) mais Falcon4 refuse de la prendre en compte. Je sais que mon programme marche car Word ou Notepad m'affiche bien un "g" lorsque j'actionne mon train sur le module Goflight.

J'ai envoyé un post sur vbfrance, et là j'ai eu une réponse très interressante qui m'orientais vers DirectX.
Je me suis donc mis a essayé de comprendre DirectX et là blocage : le clavier est considéré comme péripherique d'entrée, et en DirectX (sous VB6 en tout cas) il est impossible d'envoyer des données à un périphérique de sortie.

C'est la raison pour laquelle j'ai tenté de contacter des specialistes de la programmation pour Falcon.
Pour info Erwin m'a renvoyé un exemple utilisant la technique du user32.dll, il n'a jamais travaillé sur cette partie là, il n'était donc pas sûr.

Aujourd'hui, mon module se contente d'afficher les LEDs en fonction de la position du train dans Falcon4.

Si tu as des idées colimateur, n'hesite pas.

Publié : lun. sept. 20, 2004 1:11 am
par fredffw03
slt smerlo,
effectivement c'est parfois les chose les plus simples qui posent pas mal de pb, en programmation !!
je pensai que la commande sendkey de VB serait suffisante, mais puisque tu dis que ça marche pas ...
J'ai regardé un peu comment t'aider dans ta démarche et essai d'adapter ce bout de code que j'ai récupéré. Il permet de passer par le presse papier avant de faire l'envoie au syst !!
Public Declare Sub Sleep Lib "kernel32" (ByVal dwTime As Long)

' Sleep sert pour la synchronisation de la macro et du programme
--------------------------------------------------------------------------------------------
Sub ExeTS()

Dim MyAppID
MyAppID = Shell("C:\monprogramme.exe", vbNormalFocus)

Set MyDataObject = New DataObject 'création d'un DataObject

MyDataObject.SetText Chr(13) 'insertion de la touche "Entrée" dans le DataObject
MyDataObject.PutInClipboard 'transvasement du DataObject au Presse Papier
SendKeys "% eo", True 'collage du contenue du presse papier
Sleep 1000 'attente d'execution du programme

MyDataObject.SetText ("aaaaa") 'saisie du mot de passe
MyDataObject.PutInClipboard
SendKeys Chr(8), True 'effacement des caractères présents
SendKeys "% eo", True
Sleep 1000

End Sub

C'est du récup de vb france, mais c'est quand même plus facile à faire en C !!
Le mieux serait peut être de faire l'algo en C, et de créer une dll que tu appeles à partir de ton code en VB
sinon petite précision avant de ce lancer dans des bricolages de l'espace, est ce que tu es sur que tu as placé ton application falcon active avant de lancer la séquence de touche à savoir la commande "appactivate" de VB
Fred :angry:

Publié : mar. sept. 21, 2004 2:27 pm
par smerlo
OK merci,
en fait tu fais un sendkey vers l'appli que tu as selectionné par la ligne
MyAppID = Shell("C:\monprogramme.exe", vbNormalFocus)

Je peut essayer en effet de mettre en avant plan f4bms.exe

Je programme aussi en VB, de toute façon pour gerer les APIs des DLLs que ce soit en C ou en VB, ça fait la même chose.

Je teste tout ça et te tiens au courant.

Pour info, j'ai récupéré un logiciel qui fait des images de la mémoire qu'utilise un executable quelconque et qui permet de faire des comparaisons. Qui sait, je vais peut être trouver le fameux octet qui me permettra d'activer et desactiver le train.
Le probleme est que c'est tres long vu la RAM que bouffe F4 !

Merci encore

Publié : ven. sept. 24, 2004 1:17 am
par smerlo
Mon dernier post sur vbfrance... Ca brule !

http://www.vbfrance.com/forum.v2.aspx?ID=302571

Je crois que si la je n'y arrive pas, je jetterai l'eponge.... :(

Publié : sam. nov. 13, 2004 2:08 am
par Miles teg
Tu as essayé developpez.com?

http://www.developpez.net/forums/

Ils m'ont souvent bien aidé pour debugger mon VB pour access (recordset à rallonge...).

Publié : sam. nov. 13, 2004 8:20 pm
par smerlo
Merci du tuyau, je m'en occupe de suite.

Publié : dim. nov. 14, 2004 7:51 pm
par smerlo
Le nouveau post chez developpez.com:

http://www.developpez.net/forums/viewtopic.php?t=263365

Publié : lun. nov. 15, 2004 12:45 am
par fredffw03
Je sais pas si ça peut t'aider, mais j'ai trouvé quelques liens qui parlent de ça:
http://www.delphifr.com/code.aspx?ID=11858
http://www.vbfrance.com/forum.v2.aspx?ID=29232
http://www.vbfrance.com/forum.v2.aspx?ID=22980
http://vbfrance.com/listecodes.aspx?quelpage=4&catid=25
http://vbfrance.com/code.aspx?id=8185
http://vbfrance.com/code.aspx?id=8134
http://vbfrance.com/code.aspx?ID=4632 trés intéressant
http://www.vbfrance.com/forum.v2.aspx?ID=46619

sinon tu peux aller faire aussi un tour sur:
http://www.progotop.com/

Mais Je pense que tu trouveras la solution à ton pb ici :
http://tcharles.developpez.com/simul/
http://www.codeproject.com/dialog/keystroke.asp

-->D'autant plus que d'ici quelques temps, je vais également être confronté à ce problème !!
J'envisage de passer par une dll en C, pour cette partie !!!
Si tu n'es toujours pas arrivé à tes fins, quand je vais développer cette partie, je te ferai signe !!
Fred

Publié : lun. nov. 29, 2004 2:39 pm
par smerlo
Merci pour les liens j'y jette un oeil.

Je pense que je vais commencer par ça:
http://www.goflightinc.com/cgi-bin/ik/i ... ;f=8;t=209

Extrait du forum Goflight

Publié : lun. nov. 29, 2004 3:58 pm
par Red Dog
Savez vous que GoFlight est maintenant programmable pour tous simu?
Ils ont un logiciel en beta publique qui rend les modules programmables dans F4 ou Lomac ou même excell :)

Publié : lun. nov. 29, 2004 7:17 pm
par toopack66
Dit nous en plus Red-Dog , mon anglais laisse à désirer ! Sorry ! :P

Publié : mar. nov. 30, 2004 11:43 pm
par smerlo
Ben oui Red Dog, c'est le lien que j'envoyais...

Il ne reste plus qu' à afficher les bonnes lights sur les modules.
Et ça on sait faire... donc je bosse sur l'association des lights avec les modules.

Donc je confirme GFkeys fonctionne sur Falcon4 !

Publié : sam. déc. 11, 2004 12:03 pm
par Gillesaw
Bonjour à tous,

Je viens de télécharger GFkeys. J'essaie de le faire fonctionner avec Lockon et le module GF-P8.

Il ne se passe rien. Le programme est en mémoire avec "Enable key mapping", mails il ne communique rien au jeu.

J'ai essayé le mapping de test à utiliser avec notepad et je n'obtiens rien non plus.

Quelqu'un a-t-il essayé ce programme avec succès ?

Merci pour vos réponses.

Cordialement

Gilles