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

Dotnet Discussion :

Stucture C pour C#


Sujet :

Dotnet

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Février 2010
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Stucture C pour C#
    Bonjour,

    je suis un débutant en C#. Je souhaite développer un logiciel en C# qui pilote des périphériques Ethernet.

    Je dispose d'une.dll développée en C. Mais j'ai quelques difficultés à intégrer les structures.

    voilà le code C
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    typedef struct {
    	char IPReader[16];
    	uint8_t Type;
    }Capteur;
     
     
    Capteur MonCapteur;
    strcpy(MonCapteur.IPReader, "192.168.1.70");
    OpenCom(&MonCapteur);
     
    if (MonCapteur.Type == CapteurTemp)
    et ce que j'ai fait 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
     
    [StructLayout(LayoutKind.Sequential)] public class Capteur
    {        
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string IPReader;
        public byte Type;
    }
     
     
     public const byte CapteurTemp = 5;
     
     
    [DllImport("CAPTEUR.dll", CharSet = CharSet.Unicode, EntryPoint = "OpenCOM")]
    public static extern short OpenCOM([In, MarshalAs(UnmanagedType.LPStruct)]Capteur MonCapteur);
     
     
    clsInterface.Capteur MonCapteur = new clsInterface.MonCapteur();
     
    MonCapteur.IPReader = "192.168.1.70";
    clsInterface.OpenCOM1(MonCapteur);
    if (MonCapteur.Type = clsInterface.CapteurTemp)

    J'ai plusieurs problème le premier est un message d'erreur "Un appel à la fonction PInvok" durant l'execution en debug. Et le second qui est plus problématique car je n'arrive pas à récupérer la valeur Type de ma structure

    Pouvez vous m'aider,

    Merci

  2. #2
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Février 2010
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    J'ai trouvé la solution concernant ma variable Type.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [DllImport("CAPTEUR.dll", CharSet = CharSet.Unicode, EntryPoint = "OpenCOM")]
    public static extern short OpenCOM([In,Out, MarshalAs(UnmanagedType.LPStruct)]Capteur MonCapteur);
    J'ai toujours des problèmes de PInvoke.

  3. #3
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 570
    Points
    3 570
    Par défaut
    Ce site à pleins d'infos sur le PInvoke et les structures : http://pinvoke.net/
    Ils ont même un plugin de VS qui te donne le DLLImport à mettre pour n'importe quelle DLL

Discussions similaires

  1. Réponses: 15
    Dernier message: 18/05/2006, 13h43
  2. Outils, cours et NOUVEAUX tutoriels pour Borland C++Builder
    Par hiko-seijuro dans le forum C++Builder
    Réponses: 10
    Dernier message: 12/03/2006, 22h33
  3. Tutoriels et liens pour le Borland Database Engine
    Par Community Management dans le forum Paradox
    Réponses: 0
    Dernier message: 25/03/2002, 10h23
  4. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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