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
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 typedef struct { char IPReader[16]; uint8_t Type; }Capteur; Capteur MonCapteur; strcpy(MonCapteur.IPReader, "192.168.1.70"); OpenCom(&MonCapteur); if (MonCapteur.Type == CapteurTemp)
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
Partager