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

VB.NET Discussion :

conversion C++ -> VB d'une "x-macro"


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut conversion C++ -> VB d'une "x-macro"
    Bonjour tout le monde !

    Je convertis actuellement des fichier .h rédigés en C++ vers du VB pour pouvoir communiquer avec une carte PCI via un programme réalisé avec VB2008EE.

    Je suis tombé sur une "X-Macro" que je n'arrive pas à rédiger en VB.
    Après avoir trouvé de la doc sur ce type de macro en C/C++, j'ai tenté de trouvé des explications sur l'éventuelle correspondance en VB, sans succès pour l'heure.

    Quelqu'un pourrait-il me donner un coup de pouce en me renvoyant vers des explications que j'aurais loupé ou en me proposant un début de solution en VB ?

    En vous remerciant d'avance !

    Le code en C++ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    #define T_ERROR_CLASS_FIELDS \
        T_X( STANDARD, 0, "standard") \
        T_X( BOARD_A, 1, "board a") \
        T_X( DRIVER, 2, "driver") 
     
    typedef enum{
    #define T_X(name, value, string) name##_NEWVALUE = value * 10000,
        T_ERROR_CLASS_FIELDS
    #undef T_X
    }T_ERROR_CLASS;
     
    #define T_ERROR_CODE_FIELDS \
        T_X( T_SUCCESS, 0, STANDARD, "success") \
        T_X( T_ERROR, 1, STANDARD, "error") \
     
    #define T_RC_FIELDS \
        T_X( RC_NO_ERROR, 0, BOARD_A, "success") \
    	T_X( RC_ERROR, 1, BOARD_A, "error") \
     
    #define T_DRIVER_ERROR_FIELDS \
    T_X( T_DRV_NO_ERROR, 0, DRIVER, "success") \
    T_X( T_DRV_ERROR, 1, DRIVER, "error") \
     
    #define T_ALL_ERROR_FIELDS \
        T_ERROR_CODE_FIELDS \
        T_RC_FIELDS \
        T_DRIVER_ERROR_FIELDS
     
    #define T_ERROR_FROM_CLASS_ERROR(class, error) (error + class##_NEWVALUE)
     
    #define T_X(name, value, class, string) name = T_ERROR_FROM_CLASS_ERROR(class, value),
     
    typedef enum{
        T_ALL_ERROR_FIELDS
    }T_ERROR;
    #undef T_X

    PS:

    Une idée pour la conversion/le fonctionnement en VB de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    #include <winioctl.h>

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    le #include <winioctl.h> doit l'équivalent d'un ajout de référence vers une dll

    par contre pour attaquer une carte pci en vb il doit falloir passer par de l'appel d'api, le c++ doit pouvoir faire ca en natif
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut :-)
    Merci pour ta réponse Pol63 !

    Pour le winioctl.h je vais voir si je trouve de la doc sur le problème du côté des dll de windows.

    Concernant les API dont tu parles, il s'agit bien de l'ensemble des fonctions que l'on peut utiliser pour communiquer (dans mon cas) avec la carte PCIe ?
    Si c'est le cas, j'ai l'ensemble des fichiers header en C++ et j'ai commencé à les convertir en VB, je pense donc qu'il doit être possible de faire quelques choses avec.

    Sinon des idées pour écrire/convertir une "x-macros" en VB ?

    Merci d'avance

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    le winioctl.h ca doit etre un autre fichier codé en c++, je ne pense pas que c'est une dll de windows (enfin j'suis pas expert en .h)

    les api c'est les dll de windows qu'on peut appeler depuis n'importe quel langage pour faire des choses peu courantes

    il n'y a rien en .net pour dialoguer avec la matériel, donc il faut espérer que certaines dll de windows le permettent, dans ce cas google te diras surement lesquelles

    et dans ce cas en vb.net le code ressemble à
    verdana, geneva, helvetica][Public|Private] Declare Sub globalname Lib libname$ [Alias aliasname$] [(argument list)]

    pour dire que la sub machin est dans la dll machin

    et sinon je ne sais pas ce qu'est une x-macro


    sinon il y a aussi wmi qui permet d'obtenir des infos du matériel
    avec meme un programme écrrit par microsoft (wmi code creator il me semble) qui te donne le code vb.net pour faire telle ou telle chose (après avoir navigué dans la multitude de choses possibles)
    là aussi y a ptete moyens d'avoir des infos sur les cartes
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut
    Merci pour tes réponses rapide, je vais étudier les pistes que tu mentionnes (.dll et wmi).

    Effectivement le "winioctl.h" est un fichier C++.
    Pour exemple, voici le début du "winioctl.h" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #define DEVICE_TYPE DWORD
     
    #define FILE_DEVICE_BEEP                0x00000001
    #define FILE_DEVICE_CD_ROM              0x00000002
    #define FILE_DEVICE_CD_ROM_FILE_SYSTEM  0x00000003
    #define FILE_DEVICE_CONTROLLER          0x00000004
    #define FILE_DEVICE_DATALINK            0x00000005
    #define FILE_DEVICE_DFS                 0x00000006
    #define FILE_DEVICE_DISK                0x00000007
    ...
    Si tu est intéressé par une explication des "x-macros", il y a ces liens que tu peux consulter :
    http://en.wikipedia.org/wiki/C_preprocessor#X-Macros
    http://op.closedformodification.com/...6/18/x-macros/

    Bonne soirée !

    Julienbweb

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut
    Bon j'ai toujours pas mis la main sur des infos au sujet des .dll, je cherche encore et ensuite je passe au point des wmi.

    Du côté des x-macros quelqu'un aurait une idée ou une piste à proposer sinon ?

    Salutations

Discussions similaires

  1. Modification d'un texte dans une fenetre "d'erreur"
    Par PAUL87 dans le forum Access
    Réponses: 8
    Dernier message: 21/10/2005, 13h12
  2. Réponses: 1
    Dernier message: 30/09/2005, 19h17
  3. Erreur de conversion et requête dynamique dans une procédure
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 01/08/2005, 15h12

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