ABCelectronique : portail d'information dans le domaine de l'électronique

Merci de ne pas poster des messages en relation avec le piratage.


    Forums de Abcelectronique > Software / Péri-informatique
  » Carte Velleman K8055
Identifiant Se souvenir de moi ?
Mot de passe
Répondre     Nouvelle discussion
Carte Velleman K8055

 

manudu76
manudu76 ★★★★☆☆☆ 23/11/2017, 21h19 #1  
Bonjour,

J'ai acheté récemment une Velleman PVM110N. En ayant à mon IUT exactement la même, j'ai donc prit la dll, le header et la library qui va avec.

Je veux programmer en C.
Bon.
Je règle les options du compilateur de Code Blocks, et des Linkers.
Le programme est déjà fait et déjà vérifié, il fonctionne. Le problème c'est qu'il dit que l'accès à la carte est impossible...

Sachant que dans mon IDE tout est bon, et que mon programme aussi, que les cavaliers sont bien réglés pour choisir l'adresse de la carte, je ne comprends pas...pour moi c'est un pb de DLL mais je l'ai mis avec le fichier même, dans Windows, dans System 32 et dans Code Blocks même pour être sur, et son accès auprès de l'IDE désigne l'un d'entre eux...

Svp aidez-moi à débugger la situation....

Merci beaucoup d'avance!

PS : Ci-joint le programme en C :

//PROGRAMME TEST POUR CARTE USB K8055 ( clignotement de la sortie 1 )

#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <K8055D_C.h>


int main()
{
long test;
test= OpenDevice(3);
if(test !=3)
{
puts ("ouverture carte USB impossible!");
return 0;

}

printf("Carte USB %d ouverte\n", test);


do
{
SetDigitalChannel(2);

Sleep(500);
ClearDigitalChannel(2);

Sleep(500);
}
while(kbhit()==0);



CloseDevice();
printf("carte USB %ld fermee\n", test);
return ;
}
DAUDET78
DAUDET78 ★★★★★★★ 23/11/2017, 21h39 #2  
est ce que ta carte fonctionne avec le logiciel de test livré avec la carte ?
__________________
L'age n'est pas un handicap .... Encore faut-il arriver jusque là !
manudu76
manudu76 ★★★★☆☆☆ 23/11/2017, 21h40 #3  
Hello, Oui
Thyratron
Thyratron ★★★★★☆☆ 25/11/2017, 10h06 #4  
Posté par manudu76

Hello, Oui


Il faudrait préciser si la commande passe par un OS du style windows.
Dans ce cas, le programme doit préciser le driver utilisé pour pouvoir accéder aux ports concernés : printer, série etc.
Vérifier s'il est reconnu dans le chemin d'accès du programme.
manudu76
manudu76 ★★★★☆☆☆ 27/11/2017, 18h39 #5  
Oui, à l'IUT c'tait Win 7 et là aussi..Et là j'ai essayé sur un autre Win 7 et ... Ca écrit que la carte est ouverte mais c'est tout ... La commande ne fonctionne pas ( le programme est bon ).

Le driver ? Comment faire ?

Merci
manudu76
manudu76 ★★★★☆☆☆ 03/12/2017, 21h49 #6  
Help svp c'est important ...
Thyratron
Thyratron ★★★★★☆☆ 04/12/2017, 12h10 #7  
Posté par manudu76

Oui, à l'IUT c'tait Win 7 et là aussi..Et là j'ai essayé sur un autre Win 7 et ... Ca écrit que la carte est ouverte mais c'est tout ... La commande ne fonctionne pas ( le programme est bon ).

Le driver ? Comment faire ?

Merci


Un programme qui fonctionne sous os évolué style windows xxxx utilise une procédure d'installation qui transfère tous les modules nécessaires dans les répertoires utilisés par le programme ainsi que ses drivers.

Votre programme fait appel au driver via un source fourni par le fabricant de l'interface.
Quand le programme est compilé, il est intégré au programme.
Voir par exemple l'interface avec l'adaptateur usb développé par ftdi.

Selon l'outil de développement utilisé, il peut être intégré de différentes manières (l'auteur fournit normalement une doc sur comment intégrer une ressource).
1/ vérifier que vous disposez du driver, fichier.sys ou .inf, qu'il a été correctement installé.
2/ Pour votre développement, agir au niveau du compilateur-programme pour que la bibliothèque soit reconnue et accessible.
3/ faire des appels par les procédures/fonctions adaptés de la bibliothèque.

Dernière modification par Thyratron 04/12/2017 à 12h13.
manudu76
manudu76 ★★★★☆☆☆ 06/12/2017, 19h41 #8  
Bonjour et merci de la réponse,

pour le 1/, c'est une dll, un .h et un .lib et ils sont mis aux bons endroits
Pour le 2/, j'ai fait tout ce qui a été préconisé
pour le 3/, le programme a été testé, les appels sont bons...

Que faire ?

Merci
manudu76
manudu76 ★★★★☆☆☆ 10/12/2017, 11h47 #9  
UP svp c'est pour un projet important...
maî
maî ★★★★★☆☆ 10/12/2017, 12h48 #10  
Posté par manudu76

Le problème c'est qu'il dit que l'accès à la carte est impossible...



s'il y dit cela c'est qu'AMHA il ne trouve pas l'usb de ta carte.
Alors tu es allé voir, si
Code:
test= OpenDevice(3);
il y a bien la carte?
a+
__________________
le souffle du vent passe ...........
Thyratron
Thyratron ★★★★★☆☆ 11/12/2017, 08h45 #11  
Posté par manudu76

UP svp c'est pour un projet important...


Tout logiciel de développement propose une option debug.
Un fonctionnement pas à pas en vérifiant si les valeurs retournées sont conformes à ce qui est attendu donne un résultat plus rapidement qu'un travail collaboratif.
Ce qui permet d'introduire des avertissements vers l'utilisateur, par exemple, au lieu d'attendre quelque chose qui ne viendra pas.
manudu76
manudu76 ★★★★☆☆☆ 27/12/2017, 22h23 #12  
Hello,

Ben en fait je ne sais pas ou regarder mais il y a bien un HID Interface comme convenu ( car c'est bien dit que ca doit etre un HID) mais le port doit etre le 0003 c'est ca ?

Et je ne sais pas ce que je dois attendre si je fais cela Thyratron...

Le projet est pour dimanche, ca s'annonce trop mal..
pierrelec
pierrelec ★★★★★☆☆ 28/12/2017, 09h49 #13  
Bonjour,
Télécharge ceci: http://www.nirsoft.net/utils/usb_devices_view.html et vérifie si ta carte est bien vue par Windows.
Fichiers attachés
Type de fichier : zip K8055.zip (10,0 Ko, 11 affichages)
pierrelec
pierrelec ★★★★★☆☆ 28/12/2017, 19h10 #14  
Essaye l'exécutable ci-joint pour voir si Out1 clignote.
Fichiers attachés
Type de fichier : zip TestK8085.zip (196,4 Ko, 12 affichages)
manudu76
manudu76 ★★★★☆☆☆ 28/12/2017, 23h39 #15  
Bonjour et merci,

Oui, c'est vu et oui ça clignote.....
Ca me fait rager car moi j'arrive pas à faire ça avec mon programme....^^

Quelle est la prochaine étape? Merci!
manudu76
manudu76 ★★★★☆☆☆ 28/12/2017, 23h48 #16  
D'ailleurs OpenDevice renvoie -1 au lieu de 0 quand l'adresse est 0...
pierrelec
pierrelec ★★★★★☆☆ 29/12/2017, 08h08 #17  
Comme ta carte fonctionne avec mon programme, elle est configurée physiquement à l'adresse 0 et la fonction OpenDevice(0) doit retourner un entier long de valeur 0 quand la carte est connectée.
Donc le hard est OK, il faut chercher dans le soft.
Je ne comprend rien au C, mais quand tu écris: "test= OpenDevice(3);" ce n'est pas plutôt "test= OpenDevice(0);" ? ? ?
Tu es en Windows 7 32 bits ou 64 bits ?
En PJ, la Dll qui fonctionne chez moi sous Win XP et Win 7 64 bits
Fichiers attachés
Type de fichier : zip K8055D.zip (174,4 Ko, 10 affichages)

Dernière modification par pierrelec 29/12/2017 à 08h52.
pierrelec
pierrelec ★★★★★☆☆ 29/12/2017, 14h06 #18  
Peux tu poster une photo nette des cavaliers SK5 et SK6.
manudu76
manudu76 ★★★★☆☆☆ 29/12/2017, 15h45 #19  
Oui, lorsque je met OpenDevice(3), c'est quand je ne met pas les cavaliers.
Les cavaliers sont fonctionnels, je les ai mis pour ton test et je les ai laissés. Ca fonctionne avec ton programme mais pas avec le mien..

Là j'ai essayé avec mon Windows 8 comme j'ai 2 PC. Tu veux que j'essaie avec mon Windows 7 ?
manudu76
manudu76 ★★★★☆☆☆ 29/12/2017, 15h58 #20  
Bon, avec on Windows 7, ben ton programme ne marche pas. Il me dit de le fermer, connecter la carte et relancer le soft...
Pourtant avec Win8, no soucis...
Il est reconnu par le programme que tu m'as linké sur les deux PCS ceci dit.
pierrelec
pierrelec ★★★★★☆☆ 29/12/2017, 17h54 #21  
J'ai remarqué que tu ne déclare pas les fonctions et procédures de la DLL dont voici la liste pour Delphi:
Code:
{$R *.dfm} function OpenDevice(CardAddress: Longint): Longint; stdcall; external 'K8055d.dll'; procedure CloseDevice; stdcall; external 'K8055d.dll'; function ReadAnalogChannel(Channel: Longint):Longint; stdcall; external 'K8055d.dll'; procedure ReadAllAnalog(var Data1, Data2: Longint); stdcall; external 'K8055d.dll'; procedure OutputAnalogChannel(Channel: Longint; Data: Longint); stdcall; external 'K8055d.dll'; procedure OutputAllAnalog(Data1: Longint; Data2: Longint); stdcall; external 'K8055d.dll'; procedure ClearAnalogChannel(Channel: Longint); stdcall; external 'K8055d.dll'; procedure ClearAllAnalog; stdcall; external 'K8055d.dll'; procedure SetAnalogChannel(Channel: Longint); stdcall; external 'K8055d.dll'; procedure SetAllAnalog; stdcall; external 'K8055d.dll'; procedure WriteAllDigital(Data: Longint);stdcall; external 'K8055d.dll'; procedure ClearDigitalChannel(Channel: Longint); stdcall; external 'K8055d.dll'; procedure ClearAllDigital; stdcall; external 'K8055d.dll'; procedure SetDigitalChannel(Channel: Longint); stdcall; external 'K8055d.dll'; procedure SetAllDigital; stdcall; external 'K8055d.dll'; function ReadDigitalChannel(Channel: Longint): Boolean; stdcall; external 'K8055d.dll'; function ReadAllDigital: Longint; stdcall; external 'K8055d.dll'; function ReadCounter(CounterNr: Longint): Longint; stdcall; external 'K8055d.dll'; procedure ResetCounter(CounterNr: Longint); stdcall; external 'K8055d.dll'; procedure SetCounterDebounceTime(CounterNr, DebounceTime:Longint);


Ce qui en C donne:
Code:
int main (){ FUNCTION int __stdcall OpenDevice(int 0); FUNCTION void __stdcall SetAllDigital(); FUNCTION void __stdcall CloseDevice();

}

Tu utilises quel compilateur ?
Sinon va sur le forum de Velleman
pierrelec
pierrelec ★★★★★☆☆ 29/12/2017, 18h12 #22  
Regarde en page 14 de ce document, tu trouvera un exemple en C++.
Fichiers attachés
Type de fichier : zip MAN_FR_K8055_DLL.zip (32,9 Ko, 18 affichages)
manudu76
manudu76 ★★★★☆☆☆ 29/12/2017, 21h09 #23  
Salut,
Non pas besoin de le déclarer, en DUT je l'ai fait ( mon programme a été créé dans mon IUT et justement ca marchait...)
Je ne fais que du C pas de C++ ni Delphi...
J'uitlise CodeBlocks comme IDE
manudu76
manudu76 ★★★★☆☆☆ 30/12/2017, 01h00 #24  
Et le fofo Velleman me redirigent vers un soit disant probleme similaire mais il ne l'est pas car c'est ni le meme ide ni le meme langage...
pierrelec
pierrelec ★★★★★☆☆ 30/12/2017, 09h14 #25  
Posté par manudu76

Non pas besoin de le déclarer, en DUT je l'ai fait ( mon programme a été créé dans mon IUT et justement ca marchait...)


Ca te coûte tellement cher d'essayer de déclarer en début de programme ?
A mon avis tu es trop sur de toi, c'est pour cette raison que tu n'avance pas.
D'après les essais que nous avons fait, c'est bien ton soft qui "merd..."
manudu76
manudu76 ★★★★☆☆☆ 30/12/2017, 13h56 #26  
Ben en fait, j'ai essayé et ca me met des erreurs partout, car c'est du C++ et pas du C... Donc j'ai essayé. Mais à ce qu'on m'a dit ca vient pas du programme que j'ai écrit no di hardware ca vient de ce qu'il y a entre les deux...C'est pour ça que je galère...

Que puis-je faire ensuite ?
manudu76
manudu76 ★★★★☆☆☆ 30/12/2017, 14h02 #27  
Et pour dire, l'exemple en C++ donné juste au-dessus ne fonctionne pas chez moi...
manudu76
manudu76 ★★★★☆☆☆ 30/12/2017, 14h26 #28  
Grande nouvelle, j'ai prit l'exemple du pack de Velleman avec du C++ et là avec CodeBlocks je peux le programmer en C++ ca marche... Comment faire en C pour écrire le contenu de la dll en debut de programme?

Merci
pierrelec
pierrelec ★★★★★☆☆ 30/12/2017, 15h43 #29  
pierrelec
pierrelec ★★★★★☆☆ 02/01/2018, 07h55 #30  
Si tu as réussi à faire fonctionner ton bidule, ce serai sympa de donner la solution ici.
manudu76
manudu76 ★★★★☆☆☆ 05/01/2018, 00h08 #31  
Non, juste en C++. En C, c'est toujours pas résolu...
Répondre