Bien que les appels de DLL ne soit vraiment pas ma tasse de thé, je vais essayé de faire un petit effort.
En lisant le PDF, je pense que certaines fonctions sont plus ou moins simple à interpréter (attention, je ne suis pas un cador, hein !!!).
Déjà pour commencer, il est important de lire la documentation de DllCall afin de comprendre ce que l'on cherche à faire. L'exemple de fin est pas mal pour la compréhension.
La partie la plus intéressante (pour le début) est ceci :
Considérant que "dll" représente le chemin et le nom de la dll, ou plus simplement son handle obtenu avec le
DllOpen.
En deuxième argument, on trouve le type de la valeur de retour.
En troisième argument, le nom de la fonction.
Analysont cette fonction :
OpenDevice
Syntax
FUNCTION OpenDevice: Longint;
Result
Longint: If succeeded the return value will be the card address read from the K8061 hardware. The
card address is value between 0 and 7 which corresponds to the jumper (A1, A2, A3) setting on the
K8061 card. Use this value in the next function calls to access this card.
If more K8061 cards are connected to the PC, repeat this function call until all the cards are opened.
Return value -1 indicates that all K8061 cards are opened.
Return value -2 indicates that no card was found.
Description
Opens a communication link to the K8061 card. Loads the drivers needed to communicate via the USB
port. This procedure must be performed before any attempts to communicate with the K8061 card.
Example
var CardAddress: longint;
BEGIN
CardAddress:=OpenDevice;
// Opens the link to card and returns the "CardAddress"
END;
La partie la plus intéressante étant cette partie :
Dans cette partie, je voit deux choses principales.
1 - Le nom de la fonction =>
OpenDevice
2 - Le type de la valeur de retour =>
Longint
Pour la fonction, c'est facile. Par contre pour le type de retour, il faut analyser le mot, car en AutoIt les noms sont un peut différents.
Pour moi,
Longint est la contraction de
Long et
Int. Si je regarde l'aide de DllCall,
Long et
Int sont tous deux des entiers 32 bit. Comme dans la documentation de la fonction il est précisé
LongInt, je vais considérer qu'en AutoIt il faut utiliser
Long.
Sinon, si ça ne fonctionne pas avec
Long, il faut essayer
Int.

Je pense qu'en cherchant un peut sur le forum, ce genre de chose à été discuté et les équivalences avaient été données.
Donc pour notre fonction
OpenDevice, cela devrait donner un code dans ce genre :
et qui selon la section
Result de la documentation, doit nous retourner l'adresse de la carte en cas de succès (un nombre entre 0 et 7) ou en cas d’échec -1 ou -2.
Pour la fonction
CloseDevices, c'est un tout petit peut plus compliquée ...

L'aide nous dit :
Syntax
PROCEDURE CloseDevice(CardAddress: Longint);
Donc cette fois-ci, pas de valeur de retour, mais il y a un paramètre en plus (
CardAdress) et son type.
Voici comment je "traduirais" la chose ...
Code : Tout sélectionner
$AddrCard = DllCall ( "K8061.DLL", "none", "CloseDevices", "long", $AddrCard)
Une petite dernière pour la route.

La fonction :
ReadAnalogChannel
Syntax
FUNCTION ReadAnalogChannel(CardAddress: Longint; Channel: Longint): Longint;
Parameters
CardAddress: The address of previously opened card.
Channel: Value between 1 and 8 which corresponds to the AD channel whose status is to be read.
Result
Longint: The corresponding Analogue to Digital Converter data is read.
Ici, nous avons :
1 - Nom de la fonction =
ReadAnalogChannel
2 - Paramètre 1 =
CardAddress de type
LongInt
3 - Paramètre 2 =
Channel de type
Longint
4 - Une valeur de retour de type
LongInt.
Je traduirais ceci en :
Code : Tout sélectionner
$ADCData = DllCall ( "K8061.DLL", "Long", "ReadAnalogChannel", "long", $AddrCard, "long", $Cannel)
Voilà déjà une bonne base de travail.
J'espère ne pas avoir dit de bêtises, car je suis arrivé là par simple déduction.
