Bonjour,

Je souhaite utiliser une Dll développée en C (Je n'ai pas les sources juste le .h) dans une application VB.net (VB 2008 Express).

Les fonctions de la Dll fonctionnent déjà dans une application Labwindows/CVI (en C).

J'ai l'impression que j'appelle mes fonctions de façon équivalentes dans mes applications CVI et VB.
Mais je voudrais savoir si je fait correctement ma déclaration et mon appel en VB. Mes compétences en VB sont assez minces.

Déclaration dans le .h de la DLL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
// Déclaration dans la DLL
__declspec(dllexport) int M_Connect(char *pszDestIP,unsigned short usPort,unsigned char ucSlaveAddr,int *piCId);
Code CVI
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
// Code CVI
int nStatus;
char pcRemoteIP[16];
int piCId;
unsigned short usPort=0;
unsigned short ucSlaveAddr=0;
 
// Récupération des paramètres de la connection TCP/IP //
// Adresse IP : Chaine de caractère
GetCtrlVal(panelHandle, PANEL_STR_IPADDR, pcRemoteIP);
// Numéro de port
GetCtrlVal(panelHandle, PANEL_NUM_PORT, &usPort);
// Slave adresse
GetCtrlVal(panelHandle, PANEL_NUM_SLAVE, &ucSlaveAddr);
 
// Connection
nStatus = M_Connect(pcRemoteIP, usPort, ucSlaveAddr, &piCId);
Code VB
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
' Declaration des fonctions de la DLL '
Private Declare Function MDB_Connect Lib "LibMasterModbusTCP.dll" (ByRef pszDestIP As Char, ByVal usPort As Short, ByVal ucSlaveAddr As Short, ByRef piCId As Integer) As Integer
 
    ' Init interface '
    Private Sub SupervisorModbus_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim psIPAddress As String
        Dim pcIPAddress As Char()
        Dim nStatus As Integer
        Dim usPort As Short
        Dim ucSlaveAddr As Short
        Dim s_iCId(1) As Integer
 
        ' Récupération des paramètres de la connection TCP/IP '
        ' Adresse IP : TxtIPAddress = TextBox
        psIPAddress = TxtIPAddress.Text
        pcIPAddress = psIPAddress.ToCharArray()
        ' Numéro de port : NumPort = NumericUpDown
        usPort = NumPort.Value
        ' Slave adresse : NumSlaveId = NumericUpDown
        ucSlaveAddr = NumSlaveId.Value
 
        ' Ouverture d'une communication avec le TPLC '
        nStatus = M_Connect(pcIPAddress(0), usPort, ucSlaveAddr, s_iCId(0))
    End Sub
Merci d'avance pour vos réponses