IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Transposition de Language C++ vers Windev (SimConnect.dll)


Sujet :

WinDev

  1. #61
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2007
    Messages : 57
    Points : 7
    Points
    7
    Par défaut
    Je viens de regarder https://docs.flightsimulator.com/htm...xtDispatch.htm

    Ce sont bien des Integer.
    Comme nous sommes en 64 bits, le system Int est sur 8 octets et le Integer est aussi sur 8 octets. non ?

    J'ai vu effectivement que pour pData il s'agit bien du pointeur d'un pointeur...

  2. #62
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2007
    Messages : 57
    Points : 7
    Points
    7
    Par défaut
    Ceci n'a rien avoir avec l'erreur de l'entier système, mais en lisant ceci :

    ppData :
    Pointer to a pointer to a data buffer, initially to be treated as a SIMCONNECT_RECV structure. If you are going to make a copy of the data buffer (which is maintained by the SimConnect client library) make sure that the defined buffer is large enough (the size of the returned data structure is one member of the SIMCONNECT_RECV structure.

    Ne faut-il pas passer par une variable de type buffer ou bien est-ce inutile ?

  3. #63
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 486
    Points : 875
    Points
    875
    Par défaut
    En C++ 64-bit hSimConnect est de type HANDLE, ce qui se traduit en WD par system int (entier non signé sur 8 octets)

    En C++ si vous faites

    long taille = sizeof(HANDLE)

    taille = 8

  4. #64
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2007
    Messages : 57
    Points : 7
    Points
    7
    Par défaut
    Oui tout à fait d'accord.

    Et justement, puisqu'il n'est pas possible de passer un systeme int, pourquoi ne pas passer un entier sans signe sur 8 octets ?

    C'est ce que j'ai essayé, en vérifiant que la valeur est bien identique pour le hSim et je n'ai pas d'erreur.

    Par contre c'est le ppData qui est plus embêtant avec cette histoire de "pointeur d'un pointeur"

  5. #65
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 486
    Points : 875
    Points
    875
    Par défaut
    Sinon, il reste toujours la solution de passer par une DLL qui utilise Postmessage pour communiquer avec le code WinDev.

  6. #66
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2007
    Messages : 57
    Points : 7
    Points
    7
    Par défaut
    Oui tout à fait

    C'est ce que j'étais en train d'essayer avec votre MiniSIM, mais les valeurs ne sont mise à jour en fonction du déplacement de l'avion.
    On affiche bien les bonne valeurs au démarrage, mais ensuite elle sont toujours les mêmes.
    En plus cela ne fonction que dans un sens (Lecture) avec des valeurs fixes (title, etc...).
    Il faudrait que je me penche sur Visual Studio... c'est une autre affaire

  7. #67
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2007
    Messages : 57
    Points : 7
    Points
    7
    Par défaut
    houla... Il faut que je recommence tous les essais à zéro car j'ai trouvé pourquoi il pouvait y avoir cette erreur.

    Voici l'explication

    Code de la fonction intialement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    FUNCTION SimConnect_GetNextDispatch(LOCAL hSim is system int, ppData is SIMCONNECT_RECV, pcbData is unsigned int)
    nRet is unsigned int = SysToUint(API("SimConnect_GetNextDispatch", hSim, &ppData, &pcbData))
    RESULT nRet
    et voici le code corrigé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FUNCTION SimConnect_GetNextDispatch(LOCAL hSim is system int, ppData is SIMCONNECT_RECV, pcbData is unsigned int)
    nRet is unsigned int = SysToUint(API(SIM, "SimConnect_GetNextDispatch", SysToInt(hSim), &ppData, &pcbData))
    RESULT nRet
    Il manquait le "SIM , " (le premier paramètre de l'appel de l'API) qui est le nom de la DLL. Et je crois qu'elle est obligatoire.

  8. #68
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2007
    Messages : 57
    Points : 7
    Points
    7
    Par défaut
    Je n'ai plus l'erreur concernant le passage du paramètre.

    Reste maintenant le problème du pointeur du pointeur de pData.
    C'est déjà très bien.

  9. #69
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 486
    Points : 875
    Points
    875
    Par défaut
    On peut aussi passer des paramètres.
    Le tout c'est de définir ce dont vous avez besoin (cahier des charges).


    Si in fine vous voulez créer un "addon" pour FS, vous serez obligé de passer par une DLL, car la solution qui consiste à fournir le framework PC-Soft n'est pas viable pour ce genre de projet.

  10. #70
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2007
    Messages : 57
    Points : 7
    Points
    7
    Par défaut
    Non ce n'est pas un AddOn, surtout pas.
    C'est exclusivement un programme Tier.

  11. #71
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2007
    Messages : 57
    Points : 7
    Points
    7
    Par défaut
    Je reçois un pcbData (dimension des infos reçues)
    Mais mon pData.dwID est toujours égal à 0

  12. #72
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 486
    Points : 875
    Points
    875
    Par défaut
    pcbData est un entier non signé sur 4 octets (DWORD)

    FUNCTION SimConnect_GetNextDispatch(LOCAL hSim is system int, ppData is system int, pcbData is unsigned int)
    nRet is unsigned int = SysToUint(API("SimConnect_GetNextDispatch", hSim, ppData, &pcbData))
    RESULT nRet

    si pData.dwID = 0, c'est que le pointeur vers pointeur n'est toujours pas correct

  13. #73
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 486
    Points : 875
    Points
    875
    Par défaut
    Renvoyez moi votre code, car nous ne sommes pas synchro.
    J'ai juste besoin, de WinMain.wdw et SimConnect.wdg

    Concernant votre poste #67, c'est sûr que le premier paramètre SIM doit être précisé puisque c'est le nom de la DLL utilisée.
    Veuillez m'excuser, car c'est une omission de ma part, que je n'ai pas détecté puisque je suis dans l'incapacité de tester le code.

    J'ai regardé si il y avait une version d'évaluation de FS, mais je n'en ai pas trouvé.

  14. #74
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2007
    Messages : 57
    Points : 7
    Points
    7
    Par défaut
    Renvoyez moi votre code, car nous ne sommes pas synchro.
    J'ai juste besoin, de WinMain.wdw et SimConnect.wdg
    Voici :

    https://fromsmash.com/SimConnect

  15. #75
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2007
    Messages : 57
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Patrice Terrier Voir le message
    Concernant votre poste #67, c'est sûr que le premier paramètre SIM doit être précisé puisque c'est le nom de la DLL utilisée.
    Veuillez m'excuser, car c'est une omission de ma part, que je n'ai pas détecté puisque je suis dans l'incapacité de tester le code.
    Ce n'est pas grave du tout...
    C'est formidable de m'aider à comprendre tout cela
    Merci

  16. #76
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 486
    Points : 875
    Points
    875
    Par défaut
    Ok, pour contourner le problème de SimConnect_GetNextDispatch, on peut modifier le source VS2019 de SIM.dll, pour être sûr de ne pas sortir de la boucle sans l'avoir souhaité et ainsi continuer de recevoir les messages.

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            while( 0 == gP.quit ) {
                SimConnect_CallDispatch(gP.hSimConnect, MyDispatchProcRD, NULL);
                Sleep(1);
            }

    Perso je n'aurai pas écrit la boucle de cette façon, mais comme ceci
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (;;) {
        SimConnect_CallDispatch(gP.hSimConnect, MyDispatchProcRD, NULL);
        Sleep(1);
        if (gP.quit) break;
    }

    Ou alors vous pouvez mettre un timer dans votre code WinDev pour tester le simulateur à intervalle régulier.

  17. #77
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2007
    Messages : 57
    Points : 7
    Points
    7
    Par défaut
    Oui tout a fait...

    Il reste maintenant à présenter la DLL de manière à pouvoir choisir n'importe quelle valeur à retourner et également pouvoir envoyer n'importe quelle commande (modifier un Event du simu)

    Est il préférable d'avoir une boucle dans le SIM.dll ou bien une boucle dans WD pour interroger via SIM.dll ?
    Dans le deuxième cas la SIM.dll ne sera qu'une interface sans gestion interne d'une boucle.

  18. #78
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 486
    Points : 875
    Points
    875
    Par défaut
    Je pense que pour éviter de saturer ce forum, il vaudrait mieux que vous vous enregistriez sur mon forum privé.
    http://www.objreader.com/index.php?topic=5.0
    C'est aussi plus facile d'y utiliser des pièces jointes, et y apprendre à utiliser le SDK Windows avec un véritable compilateur.

  19. #79
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2007
    Messages : 57
    Points : 7
    Points
    7
    Par défaut
    Oui bien sûr avec plaisir.
    J'ai envoyé le mail.

Discussions similaires

  1. Migration Acess vers Windev 11 ou 12
    Par kommen dans le forum Access
    Réponses: 3
    Dernier message: 31/01/2008, 11h57
  2. [Windev 11] Migration VB6 vers Windev
    Par sterix92 dans le forum WinDev
    Réponses: 4
    Dernier message: 26/12/2007, 15h57
  3. extraction vers windev --> ajout d'espaces à droite
    Par Arnaud M dans le forum Informix
    Réponses: 3
    Dernier message: 26/03/2007, 09h51
  4. Migration WinDev 7 vers WinDev 8
    Par amarni dans le forum WinDev
    Réponses: 7
    Dernier message: 13/10/2006, 18h58
  5. Traduction des Union C/C++ vers Delphi (usage DLL)
    Par Crafton dans le forum Langage
    Réponses: 6
    Dernier message: 22/02/2006, 08h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo