Bonjour,
Je cherche à comprendre comment dialoguer avec une dll codé en C à partir de VB.net.
J'ai bien réussi à faire quelques essai es concluant mais j'ai plus l'impression de faire de la bidouille que de réellement comprendre comment cela fonctionne, en fait la ou je peche c'est sur le type de variable à utiliser, voila ci dessous l'appel à 2 fonctions de la dll qui me retourne un résultat cohérent, mais je me demande quand même si je m'y prend correctement.
Je tiens à préciser que j'ai lu quelques tuto sur le sujet trouvés à l'aide de google mais je reste un peu incertain sur la compréhension que j'ai eu.
Voici les fonctions tel quel sont déclarées dans la documentation que j'ai ou dans le .h livré avec la dll:
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 <DllImport("totoApi.dll")> _ Public Shared function GetApiVersionEx(ByRef API_EX_MAJOR_VERSION As Integer, ByRef API_EX_MINOR_VERSION As Integer) As short End function <DllImport("totoApi.dll")> _ Public Shared function StartEx(byval pszComName As string, byval ulSpeed As integer, byref phCsc As integer) As short End function Dim maj As integer Dim min As Integer Dim error As short error = GetApiVersionEx(maj, min) => ici j'obtiens bien les versions de la dll maj et min, avec "error" = 0 ce qui correspond à un succes de la fonction retourné par la dll Dim x As Integer Dim hRw(x) As Integer error = StartEx("COM4", 0, hRw(x)) => ici j'obtiens "error" = 0 ce qui correspond à un succes de la fonction retourné par la dll et x = 0 ce qui a l'air cohérent
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 short GetApiVersionEx (int *piMajorVersion, int *piMinorVersion);
avec comme info dans le doc:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 short StartEx (const char *szPortName, ULONG ulComSpeed, CSC_HANDLE *pApiHandle);
C'est surtout cette dernière variable "CSC_HANDLE *pApiHandle" que j'ai du mal à comprendre comment la déclarer proprementszPortName Pointer to a zero-terminated string that specifies the name of the communication port
ulComSpeed Specifies the communication speed, in bits per second, on the serial line
pApiHandle Pointer to a CSC_HANDLE object that is initialized with the handle to the opened logical device.
J'avais suivi ce tuto https://rp.developpez.com/vb/tutoriels/dll/ mais en suivant le tableau "VI. Correspondance des types" j'aurai eu tendance à déclarer la variable " byval ulSpeed " en Long , mais ca ne fonctionne pas (message d'erreur) pourtant dans le tableau on indique bien qu'un ULONG en C correspond à un Long en VB.net, or cela fonctionne quand je déclare le paramètre en Integer.
Merci pour vos aides et explications.
Cdt,
yaume
Partager