Page 1 sur 1

[R] Exploitation de dll d'une carte automate

Posté : dim. 12 déc. 2010 20:02
par cutprod
Bonjour a tous, pour des applications perso je me sers de carte automate type "VM140".
Jusqu'ici je développer mes application sous VB2008, j'aimerais en réaliser avec Autoit.
La carte nécessite deux dll = "mpusbapi.dll et K8061.dll" (fournis avec la carte).
Je n'ai pas de base pour l'utilisation des dll avec autoit, si vous pouviez m'orienter sur un tuto ou un truc simple...
Voila une source qui tourne sous VB2008 que j'aimerai refaire avec Autoit =
► Afficher le texte
Pour ceux que ca intéresse voila la carte en question =
http://sites.google.com/site/brikop/k8061-1
Ayant galérer pour apprendre a utiliser ces cartes, j' avais fait ce site il y'a quelque années pour aider les débutants a exploiter leur cartes...

Re: [..] Exploitation de dll d'une carte automate

Posté : dim. 12 déc. 2010 23:12
par cutprod
Je peux vous donner les deux dll et aussi le "manuel" (avec des exemples pour appeler les différentes fonctions de ces dll et cela dans différents langages),je sais m'en servir en vb, mais c'est avec autoit que j'ai du mal!!
J'ai bien essayer plein de truc avec l'aide : des "DllCall", des "DllOpen", mais je tâtonne sans trop savoir...ca peut durer un moment...
Si ca peut vous aider!(a m'aider :lol: )

Re: [..] Exploitation de dll d'une carte automate

Posté : lun. 13 déc. 2010 21:16
par cutprod
He bin ,mince alors!!
Je vous ai vexé, j'ai dit quelque chose qui fallait pas?
J'ai même pas droit a un ptit : "cherche mieux...";"regarde la", ou encore "va poster ta vielle question toute bidon sur le forum anglais..."
Vous me boycotter ou quoi? :?

Re: [..] Exploitation de dll d'une carte automate

Posté : lun. 13 déc. 2010 21:40
par Tlem
Il arrive parfois, qu'on ne sache pas quoi dire ... :roll:

Re: [..] Exploitation de dll d'une carte automate

Posté : lun. 13 déc. 2010 21:53
par cutprod
Ha je comprend!!
Une impression au moins?, un ressentit, une vague idée d'une possible direction?
De votre part Tlem cela m'étonne!! Remarque les fête de noëls arrivent...
Ok, je comprend j'insiste pas! Mais alors juste pour le fun:
Dit moi un "Ici on peut rien faire pour toi, va voir sur le forum anglais"
...Je sais pas pourquoi j'ai besoin qu'on me pousse moi :|
Il est tard là non?
Je vais me coucher, et demain j' apprend a parler anglais...

Re: [..] Exploitation de dll d'une carte automate

Posté : lun. 13 déc. 2010 22:09
par bloodwolff
What are you waiting for ask your stupid question on http://www.autoitscript.com/forum/ ?

Re: [..] Exploitation de dll d'une carte automate

Posté : lun. 13 déc. 2010 22:22
par cutprod
Ho yes of course why I did not think of before?

Re: [..] Exploitation de dll d'une carte automate

Posté : lun. 13 déc. 2010 23:58
par Tlem
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 :

Code : Tout sélectionner

DllCall ( "dll", "return type", "function")
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 :

Code : Tout sélectionner

Syntax
FUNCTION OpenDevice: Longint;
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. :roll:
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. :mrgreen:

Donc pour notre fonction OpenDevice, cela devrait donner un code dans ce genre :

Code : Tout sélectionner

$AddrCard = DllCall ( "K8061.DLL", "long", "OpenDevice")
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 ... :roll:
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. 8)

Re: [..] Exploitation de dll d'une carte automate

Posté : mar. 14 déc. 2010 07:32
par cutprod
Je te remercie pour ces "bases" qui vont me permettront, je n'en doute pas, d'avancer un peu!!
Merci pour avoir fais "le petit effort" de m'aider Tlem, c'est très cool de ta part.
Je teste apres le boulot et je te tiens au courant :D

Re: [..] Exploitation de dll d'une carte automate

Posté : ven. 17 déc. 2010 18:35
par cutprod
[A] comme abandon!!
J'y arrive pas, je patauge dans la semoule et j'ai pas le temps en ce moment!
Donc fermeture!! Et je continuerai a me servir de VB2008 pour faire tourner mes cartes.
Merci a Tlem d'avoir essayer de m'aider :D , t'es cool!

Re: [R] Exploitation de dll d'une carte automate

Posté : ven. 17 déc. 2010 20:53
par Tlem
C'est quand même dommage d'abandonner si près du but ...
Et sur le fofo Anglais, pas de nouvelle ?

Re: [R] Exploitation de dll d'une carte automate

Posté : sam. 18 déc. 2010 08:39
par cutprod
Oui c'est dommage, j'ai un peu honte :oops:
Alors on va dire comme standby!
J'ai pas le temps en moment, mais des que possible je reprend les testes, et je post sur le fofo anglais!!

Re: [R] Exploitation de dll d'une carte automate

Posté : sam. 18 déc. 2010 16:59
par bloodwolff
Tu peux toujours m'ajouter skype et on verra se qu'on peut faire à 2 !

Re: [R] Exploitation de dll d'une carte automate

Posté : sam. 18 déc. 2010 19:25
par bloodwolff
Contrat réussit , même si je devrais apprendre à être meilleur prof ! :lol:

Re: [R] Exploitation de dll d'une carte automate

Posté : sam. 18 déc. 2010 22:27
par cutprod
Ha oui!! Je confirme :D :D
J'ai contacter bloodwolff par skype, et il ma expliquer pas a pas comment faire tourner ma carte avec Autoit!!
Merci mille fois :wink:
Super Québécois a encore frappé!!
Et Bien sur Tlem avait encore vu juste le premier car les fonctions de ma dll s'appellent bien comme il me l'avais dit, mais je bloquais sur des petits détails (qui on souvent une importance majeure!!) genre la fonction qui connecte ma carte :lol:
Je vais mettre tout ca au propre et je posterai un script rassemblant les principales fonctions, ca servira surement un jour a quelqu'un d'autre....
Vraiment Autoit réserve des bonne surprises, je suis bien content d'avoir découvert ce soft...
Merci encore a tous pour votre aide :D