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