orion33 a écrit:@JeeHell
J’avance doucement avec simconnect que je découvre peu à peu, J’arrive à récupérer les events et variables dans un fichier VB, cela me permet de traiter les données récupérées (conversion, modif, mise en forme etc) chaque paramètre récupéré est un challenge

mais j’y arrive pas mal pour les données « avion » je commence à bien gérer le process sur des variables simples (exemple : GEAR LEFT POSITION où la donnée attendue est une valeur en 0 et 100), en revanche tout ce qui est environnement avion comme par exemple : le trafic environnent je « merdouille » complet...
Après avoir mis en forme les données dans mon fichier VB j’envoie via l’USB sur un microcontrôleur (PIC) lui-même programmé pour alimenter instruments, voyants,etc.
J’arrive aussi à faire l’inverse envoyer à simconnect une donnée comme la position d’un interrupteur, potar, etc … c’est de la bidouille, j’apprends tout doucement n’ayant pas de base sur la programmation c’est loin d’être évident, heureusement internet est là et me permet bien souvent de trouver de l’aide
Pas facile à expliquer tout ça !
Je vais pas m'intéresser au côté PC <=> microcontrôleur, je suppose que le problème vient déjà de ton appli PC vers simconnect/P3D.
Donc si tu arrives à récupérer une donnée simple comme GEAR LEFT POSITION, je suppose que tu utilises
SimConnect_RequestDataOnSimObject et que tu récupères les données dans la callback "dispatch", sous l'ID
SIMCONNECT_RECV_ID_SIMOBJECT_DATALe principe pour les trafics alentours est identique, sauf que tu es obligé de récupérer les données en passant par un appel à la fonction
SimConnect_RequestDataOnSimObjectType, et que les données seront reçues avec l'ID
SIMCONNECT_RECV_ID_SIMOBJECT_DATA_BYTYPE.
SimConnect_RequestDataOnSimObjectType doit être appelée régulièrement, elle ne comprend pas de récurrence comme
SimConnect_RequestDataOnSimObject.
Pour chaque simobject de type souhaité (ici
SIMCONNECT_SIMOBJECT_TYPE_AIRCRAFT et éventuellement
SIMCONNECT_SIMOBJECT_Type_HELICOPTER) tu auras un retour avec le bloc de données (déclaré en utilisant
SimConnect_AddToDataDefinition) et chaque appel aura un ObjectId correspondant au trafic concerné (tu peux donc stocker entre deux appels les données TCAS et les mettre à jour en fonction de cet objectID).
D'ailleurs, une fois l'objectID mémorisé, tu peux alors utiliser la fonction
SimConnect_RequestDataOnSimObject avec cet objectID (au lieu de
SIMCONNECT_SIMOBJECT_Type_USER ou 0). Et tu retrouves le mécanisme usuel pour récupérer/envoyer des données.
Il est vraiment préférable de n'utiliser qu'un seul type de données dans le retour (
SimConnect_DATAType_FLOAT64 ou bien avec des strings si vraiment nécessaire, les strings c'est un poil plus compliqué). Même si tu dois retrouver un booléen ou un entier, tu retrouveras tes petits facilement, et ce sera une source d'erreur de moins.