Programmation VB d'une carte d'interface VELLEMAN K8000
julien76150
Messages postés17Date d'inscriptionsamedi 14 juin 2008StatutMembreDernière intervention 7 mai 2009
-
14 juin 2008 à 17:48
julien76150
Messages postés17Date d'inscriptionsamedi 14 juin 2008StatutMembreDernière intervention 7 mai 2009
-
22 mars 2009 à 14:09
Je possède une carte d'interface VELLEMAN K8000, je souhaite réaliser un programme pour la commande d'un réseau ferroviaire miniature.
Mais je rencontre un souci de programmation.
PC: Windows XP Home Edition
Log: Microsoft Visual Basic 2005 Express Edition
J'ai téléchargé et installé le programme de Test de la carte sur le site de VELLEMAN:
http://www.velleman.be/fr/fr/product/view/?id=9383 Ce petit logiciel fonctionne correctement, on peut y tester les entrées et activer les sorties.
La k8d.dll a bien été installée dans le répertoire C:\WINDOWS\system32
J'ai créé une feuille et quelques boutons dans mon projet.
Puis j'ai copié l'ensemble des déclarations qui se trouve à la fin du fichier MAN_GB
Mon problème est donc le suivant:
Lorsque je lance le débogage, l'exécution s'arrête sur la fonction:
Start_K8000 ()
Le message d'erreur suivant saffiche:
L'exception MarshalDirectiveException s'est produite.
Restriction PInvoke : impossible de retourner des variants.
Merci de bien vouloir me venir en aide...
Passion:
Projet d'automatisation d'une maquette ferroviaire à l'aide d'une carte d'interface Velleman K8000.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 14 juin 2008 à 18:03
Salut
As-tu déclaré le fichier DLL dans ton projet ? (menu Projet, Ajouter un préférence)
D'après une recherche sur le net, la fonction Start_K8000 semble renvoyer une chaine de caractères.
Essaye ce genre de syntaxe : Dim Result As String = Call_K8000
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_lermite222
Messages postés492Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention 2 juillet 20124 15 juin 2008 à 07:00
Bonjour,
Mon problème est donc le suivant:
Lorsque je lance le débogage, l'exécution s'arrête sur la fonction:
Start_K8000 ()
Le message d'erreur suivant saffiche:
L'exception MarshalDirectiveException s'est produite.
Restriction PInvoke : impossible de retourner des variants
Start_K8000 () n'est pas une fonction mais une Sub, ne renvoi donc rien (en principe)
Private Declare Sub Start_K8000 Lib "k8d.dll" ()
Private Declare Sub Stop_K8000 Lib "k8d.dll" ()
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_lermite222
Messages postés492Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention 2 juillet 20124 15 juin 2008 à 07:16
Et je me demande s'il serra possible de l'adapter en VB 2005, le kit date de + de 12 ans et les dll sont en 16bit pour windows 3.11
Je ne connais pas VB2005, qu'en pense les spécialistes ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 15 juin 2008 à 10:08
"...le kit date de + de 12 ans et les dll sont en 16bit pour windows 3.11..."
NON, il est clairement préciser dans les kits pour VB6, Delphi ou Borland C++ que c'est pour Windows NT, 2000 et XP. C'est donc obligatoirement du 32 bits.
D'ailleurs rien que le fait que ce soit pour VB6 ou Delphi suffit à indiquer que c'est du 32 bits. Ces 2 langages ne savent pas faire autre chose que du 32 bits.
---- Sevyc64 (alias Casy) ----# LE PARTAGE EST NOTRE FORCE #
julien76150
Messages postés17Date d'inscriptionsamedi 14 juin 2008StatutMembreDernière intervention 7 mai 2009 15 juin 2008 à 11:57
Merci à tous pour votre aide si rapide,
J'ai essayé vos solutions:
-Projet/Ajouter une référence
Erreur: Assurez vous qu'il s'agit d'un assembly valide ou composant COM.
-Version visual et 16/32bits:
J'ai téléchargé une source du programme de test sur le site de VELLEMAN. Lorsque je l'ai ouvert Visual a ouvert un assistant de mise à niveau puis il a généré un projet dans le répertoire choisi. Mais cette génération n'a pas bien fonctionné car en exécutant le débogage, il manquait des boutons et ceux qui étaient présent ne fonctionnaient pas.
-Age du Kit:
Je pense que ce n'est pas un souci puisqu'il est toujours commercialisé et le programme de Test existe en Windows XP donc 32Bits . Je confirme son age, j'ai acheté cette carte il y a 10ans (J'en avais 15), d'après le vendeur sa programmation était un jeu d'enfant mais pour faire ça je pense qu'il faut un minimum de connaissances. (Surtout sous DOS)
Malheureusement, je n'ai pas réussi à résoudre mon problème.
Pour faire un nouvel essai, j'ai créé un nouveau projet contenant une feuille et deux boutons. Et j'ai repris les déclarations... dans le projet que j'avais généré.
Option Explicit On
Public Class Form1
'OUTPUT PROCEDURES
Private Declare Sub ClearAllIO Lib "k8d.dll" ()
Private Declare Sub SetAllIO Lib "k8d.dll" ()
'GENERAL PROCEDURES
Private Declare Sub SelectI2CprinterPort Lib "k8d.dll" (ByVal port As Long)
Private Declare Sub Start_K8000 Lib "k8d.dll" ()
Private Declare Sub Stop_K8000 Lib "k8d.dll" ()
Private Sub Form_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
SelectI2CprinterPort(1)
Start_K8000()
End Sub
Private Sub Form_Terminate()
Stop_K8000()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SetAllIO()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
ClearAllIO()
End Sub
End Class
Lors de l'exécution les sorties ne s'activent pas mais en exécutant en "Pas à Pas" (F8) je me suis apperçu que tout semblait fonctionner correctement.
Aprés de nombreuses manipulations, je me suis apperçu que ça fonctionne uniquement lorsque le programme de test est ouvert.
Est ce normal?
Je pense que non, mon application devrait être autonome...
Auriez-vous la solution?
Passion:
Projet d'automatisation d'une maquette ferroviaire à l'aide d'une carte d'interface Velleman K8000.
cs_lermite222
Messages postés492Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention 2 juillet 20124 15 juin 2008 à 12:20
J'ai 4 cartes K8000 et j'ai le même problème, probablement un bug quelque part, mais ne l'ai jamais trouvé. (Même en VB6)
Pour contourner, j'ai pris le projet de test comme base et à la place qu'il active les contrôles de la feuille de test j'ai fait en sorte qu'il active les contrôles de mes formes.
Mais en écrivant ce message je pense à une chose, n'y aurait-il pas une référence à activer ? J'ai pas les modules brancher et sait pas tester pour le moment.
Mais évidement comme dit plus haut adapter les déclarations au VB2005
A+
julien76150
Messages postés17Date d'inscriptionsamedi 14 juin 2008StatutMembreDernière intervention 7 mai 2009 15 juin 2008 à 23:03
Oui, j'ai essayé de déclarer la dll mais il me met un message d'erreur me disant que le type n'est pas bon: "Assurez vous qu'il s'agit d'un assembly valide ou composant COM."
De toutes façon, il trouve bien la dll puisque l'instruction setAllIO( ) fonctionne bien. Je pense que c'est grace à la déclaration lib "k8d.dll" qu'il va la chercher dans system32.
J'ai renomé la dernière déclaration Long en Integer
Private Declare Sub SelectI2CprinterPort Lib "k8d.dll" (ByVal port As Long)
Mais ceci n'ai pas résolu le fait que je doive ouvrir le programme de Test pour que la com fonctionne.
Passion:
Projet d'automatisation d'une maquette ferroviaire à l'aide d'une carte d'interface Velleman K8000.
aldrac
Messages postés44Date d'inscriptionjeudi 5 janvier 2006StatutMembreDernière intervention22 janvier 20111 18 oct. 2008 à 09:49
Bonjour, je suis entrain de faire des testes pour programmer en vb 2008 ma k8000 mais je suis un peut bloqué comme toi a l' époque de tes msg...
As tu réussi? Arrives tu a controller ta k8000 avec une source de ta conception?
si oui peut tu renter en contacte avec moi:
cutprod@hotmail.fr
julien76150
Messages postés17Date d'inscriptionsamedi 14 juin 2008StatutMembreDernière intervention 7 mai 2009 11 nov. 2008 à 14:41
Ouff, je viens de faire donctionner ma K8000 pour la première foi.
Je me galère depuis le début avec une source qui ne fonctionne pas.
Pourquoi? Je ne sais pas.
J'ai pourtant copié exactement le même code dans la Form1.
Avec la première version, il fallait que le programme de Test soit ouvert en même temps.
Passion:
Projet d'automatisation d'une maquette ferroviaire à l'aide d'une carte d'interface Velleman K8000.
aldrac
Messages postés44Date d'inscriptionjeudi 5 janvier 2006StatutMembreDernière intervention22 janvier 20111 11 nov. 2008 à 18:31
De mon coté aussi plus de problème, il faut mettre dans le répertoire" bin " du projet : la dll: k8D, mais aussi la dll: DLPORTIO, le fichier .SYS du même nom,
la dll: FASTTime32,et le k8E.exe.
Si un seul de ses fichiers manquent les sources ne tournent pas!!
Merci à tous.
julien76150
Messages postés17Date d'inscriptionsamedi 14 juin 2008StatutMembreDernière intervention 7 mai 2009 21 mars 2009 à 23:03
Merci pour ta contribution aldrac ...
Pas mal ta K8000BOX, qu'est ce que tu va commander avec???
Perso, j'aurais mis des bornes ENTRELEC à la place des dominos, mais ce n'est qu'un détail ;-)
Passion:
Projet d'automatisation d'une maquette ferroviaire à l'aide d'une carte d'interface Velleman K8000.
aldrac
Messages postés44Date d'inscriptionjeudi 5 janvier 2006StatutMembreDernière intervention22 janvier 20111 22 mars 2009 à 07:58
Merci pour le compliment,
au début il était prévu que je déporte les connexions sur des bornes entrelec, mais c'est la place qui ma manqué!!
Tu as vu les photos du bornier, 180 connexions!! Le dessus du K8000Box ne pouvait pas accueillir ça en bornes.
Pour ce qui est des applications moi c'est la domotique qui m'intéresse, le k8000BOX ou le K8061 couplé à des capteurs, des détecteurs, des relais de puissance, des inters ou tout autre équipement électrique permet l'automatisation de ta maison... mais pour l'instant j'ai pas de maison alors je fais des petites applications pour mon fils, genre piloter un bras robot avec un joystique ou d'autre petites chose pour l'éveiller à la robotique , l'informatique...
Et toi ta maquette ferroviaire? Ca va?
julien76150
Messages postés17Date d'inscriptionsamedi 14 juin 2008StatutMembreDernière intervention 7 mai 2009 22 mars 2009 à 14:09
Pas mal ton idée de domotique, tu pourrais déposer un Brevet...
Conserant mon projet, j'ai réussi à faire pas mal de choses. Mais en ce moment, je manque de temps et ça avance pas trop.
J'ai acheté un KIT K8004 pour faire un essai de réglage de vitesse sur les lignes grande vitesse. Si ça se passe bien j'en achèterais d'autres pour faire un démarrage progressif dans chaque station.
@+
Passion:
Projet d'automatisation d'une maquette ferroviaire à l'aide d'une carte d'interface Velleman K8000.