Aide : VB -Carte d'interface

PhantomT1412 Messages postés 28 Date d'inscription jeudi 18 octobre 2012 Statut Membre Dernière intervention 18 octobre 2012 - 3 mars 2010 à 14:00
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 - 25 mars 2010 à 07:57
Bonjour, on réalise actuellement une platine mobile de webcam pour notre PPE (Projet Personnel Encadré) en classe, et ça consiste à faire pivoter une platine (avec la webcam dessus) dans un sens ou un autre selon la touche qu'on appuie sur le clavier (ne nous en demandez pas l'intérêt, on a pas fixé le cahier des charges). Logiquement, on a pris les flèches pour ça.

On a essayé de faire un programme nous-même, et on a aussi demandé à un informaticien. Voilà ce que ça donne : http://www.megaupload.com/?d=GJ7FE2TZ
(le "simple" c'est celui qu'on a fait)

Et on aurait voulu avoir de l'aide pour savoir comment lier les commandes aux sorties logiques de la carte d'interface qui va commander le moteur. Voici le contenu du CD de la carte d'interface : http://www.megaupload.com/?d=2C8X1YXA

Je vous remercie d'avance

47 réponses

PhantomT1412 Messages postés 28 Date d'inscription jeudi 18 octobre 2012 Statut Membre Dernière intervention 18 octobre 2012
5 mars 2010 à 17:21
Up !
0
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
5 mars 2010 à 20:47
Ce fichier n'est présentement pas disponible.
dasn ton code y'a rien sur la carte, incompréhensible pour une aide efficasse
dsl
0
PhantomT1412 Messages postés 28 Date d'inscription jeudi 18 octobre 2012 Statut Membre Dernière intervention 18 octobre 2012
9 mars 2010 à 13:41
Oui il n'y encore aucun instruction de la carte , pour la simple raison que je suis HYPER débutant en programmation , et que je ne sais pas trop comment procéder . C'est pour cela que je sollicitait votre aide !
Sur le fichier MU ya 2 fichiers comme expliqué plus haut et je ne sais pas lequel est le mieux : celui fait par un amis informaticien me parait bizarre , mais après je ne sais pas ....
Ce que je demandais c'était déjà de me dire lequel des 2 programme qui reconnait les touches est le meilleur et ensuite de m'aider a démarrer pour mettre les instruction de la carte d'interface .
0
PhantomT1412 Messages postés 28 Date d'inscription jeudi 18 octobre 2012 Statut Membre Dernière intervention 18 octobre 2012
9 mars 2010 à 13:47
a oui j'ai aussi trouvé ce site , je ne sais pas si il peut nous etre utile : http://pagesperso-orange.fr/logoplus/logoplus_et_les_ports_USB.htm

PS : pour ceux qui ont peur d'un virus dans le fichier , je colle le contenue des deux programme dans le Post :

Programme fais par moi :

Public Class Form1
Dim a As String

Private Sub test_keys(ByVal sender As Object, ByVal e As KeyEventArgs) Handles Me.KeyDown
'La Fonction du teste des bouton fleches du clavier
Select Case e.KeyCode
Case Keys.Left
' ici tu peux mettre le code pour faire tourné a gauche
Label8.Text = "Tu as utiliser la touche : Gauche"
Case Keys.Right
' ici tu peux mettre le code pour faire tourné a droite
Label8.Text = "Tu as utiliser la touche : Droite"
Case Else
Label8.Text = "Touche Erronée"
End Select
End Sub
Private Sub key_up(ByVal sender As Object, ByVal e As KeyEventArgs) Handles Me.KeyUp
'La Fonction du teste des bouton fleches du clavier
Label8.Text = "Tu utilise aucune touche"
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Start()
End Sub

Private Sub Label8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label8.Click

End Sub
End Class

Programme fais par l'ami informaticien :

Public Class Form1
Dim a As String


Private Sub test_keys(ByVal sender As Object, ByVal e As KeyEventArgs) Handles Me.KeyDown
'La Fonction du teste des bouton fleches du clavier

If e.KeyCode <> Keys.Left And e.KeyCode <> Keys.Right Then
Label8.Text = "Utilisez flêches Gauche ou Droite !"
Else
' MsgBox(e.KeyCode)
Select Case e.KeyCode
Case Keys.Left
' ici tu peux mettre le code pour faire tourné a gauche
Label8.Text = "Tu appuis sur la flèche Gauche"
Case Keys.Right
' ici tu peux mettre le code pour faire tourné a droite
Label8.Text = "Tu appuis sur la flèche Droite"

Case Else
Label8.Text = "Touche Erronée"
End Select

End If

End Sub
Private Sub key_up(ByVal sender As Object, ByVal e As KeyEventArgs) Handles Me.KeyUp
'La Fonction du teste des bouton fleches du clavier
' Label8.Text = "Tu n'utilises aucune touche"
If e.KeyCode <> Keys.Left And e.KeyCode <> Keys.Right Then
Label8.Text = "Utilisez flêches Gauche ou Droite !"
Else
' MsgBox(e.KeyCode)
Select Case e.KeyCode
Case Keys.Left
' ici tu peux mettre le code pour faire tourné a gauche
Label8.Text = "Relaché la flèche Gauche"
Case Keys.Right
' ici tu peux mettre le code pour faire tourné a droite
Label8.Text = "Relaché la flèche Droite"

Case Else
Label8.Text = "Tu utilise aucune touche"
End Select

End If

End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Start()
End Sub

Private Sub Label8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label8.Click

End Sub
End Class
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
9 mars 2010 à 17:01
Donc si traduit, tu cherches à piloter une carte VM110 avec les touches du clavier.
Bien, je ne suis pas sur que tu es besoin d'un timer, la form récupére aussi les évenements keypress et keydown.
Je te fais un exemple dés que j'ai 5minutes avec et sans carte VM110.
++
0
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
9 mars 2010 à 17:30
Public Class Form1

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
'
Select Case e.KeyCode
Case Keys.Left
' ici tu peux mettre le code pour faire tourner a gauche
Me.Text = "Tu appuis sur la flèche Gauche"
Case Keys.Right
' ici tu peux mettre le code pour faire tourner a droite
Me.Text = "Tu appuis sur la flèche Droite"
Case Else
Me.Text = "test clavier by adn"
End Select

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Text = "test clavier by adn"
End Sub


End Class

tiens voila ce que j'écrirais @++
0
PhantomT1412 Messages postés 28 Date d'inscription jeudi 18 octobre 2012 Statut Membre Dernière intervention 18 octobre 2012
9 mars 2010 à 17:44
Merci beaucoup a toi !!!!!!

Mais la ou je bloque pas mal , c'est que je veut que :

quand j'appuie sur la touche gauche je veut que :

( Ici je veut utiliser 2 sorties analogiques )

sortit 1 envoie un signal logique qui est 1
sortit 2 envoie un signal logique qui est 0

quand j'appuie sur la touche gauche je veut que :

sortit 1 envoie un signal logique qui est 0
sortit 2 envoie un signal logique qui est 1

quand j'appuie sur une touche autre que droite et gauche ou que je n'appuie sur aucune touche je veut que :

sortit 1 envoie un signal logique qui est 0
sortit 2 envoie un signal logique qui est 0

Je ne sais pas si ce que j'ai dit est clair ; si cela ne l'ai pas dit le moi .

PS : Le codage de la carte est disponible ici => http://www.velleman.eu/downloads/0/u...055_dll_fr.pdf

ou aussi ici => http://pagesperso-orange.fr/logoplus..._ports_USB.htm
0
PhantomT1412 Messages postés 28 Date d'inscription jeudi 18 octobre 2012 Statut Membre Dernière intervention 18 octobre 2012
9 mars 2010 à 17:46
0
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
9 mars 2010 à 19:16
A part les fautes de francais j'ai bien compris ton besoin et sache que je maitrise parfaitement le code des VM110 (regarde mes sources)
Sauf que :
( Ici je veut utiliser 2 sorties analogiques )
sortit 1 envoie un signal logique qui est 1
sortit 2 envoie un signal logique qui est 0

il est impossible d'avoir une sortie logique pour une sortie analogique

Donc soit tu veux passer à 1 ou 0 une sortie logique sur appui d'une touche, soit tu veux modifier la valeur (de 0 à 255) d'une des deux sorties analogique de la carte.

@ te lire ++
0
PhantomT1412 Messages postés 28 Date d'inscription jeudi 18 octobre 2012 Statut Membre Dernière intervention 18 octobre 2012
9 mars 2010 à 20:34
Désolé , c'est la fin de journée et mon cerveau n'est plus en pleine forme !

Alors je me re-concentre et j'arrête de marquer des bêtises !

Donc effectivement ce n'est pas des sorties analogique que je veut , mais des sorties Logique ( je sais pas pourquoi j'ai marqué analogique tout a l'heure )

Donc si tu maitrise bien cette carte , et que tu désire me donner un petit coup de main ; et bien la tu devient mon dieu

Si tu accepte , je ne sais pas du tout comment tu veut procéder , directement ici ou par messagerie instantané ?

Merci a toi !
0
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
10 mars 2010 à 08:13
C'est simple, il suffit de déclarer la carte VM110, et ensuite d'activer ou non la sortie désiré à la place du changement de texte de mon code précédent, lis une de mes sources (regarde dans mon profil pour les trouver et essaye de comprendre)
Si tu bloques je te débloque, c'est la seul façon d'apprendre. Ou alors je fais tout et tu me files ton diplome .

++
0
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
10 mars 2010 à 08:18
0
PhantomT1412 Messages postés 28 Date d'inscription jeudi 18 octobre 2012 Statut Membre Dernière intervention 18 octobre 2012
10 mars 2010 à 10:51
Merci a toi ,

Je vais voir ce que je peut faire et je te tient au courant .
0
PhantomT1412 Messages postés 28 Date d'inscription jeudi 18 octobre 2012 Statut Membre Dernière intervention 18 octobre 2012
10 mars 2010 à 11:49
Alors j'ai fais quelque chose, mais j'ai quand même quelques questions et un léger problème : tout d'abord pour les commandes de démarrage de la carte il y a un problème, mais je ne trouve pas lequel! De plus, j'ai aussi mis pas mal de commentaires sur certaines commandes où j'ai des doutes.

Je te fais un petit copié collé :

Public Class Form1

#Region "déclaration de la DLL"
    Private Declare Function OpenDevice Lib "k8055d.dll" (ByVal CardAddress As Integer) As Integer
    Private Declare Sub CloseDevice Lib "k8055d.dll" ()
    Private Declare Sub Version Lib "k8055d.dll" ()
    Private Declare Function SearchDevices Lib "k8055d.dll" () As Integer
    Private Declare Function SetCurrentDevice Lib "k8055d.dll" (ByVal CardAddress As Integer) As Integer
    Private Declare Function ReadAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer) As Integer
    Private Declare Sub ReadAllAnalog Lib "k8055d.dll" (ByRef Data1 As Integer, ByRef Data2 As Integer)
    Private Declare Sub OutputAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer, ByVal Data As Integer)
    Private Declare Sub OutputAllAnalog Lib "k8055d.dll" (ByVal Data1 As Integer, ByVal Data2 As Integer)
    Private Declare Sub ClearAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer)
    Private Declare Sub SetAllAnalog Lib "k8055d.dll" ()
    Private Declare Sub ClearAllAnalog Lib "k8055d.dll" ()
    Private Declare Sub SetAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer)
    Private Declare Sub WriteAllDigital Lib "k8055d.dll" (ByVal Data As Integer)
    Private Declare Sub ClearDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer)
    Private Declare Sub ClearAllDigital Lib "k8055d.dll" ()
    Private Declare Sub SetDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer)
    Private Declare Sub SetAllDigital Lib "k8055d.dll" ()
    Private Declare Function ReadDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer) As Boolean
    Private Declare Function ReadAllDigital Lib "k8055d.dll" () As Integer
    Private Declare Function ReadCounter Lib "k8055d.dll" (ByVal CounterNr As Integer) As Integer
    Private Declare Sub ResetCounter Lib "k8055d.dll" (ByVal CounterNr As Integer)
    Private Declare Sub SetCounterDebounceTime Lib "k8055d.dll" (ByVal CounterNr As Integer, ByVal DebounceTime As Integer)
#End Region

    OpenDevice(CardAddress=0) 'Quand je branche ma carte et que je regarde sur le logiciel de test de la carte c'est la carte numéro 0

    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        '
        Select Case e.KeyCode
            Case Keys.Left

                SetDigitalChannel(1)
                WriteAllDigital(11111111) 'Je ne sais pas si c'est en héxadécimal ou en binaire.
                'ClearAllDigital() => Je ne sais pas si je dois mettre cette commande, car si je ne la met pas j'ai peur que la commande reste en permanance
                'et si je le met j'ai peur que la commande soit instantanné 

                Label8.Text = "Tu appuis sur la flèche Gauche"

            Case Keys.Right

                SetDigitalChannel(2)
                WriteAllDigital(11111111) 'Je ne sais pas si c'est en héxadécimal ou en binaire.
                'ClearAllDigital() => Idem que pour au dessus

                Label8.Text = "Tu appuis sur la flèche Droite"

            Case Else

                SetDigitalChannel(1 And 2)
                WriteAllDigital(0) 'Je ne sais pas si c'est en héxadécimal ou en binaire.
                'ClearAllDigital() => Idem que pour au dessus

                Label8.Text = "Clavier erroné"
        End Select

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Text = "Test Clavier par Adn"
    End Sub

    CloseDevice

End Class


PS : je te remercie vraiment énormément de m'aider un peut dans cette galère; et je vais passer mon diplome tout seul :p
Je te demande juste de me corriger et aussi me décoincer! Sachant que mes professeurs ne sont pas capables de la faire... (la formation des professeurs de l'éducation national n'est pas forcement toujours très au point).
0
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
10 mars 2010 à 12:52
1-place ton closedevice dans le form1_close :
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If connect = True Then
            ClearAllDigital() ' a faire avant de fermer la carte ^^
            ClearAllAnalog()
            CloseDevice() ' et enfin on ferme la carte
        End If
    End Sub ' a la fermeture du programme (en fait de la form) on ferme tout (surtout les sorties ;) )


2-connecte toi comme cela :
            Dim status As Integer = OpenDevice(0) 'adresse de la carte en 0
            If status = -1 Then 'opendevice retourne l'adresse si OK et -1 si NOK
                connect = False
            Else
                connect = True
                Me.Text = " Gestion d'une carte VM110 par timer .: en ligne :. "
            End If


3-active les sorties comme cela :
SetDigitalChannel(i) passe à 1 et ClearDigitalChannel(i) passe à 0 ou i est le numéro (int) de la sortie 1 à 8

Allez au boulot ;)
++
0
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
10 mars 2010 à 12:53
Arf j'ai pas vu, ton code de connexion à la carte n'est pas dans une procédure !
tout le close device ^^
tu n'a pas le droit d'écrire cela ! il faut qu'une fonction ou une méthode soit dans un événement, form load, bp_click, ....etc.
0
PhantomT1412 Messages postés 28 Date d'inscription jeudi 18 octobre 2012 Statut Membre Dernière intervention 18 octobre 2012
10 mars 2010 à 13:32
Je suis entrain de voir ce que je peut faire avec tout cela; mais y a juste apparemment la commande connect qui n'est pas déclaré? J'ai sûrement du faire une erreur. Et je suis entrain de chercher un code pour afficher l'image de la webcam sur le programme.

Je fais un copier coller des que j'ai fini.
0
PhantomT1412 Messages postés 28 Date d'inscription jeudi 18 octobre 2012 Statut Membre Dernière intervention 18 octobre 2012
10 mars 2010 à 13:47
J'ai fais cela :

Public Class Form1

#Region "déclaration de la DLL"
    Private Declare Function OpenDevice Lib "k8055d.dll" (ByVal CardAddress As Integer) As Integer
    Private Declare Sub CloseDevice Lib "k8055d.dll" ()
    Private Declare Sub Version Lib "k8055d.dll" ()
    Private Declare Function SearchDevices Lib "k8055d.dll" () As Integer
    Private Declare Function SetCurrentDevice Lib "k8055d.dll" (ByVal CardAddress As Integer) As Integer
    Private Declare Function ReadAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer) As Integer
    Private Declare Sub ReadAllAnalog Lib "k8055d.dll" (ByRef Data1 As Integer, ByRef Data2 As Integer)
    Private Declare Sub OutputAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer, ByVal Data As Integer)
    Private Declare Sub OutputAllAnalog Lib "k8055d.dll" (ByVal Data1 As Integer, ByVal Data2 As Integer)
    Private Declare Sub ClearAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer)
    Private Declare Sub SetAllAnalog Lib "k8055d.dll" ()
    Private Declare Sub ClearAllAnalog Lib "k8055d.dll" ()
    Private Declare Sub SetAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer)
    Private Declare Sub WriteAllDigital Lib "k8055d.dll" (ByVal Data As Integer)
    Private Declare Sub ClearDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer)
    Private Declare Sub ClearAllDigital Lib "k8055d.dll" ()
    Private Declare Sub SetDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer)
    Private Declare Sub SetAllDigital Lib "k8055d.dll" ()
    Private Declare Function ReadDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer) As Boolean
    Private Declare Function ReadAllDigital Lib "k8055d.dll" () As Integer
    Private Declare Function ReadCounter Lib "k8055d.dll" (ByVal CounterNr As Integer) As Integer
    Private Declare Sub ResetCounter Lib "k8055d.dll" (ByVal CounterNr As Integer)
    Private Declare Sub SetCounterDebounceTime Lib "k8055d.dll" (ByVal CounterNr As Integer, ByVal DebounceTime As Integer)
#End Region

    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown

        Dim status As Integer = OpenDevice(0) 'adresse de la carte est 0

        If status = -1 Then 'opendevice retourne l'adresse si OK et -1 si pas OK
            connect = False
        Else
            connect = True
            Me.Text = " Gestion d'une carte VM110 .: en ligne :. "
        End If



        Select Case e.KeyCode
            Case Keys.Left

                SetDigitalChannel(1)
                ClearDigitalChannel(2)

                Label8.Text = "Tu appuis sur la flèche Gauche"

            Case Keys.Right

                SetDigitalChannel(2)
                ClearDigitalChannel(1)

                Label8.Text = "Tu appuis sur la flèche Droite"

            Case Else

                ClearDigitalChannel(1 And 2)

                Label8.Text = "Clavier erroné"
        End Select

    End Sub


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Text = "Test Clavier par Dimitri VINCENT"
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If connect = True Then
            ClearAllDigital()
            ClearAllAnalog()
            CloseDevice()
        End If
    End Sub ' 

End Class

0
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
10 mars 2010 à 17:21
perdu Dimitri VINCENT

ClearDigitalChannel(1 And 2)
utilise clearalldigital !

fonction connect dasn le form load, tu ne vas tout de même pas te connecter à chaque appui sur une touche ?
de plus si la carte est déja connecté il te renverra une erreur (-1)

evite de poster ton nom sur un forum, et tant que tu y es cite plutôt celui qui à pondu le code et non pas celui qui le recopie

reflechi aussi pour finir à ta gestion des sorties, ici il suffit que j'appui sur une fléche pour la webcam tourne en rond tant que je n'appui pas sur une autre touche, c'est pas trés pratique non ?
0
PhantomT1412 Messages postés 28 Date d'inscription jeudi 18 octobre 2012 Statut Membre Dernière intervention 18 octobre 2012
10 mars 2010 à 17:50
Dsl pour le non je n'est pas fais expret , surtout que c'est pas mon non , mais celui de mon camarade ! Je ne sais pas pourquoi il a mis son nom

Ne t'inquiète pas je sais bien que c'est bien toi Adn56
qui m'a aidé a réaliser ce programme !

Je modifie et je te dit après .
0
Rejoignez-nous