See site in english Voir le site en francais
Website skin:
home  download  forum  link  contact

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

Author Topic: Capsule en dur pour NASSP 7.0 !!!!  (Read 97424 times)

0 Members and 4 Guests are viewing this topic.

Offline Milouse

  • Legend
  • ******
  • Posts: 1895
  • Country: France fr
  • Karma: 211
Reply #25 - 17 July 2015, 10:23:02
Bonjour,

Chez Antoo, "Simpit Development Corp." :) :)

Bravo et bon courage pour la suite. :top:


Milouse


Offline antoo

  • Legend
  • ******
  • Posts: 3659
  • Country: France fr
  • Karma: 179
  • MSFS ❤️
Reply #26 - 17 July 2015, 11:22:29
Oui c'est un peu vrai ^^ !

On est en pleine recherche du code source, hier on a passé 5 bonnes heures à fouiller dans les fichiers OrbiterSDK, mais on trouve pas ce qu'on voudrait...
On a envoyé un message privé à "Tsachim" du forum Meadville Space Center, mais j'avais déjà essayé, il passe deux fois par an sur son forum et ne répond pas...
Leur forum est un peu mort en fait.

Si certains d'entre vous veulent nous filer un coup de pouce, hésitez pas :) ! On cherche en fait comment le jeu sait que l'on clique sur un bouton, pour pouvoir ensuite écrire un programme qui "clique" sur le bouton.
On a longuement lu le tuto de Dan sur le C++, il parle de zones cliquables sur les bitmaps, mais on trouve rien dans les dossiers de Nassp :( .

De plus, le Lua de la console d'orbiter est super limité, enfin on a cette impression...

A+

EDIT : Vous savez si on peut ouvrir et modifier un fichier dans la RAM ??

« Last Edit: 17 July 2015, 16:05:06 by antoo »
---------------------------------------------------------------------------------------------------
"ET C´EST PARTI!!" Youri Gagarine au lancement de vostok 1 le 12 avril 1961

Offline Mars Bleu

  • Hero Member
  • *****
  • Posts: 638
  • Karma: 33
Reply #27 - 18 July 2015, 17:07:15
Je vois que tu as de la suite dans les idées, bravo!!

Pour envoyer des infos au jeu, d'après moi, il y a  les raccourcis clavier et envoyer des données à LUA par le port USB...

Je n'ai pas senti de limitations de la part de la console LUA. Il est vrai que je me suis
contenté de lire la configuration du vaisseau considéré dans le *.SCN, et de l'envoyer sur l'écran.

Il me reste encore à mettre en forme les données pour les transmettre au microcontrôleur
(Arduino Uno).

Sinon, en hardware, j'avance encore dans mon coin, mais j'ai suffisamment progressé pour pouvoir
bientôt en parler à tout le monde dans un fil à ouvrir.


Offline antoo

  • Legend
  • ******
  • Posts: 3659
  • Country: France fr
  • Karma: 179
  • MSFS ❤️
Reply #28 - 18 July 2015, 17:07:30
Okay, on a du neuf :) !
J'ai fait appel à Orbiter28 , qui m'avait dit s'y connaître en info... et il avait raison :eek: !
Il m'a conseillé le logiciel CheatEngine, qui permet de changer des valeurs dans les fichiers de la RAM. Et ben vous savez quoi? Oui, ça marche!
On a pas encore trouvé de bouton, mais on a trouvé l'adresse RAM du Chronomètre d'évènement par exemple. On peut l'afficher, la modifier, ...
C'pa cool ça  :bave: !

Merci, A+ !
Edit: la console Lua est limitée car elle ne peut pas afficher de paramètres autres que ceux génériques (selon mon frère). Du style la pression... mais pour NASSP, on a pas qu'une seule pression à afficher, on en a plein!

Aussi, niveau hardware on prévoit de faire toutes les jauges avec une vraie aiguille afficheuse.

---------------------------------------------------------------------------------------------------
"ET C´EST PARTI!!" Youri Gagarine au lancement de vostok 1 le 12 avril 1961

Offline Mars Bleu

  • Hero Member
  • *****
  • Posts: 638
  • Karma: 33
Reply #29 - 18 July 2015, 17:17:49
Ah, mais CheatEngine, ça a l'air vraiment bien. Effectivement, il y a des limites
à LUA. Il faudrait bien que j'accède aux valeurs de température de bouclier thermique
(Xr2 Ravenstar) pourconduire une rentrée atmosphérique.

Pour les jauges à aiguilles, comment vas tu faire? C'est drôlement cher
en mode tout fait...


Offline antoo

  • Legend
  • ******
  • Posts: 3659
  • Country: France fr
  • Karma: 179
  • MSFS ❤️
Reply #30 - 18 July 2015, 17:20:21
Avec des cervomoteurs et/ou des bobines magnétiques. C'est pas cher, et on peut facilement assigner à ces instruments une valeur numérique pour en faire une analogique.

---------------------------------------------------------------------------------------------------
"ET C´EST PARTI!!" Youri Gagarine au lancement de vostok 1 le 12 avril 1961

Offline antoo

  • Legend
  • ******
  • Posts: 3659
  • Country: France fr
  • Karma: 179
  • MSFS ❤️
Reply #31 - 18 July 2015, 19:52:26
Encore du neuf : On commence à faire un relevé bouton par bouton de leur adresse dans la RAM :hot: ! Et c'est loooooong...
Mais c'est hyper excitant d'y arriver enfin! Par exemple, on vient de trouver que le bouton du SPS Direct Mode ON est sur l'adresse 19b98... DINGUE !

Merci merci à Orbiter28, franchement ça merite pleins de Karma :) !
A+

PS: je vous rappelle que ce soir 21h00 on se retrouve pour l'entraînement n°3 du programme Cronos!

---------------------------------------------------------------------------------------------------
"ET C´EST PARTI!!" Youri Gagarine au lancement de vostok 1 le 12 avril 1961

Offline antoo

  • Legend
  • ******
  • Posts: 3659
  • Country: France fr
  • Karma: 179
  • MSFS ❤️
Reply #32 - 19 July 2015, 11:41:15
Okay apres une longue soirée de boulot et de tests : on s'est rendu compte d'une subtilité gênante. En effet, si certains boutons peuvent fonctionner grâce à cette methode de RAM, ce n'est pas le cas de tous. Les rotatifs sont tres complexes, ils ont plusieurs adresses par position et en plus, pour eux, leur mouvement n'a pas la meme adresse que leur fonction.

En plus de tout ça on rencontre un problème plus gênant encore : en modifiant la RAM, il manque un "refresh" de chaque bouton apres avoir bougé ce dernier. Par exemple, sur l'EMS : le rotatif en position DeltaV Test a une valeur dans la RAM de 06. Puis, si on change le EmsMode sur une autre position (par exemple sur Normal) EN CLIQUANT,  alors la valeur du Rotatif sur DeltaV Test devient 01. Mais si on passe manuellement EmsMode sur Normal en changeant sa valeur dans la RAM, on n'observe PAS de changement à 01.
Si par contre on clique a nouveau sur le rotatis et qu'on le ramene ensuite sur DeltaVTest, là oui!

En bref, modifier dans la RAM ne marche pas sur les boutons dépendant d'autres boutons.
Mais pas de panique! On va se rabattre sur ma précédente idée : les zones cliquables du panel. Mon frère et moi avons commencé à écrire un programme en c++ pour simuler une souris qui cliquerait sur le pannel.
Le seul hic, c'est que le programme prends comme reference de coordonnées de la souris le coin en haut à gauche DE L'ECRAN, qui est le 0:0 quoi. Nous, on voudrait que la référence soit un poind du pannel...

Pour autant, on se servira quand meme de la RAM uniquement pour les afficheurs. En effet, si la modification des donnees est pas au  point, leur lecture point, leur lecture est sans souci et très simple à faire.  On a dejà trouvé l'indicateur du DeltaV, les chronometres, la jauge de poussée du SPS... Donc pour ça on gère :) !
Si vous avez des idees pour la simulation de clic, dites nous...

A+

« Last Edit: 20 July 2015, 10:52:12 by antoo »
---------------------------------------------------------------------------------------------------
"ET C´EST PARTI!!" Youri Gagarine au lancement de vostok 1 le 12 avril 1961

Offline orbiter28

  • Legend
  • ******
  • Posts: 2679
  • Karma: 15
Reply #33 - 19 July 2015, 15:12:16
Tu dit que vous avez écrit un programme en C++, il me semble que nassp a un code source disponible ?
Ici ce lien :
http://nassp.sourceforge.net/
qui à cette heure n'est pas fonctionnel ^^


Offline antoo

  • Legend
  • ******
  • Posts: 3659
  • Country: France fr
  • Karma: 179
  • MSFS ❤️
Reply #34 - 19 July 2015, 18:05:37
Ouaip, on attends aussi :badsmile: ...

---------------------------------------------------------------------------------------------------
"ET C´EST PARTI!!" Youri Gagarine au lancement de vostok 1 le 12 avril 1961

Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #35 - 20 July 2015, 02:38:16
En bref, modifier dans la RAM ne marche pas sur les boutons dépendant d'autres boutons.
Mais pas de panique! On va se rabattre sur ma précédente idée : les zones cliquables du panel. Mon frère et moi avons commencé à écrire un programme en c++ pour simuler une souris qui cliquerait sur le pannel.
Le seul hic, c'est que le programme prends comme reference de coordonnées de la souris le coin en haut à gauche DE L'ECRAN, qui est le 0:0 quoi. Nous, on voudrait que la référence soit un poind du pannel...

Je ne sais pas si va fonctionner, car en principe on n'est pas supposé le faire directement, mais si vous avez un pointeur vers un VESSEL2 ou VESSEL3 de la capsule, vous pourriez essayer d'envoyer l'événement directement par VESSEL2::clbkPanelMouseEvent(). Dans ce cas, les coordonnées seraient relatives au panneau, pas à l'écran.

Je ne garantie rien, mais ça pourrait bien fonctionner et vous sauver bien du tracas. Car le panneau étant trop grand pour certains écrans, il vous sera impossible de cliquer sur des parties sans bouger le panneau...

Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon

Offline antoo

  • Legend
  • ******
  • Posts: 3659
  • Country: France fr
  • Karma: 179
  • MSFS ❤️
Reply #36 - 20 July 2015, 09:53:56
Merci Bibi Uncle pour ta réponse, en effet on est déjà en train de chercher à faire automatiquement bouger le panel 2D :badsmile: . Mais instanément!
En clair, on a reussi a faire un programme qui clique a une certaine position X;Y par rapport au coin de la fenêtre, c'est déjà mieux que le coin de l'écran! On a testé hier ça marche au poil. Mais pour les boutons hors genêtre, il faudra qu'on fasse bouger le panel d'une valeur connue et ensuite noter les coordonnees des switch à partir de cette nouvelle position.

On avance :zen:

---------------------------------------------------------------------------------------------------
"ET C´EST PARTI!!" Youri Gagarine au lancement de vostok 1 le 12 avril 1961

Offline antoo

  • Legend
  • ******
  • Posts: 3659
  • Country: France fr
  • Karma: 179
  • MSFS ❤️
Reply #37 - 20 July 2015, 11:40:09
On vient de penser à un truc : quand le programme tourne, on a plus de souris... ce qui peut être embêtant quand on veut "débugger", ou tester, bref il faut qu'on puisse accéder à la souris quand on le veut!
Ce qu'on va faire c'est qu'on va rajouter un bouton, bien camouflé car comme les autres :badsmile:, qui s’appellera "Program", qui permettra de couper/remettre en route le programme. Quand il est coupé, on a la souris, quand il est en marche, on n'a plus accès à la souris manuellement.

Comme le programme se sert comme référence du coin de la fenêtre, il faudra juste que quand on remet le programme en route, il recale le panel sur sa position par défaut, celle pour laquelle on a calibré les coordonnées des boutons, et on peut à nouveau retoucher aux boutons.

On a pensé qu'à côté de l'ordinateur de bord c'était plus judicieux, ça rentre plus dans l'esprit :) !



A+


---------------------------------------------------------------------------------------------------
"ET C´EST PARTI!!" Youri Gagarine au lancement de vostok 1 le 12 avril 1961

Offline Maxorbiter

  • LordCroussette
  • Legend
  • ******
  • Posts: 2365
  • Country: Canada ca
  • Karma: 204
    • J'écris des fanfictions!
Reply #38 - 20 July 2015, 15:42:12
Bien trouvé comme place ! ;)



Offline antoo

  • Legend
  • ******
  • Posts: 3659
  • Country: France fr
  • Karma: 179
  • MSFS ❤️
Reply #39 - 22 July 2015, 16:21:48
So!

On a laissé tomber le programme qui "clique" car un a pas trouvé comment déplacer instantanément le panel...
Mais, on est contents, vu qu'on a trouvé un fichier qu'on avait loupé : j'ai nommé "saturn.h" et "satswitches.h".
On avait pourtant passé au peigne fin les fichiers plusieurs fois, mais en recherchant encore une de plus, on les a trouvés :) !

Au passage, la technique de BibiUncle fonctionne sur un panel, mais ne permet pas de changer de panel. Pas top du coup, mais BibiUncle nous aura quand même bien aidé, car c'est en cherchant dans les librairies le fameux "clbkPanelMouseEvent()" qu'on a trouvé "saturn.h" !

J'vous tiens au jus!
A+

---------------------------------------------------------------------------------------------------
"ET C´EST PARTI!!" Youri Gagarine au lancement de vostok 1 le 12 avril 1961

Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #40 - 22 July 2015, 17:45:07
Je suis bien content que mon truc ait fonctionné, car il y a deux jolies méthodes pour vous. oapiSetPanel permet de changer de panel en spécifiant l'ID. Il y a aussi oapiSwitchPanel qui permet de changer de panel en spécifiant la direction (haut, droite, bas, gauche).

Sinon, vous pouvez faire la même technique comboy et appeler directement VESSEL2::clbkLoadPanel ou VESSEL3::clbkLoadPanel2D.

Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon

Offline antoo

  • Legend
  • ******
  • Posts: 3659
  • Country: France fr
  • Karma: 179
  • MSFS ❤️
Reply #41 - 23 July 2015, 18:30:55
Salut tout le monde,

Aujourd'hui encore beaucoup de travail d'accompli, pour pas grand chose car on a en fait passé trois ou quatre heures à  corriger des librairies, et on a pas encore fini...
Mais on avance, il y en a de moins en moin :) ...

On pense aussi avoir trouvé les valeurs des afficheurs ailleurs que dans la RAM, ce qui sera plus commode non?!

A+

---------------------------------------------------------------------------------------------------
"ET C´EST PARTI!!" Youri Gagarine au lancement de vostok 1 le 12 avril 1961

Offline maxoo

  • Jr. Member
  • **
  • Posts: 14
  • Country: France fr
  • Karma: 7
Reply #42 - 09 August 2015, 18:01:18
Salut tout le monde, je suis le frère d'antoo...
Après quelques heures de recherches et tentatives infructueuses, je bloque sur l'utilisation du sdk d'orbiter...

Pour le test, je m'occupe du bouton EMSFunctionSwitch (défini du type RotationalSwitch dans saturn.h). Un coup d'oeil à la définition de la classe RotationalSwitch (dans toggleswitch.h), et je vois que je peux utiliser les méthodes GetState(), SwitchTo() et SetState(). Seulement, je suis incapable de les utiliser... J'ai entre 2 et quelques miliers d'erreurs...
Voilà mon code:

Code: [Select]
#include "stdafx.h"
#include <windows.h>

#include "saturn.cpp"
#include "saturn.h"

int __stdcall WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow)
{
    while(1)
    {

printf("%d",EMSFunctionSwitch.GetState());
        Sleep(1000);
    }
}

Et les erreurs:
Code: [Select]
1>.\modVal.cpp(12) : error C2065: 'EMSFunctionSwitch' : identificateur non déclaré
1>.\modVal.cpp(12) : error C2228: la partie gauche de '.GetState' doit avoir un class/struct/union
1>        le type est ''unknown-type''

Quelqu'un saurait m'indiquer comment utiliser correctement la sdk? J'imagine qu'il y a des documents mais je ne les trouve pas...  :stupid:

« Last Edit: 09 August 2015, 18:09:55 by maxoo »

Offline jacquesmomo

  • Le budget !!!
  • Legend
  • ******
  • Posts: 7408
  • Country: France fr
  • Karma: 598
  • Plus on rate, plus on a de chances de réussir !..
Reply #43 - 10 August 2015, 19:37:20
Salut tout le monde, je suis le frère d'antoo...
Bonjour, et bienvenue !!!  :beer:

Malheureusement de mon coté je ne peux pas t'aider (c'est plutôt moi qui certainement un jour te demandera de l'aide  ;)  ) hélas je n'y connais rien en programmation  :(

En tout cas ce que vous fabriquez tous les 2 c'est super !!!  :music:

Mes add-ons sont là !

Offline maxoo

  • Jr. Member
  • **
  • Posts: 14
  • Country: France fr
  • Karma: 7
Reply #44 - 10 August 2015, 20:38:45
Merci! c'est du boulot, on essaie d'avancer petit à petit  :)


Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #45 - 10 August 2015, 22:46:57
Le code que tu auras besoin sera beaucoup plus lourd. EMSFunctionSwitch est un attribut de la classe Saturn. Donc, il te faudrait un pointeur vers un objet Saturn pour pouvoir y accéder (ce qui n'est pas le cas présentement), et puisque l'attribut est protected, tu ne peux y accéder depuis l'extérieur. Il te faudrait un accesseur/mutateur (une méthode get/set) ou il faudrait que tu sois une classe ami. Bref, des trucs que tu ne peux pas avoir sans modifier le code de NASSP.

Aussi, il ne faut pas inclure le saturn.cpp. Les .h sont les headers à inclure, les .cpp sont le code à compiler réellement.

Je vais regarder cela de plus près ce soir, je vais vérifier comment le ChecklistMFD fonctionne et je te redonne des nouvelles. Prend note que je suis à 6 heures de décalage horaire... Ô Canada ! :)

Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon

Offline maxoo

  • Jr. Member
  • **
  • Posts: 14
  • Country: France fr
  • Karma: 7
Reply #46 - 10 August 2015, 23:19:09
Aaaah oui d'accord ^^
Désolé pour l'inclusion du cpp... C'est la première fois que je fais vraiment du C#.

Il faut donc qu'on s'oriente dans une autre direction... En tout cas merci pour ta réponse!

Ce forum est vraiment super, sur futura-sciences je m'en serais déjà pris plein la tete...


Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #47 - 11 August 2015, 01:59:56
Bon, c'est beaucoup plus complexe que ce que je croyais.

Pour le ChecklistMFD, une classe spéciale appelée MFDConnector a été créée pour pouvoir changer l'état des boutons. Cela utilise un système de messagerie étrange pour pouvoir modifier les boutons. Si tu veux voir le décodage des messages, c'est dans toggleswich.cpp. Je ne sais pas trop par où prendre le problème...

Mais en tout cas, il te faudrait un pointeur vers le vaisseau. Tu peux en obtenir un en créant un module pour Orbiter et en utilisant la méthode oapiGetVesselByName() ou oapiGetVesselByIndex() pour obtenir un pointeur vers le VESSEL3. Ensuite, tu pourras le caster en Saturn.

Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon

Offline maxoo

  • Jr. Member
  • **
  • Posts: 14
  • Country: France fr
  • Karma: 7
Reply #48 - 11 August 2015, 10:08:41
Super, merci. je vais regarder ça de plus près, je te tiens au courant.


Offline Mars Bleu

  • Hero Member
  • *****
  • Posts: 638
  • Karma: 33
Reply #49 - 11 August 2015, 10:53:25
Je viens de parcourir le fil depuis mi-Juillet. C'est très intéressant,
il y a du niveau!
J'aurai sûrement besoin de ces infos pour accéder à des commandes
hors véhicule générique.