Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

Contrôle d'accès - Intergraphique graphique VB



  1. #1
    levirus

    Lightbulb Contrôle d'accès - Intergraphique graphique VB


    ------

    Bonjour,

    Après un projet en électronique sur un contrôle d'accès par infrarouge, nous avons développé une interface graphique très simple pour programmer les badges par liaison série. Nous envoyons à notre PIC 18F4620 un nombre correspond au nom d'une personne, ou d'une entreprise déjà programmé dans la mémoire externe du PIC, l'EPROM. Tout fonctionne.

    Mais à l'heure où nous souhaitons optimiser cette interface par l'envoie cette fois ci d'une trame de caractères via une textbox, nous recevons sur le PIC (affichage du mot sur un afficheur) seulement la 1ère lettre inscrite dans la textbox. Nous avons essayé plusieurs codes, trouvé plusieurs projets avec des textbox à l'image du notre, mais toujours le même résultat : la première lettre apparait et pas le reste du mot.

    Je me tourne vers vous pour avoir plusieurs idées de debug...
    Voici notre code VB du bouton permettant l'envoie, avec "text4.text" la textbox.

    Private Sub Command9_Click()


    With MSComm1 'configuration du port
    If .PortOpen Then _
    .PortOpen = False 'ouverture du port
    .CommPort = 1 'On utilise le port COM1:
    '.Handshaking = 2 'RTS
    '.RThreshold = 1
    '.RTSEnable = True 'mieux pour le port COM:
    .Settings = "2400,n,8,1"
    '.SThreshold = 1
    .PortOpen = True 'ouverture du port
    .Output = Text4.Text
    .PortOpen = False 'ouverture du port


    End With

    End Sub

    De l'autre coté, notre PIC affiche la lettre recue dans l'interruption. Mais ne rentre il pas seulement une fois .. Après plusieurs recherches, n'est ce pas VB avec l'utilisation de "char, string..." qui pourrait nous debloquer.

    Je vous remercie de votre patience et de vos réponses.

    -----

  2. Publicité
  3. #2
    Tuxtronic

    Re : Contrôle d'accès - Intergraphique graphique VB

    Hello,

    si les messages échangés sont purement "ASCII affichable" et que le débit est standard (9600,19200 bit/s, n, 8, 1 par ex), le plus simple pour lever le doute consiste à utiliser un terminal de type Hyperterminal installé par défaut sur Windows XP. Pour Vista ou Seven, il faut installer par exemple "TeraTerm" (google est ton ami). Pour Linux, un coup de "Minicom" ou "GtkTerm" et c'est réglé.

    Tu verras bien si ton problème est côté PC (application VB) ou côté PIC (gestion port série ou bug dans l'affichage).
    Si ça marche avec un Terminal, ça peut aussi vouloir dire que ton PIC n'accepte pas les caractères trop "rapprochés" dans le temps et c'est un problème côté PIC. En effet, quand tu tapes les caractères dans le terminal, il y a plusieurs centaines de miliisecondes entre chaque caractère, tandis que l'application VB va te les envoyer "collés à la queue leu-leu".
    Pour lever ce doute, tu peux préparer ta commande dans un fichier texte et dans le terminal (HyperTerminal), tu peux régler lune tempo inter-caractère (je ne sais plus dans quel menu) puis faire "fichier->envoyer fichier texte". Si ça marche avec une tempo de 500ms et que ça foire avec une tempo nulle, ton problème est côté programme PIC.

    @ +,

  4. #3
    levirus

    Contrôle d'accès - Interface graphique VB

    Merci Tuxtronic de ta réponse.

    Effectivement nous essayons déjà avec l'hyperterminal. Nous recevons bien les "lettres" envoyées, mais les tests ne sont pas réalisés à la "queue leu leu". A ce moment la, depuis VB et le code de la textbox ou du bouton, n'existe t'il pas un moyen d'inclure un temporisation entre chaque lettre envoyée vers le PIC ?

    Je regarde coté PIC puisque la série de test me pousse de plus en plus vers la prog C.

    Cordialement,

  5. #4
    Tuxtronic

    Re : Contrôle d'accès - Intergraphique graphique VB

    Re,

    évidemment qu'il est possible d'introduire une tempo inter-caractère en VB, mais ça reste de la bidouille et ce n'est pas acceptable en production, sauf si ça reste un proto de démonstration, mais c'est vraiment pas glop!

    Je pense donc que le problème est dans le programme du PIC, très probablement au niveau du driver de gestion du port série (UART).
    Je ne sais pas du tout comment est fait ton programme ni comment est géré la réception des caractères (polling ou interruption).
    Si c'est en polling, ça commence assez mal...C'est faisable, mais trop de risque de louper des caractères: c'est pas glop!
    Un driver série interruptif avec fifo, c'est ce qu'il y a de mieux et de plus "propre". Il en existe des tonnes pour PIC sur le net (en C ou assembleur), suffit de chercher...

    @ +,

  6. A voir en vidéo sur Futura
  7. #5
    levirus

    Re : Contrôle d'accès - Intergraphique graphique VB

    Nous avons bien une réception sur interruption, seulement le registre de réception (RCREG) est sur 8 bits. Et donc nous sortons de l'interruption après la réception d'un caractère. Le problème étant qu'avec la transmission à la "queue leu leu" seul le premier caractère est bien reçu.
    En effet nous avons qu'une seule interruption pour toute la chaine et non une interruption entre chaque caractère de cette chaine.

    Merci encore Tuxtronic.

  8. #6
    levirus

    Re : Contrôle d'accès - Intergraphique graphique VB

    Tuxtronic,

    Après n'avoir rien trouvé de problématique au niveau de l'interruption du PIC, j'ai pris une de tes solutions concernant une temporisation sur VB, c'était bien le problème. L'envoie rapide du text sans temporisation faisait que le PIC ne voyait que une lettre par envoie de trame.
    J'en profite pour placer des limiteurs de lettre dans ma textbox, je colle ci joint le programme avec la temporisation à la suite :

    Private Sub Command9_Click()

    Dim essaie As String
    Dim counte As Integer
    Dim counte2 As Integer
    Dim TestLene As Integer

    TestLene = Len(Text4.Text)
    If TestLene > 8 Then
    counte = 8
    End If
    If TestLene <= 8 Then
    counte = TestLene
    counte2 = 8 - TestLene
    End If


    With MSComm1 'configuration du port
    If .PortOpen Then _
    .PortOpen = False 'ouverture du port
    .CommPort = 1 'On utilise le port COM1:
    '.Handshaking = 2 'RTS
    '.RThreshold = 1
    '.RTSEnable = True 'mieux pour le port COM:
    .Settings = "2400,n,8,1"
    '.SThreshold = 1
    For i = 1 To counte Step 1
    essaie = Mid(Text4.Text, i, 1)
    .PortOpen = True 'ouverture du port
    .Output = (essaie)
    Call tempo(0.1)
    .PortOpen = False 'ouverture du port
    Next i

    If counte2 > 0 Then
    For t = 1 To counte2 Step 1
    .PortOpen = True 'ouverture du port
    .Output = " "
    Call tempo(0.1)
    .PortOpen = False 'ouverture du port
    Next t
    End If

    End With

    End Sub

    Temporisation

    Sub tempo(pause)
    Start = Timer
    Do While Timer < Start + pause
    DoEvents
    Loop
    End Sub

  9. Publicité
  10. #7
    Jack
    Modérateur

    Re : Contrôle d'accès - Intergraphique graphique VB

    Si le jury du projet remarque cette temporisation, tu vas te faire allumer (en tout cas moi, j'allumerais). Il n'y a aucune raison pour que ça ne fonctionne pas sans cette tempo. Il y a un truc que tu ne fais pas bien dans ta fonction de gestion de l'interruption sur caractère reçu.

    Ce programme doit être le plus court possible. Idéalement, il doit stocker le caractère reçu dans le buffer de réception de la trame au 1er emplacement libre et "réarmer" le mécanisme de génération d'interruption sur la réception d'un nouveau caractère. Je ne sais pas comment c'est fait sur un PIC, mais il suffit de faire retomber un flag soit directement, soit par lecteur d'un registre en général.

    A+

  11. #8
    alainav1

    Re : Contrôle d'accès - Intergraphique graphique VB

    bonjour,
    j'envisage l'interfacage d'un pic avec mon pc
    j'ai deja bricolé en basic v6 dans une vie enterieur (en entreprise ) et je bricole les pic
    connaissez vous un basic freeware utilisant les fonctions port serie que vous utilisez ?
    mon besoin est ludic donc je souhaiterai dun freware
    cordialement
    Alain
    Décider de faire, c'est bien . Décider quand, c'est mieux !

  12. #9
    Jack
    Modérateur

    Re : Contrôle d'accès - Intergraphique graphique VB

    Citation Envoyé par alainav1 Voir le message
    bonjour,
    j'envisage l'interfacage d'un pic avec mon pc
    j'ai deja bricolé en basic v6 dans une vie enterieur (en entreprise ) et je bricole les pic
    connaissez vous un basic freeware utilisant les fonctions port serie que vous utilisez ?
    mon besoin est ludic donc je souhaiterai dun freware
    cordialement
    Alain
    visual basic express edition.
    Mais si la discussion devait se prolonger à ce sujet, il serait bon d'en créer une nouvelle.

    A+

  13. #10
    alainav1

    Re : Contrôle d'accès - Intergraphique graphique VB

    message bien reçu
    ce renseignement me suffit pour l'instant
    je vais d'abord me documenter sur ce sujet avant d'ouvrir éventuellement un autre post
    si cela s'impose
    cordialement
    Alain
    Décider de faire, c'est bien . Décider quand, c'est mieux !

  14. #11
    Tuxtronic

    Re : Contrôle d'accès - Intergraphique graphique VB

    levirus,

    imagine que ta carte soit vendue dans le commerce et que les messages de commande soient spécifiés dans le manuel utilisateur. Si le client décide de se créer une interface graphique non plus sous Windows, mais sous Linux parce que c'est le système d'exploîtation qu'il utilise préférentiellement.

    Ce client va par exemple utiliser Gambas (http://gambas.sourceforge.net/fr/main.html) qui est l'équivalent de VB mais pour Linux.
    Il est certain qu'il ne va pas placer de tempo inter-caractère et ça ne marchera pas. Bilan: un client mécontent et surtout il considérera que le développeur de la carte est un rigolo puisqu'il envoie les bonnes commandes au bon format, au bon débit, etc... et que ça ne marche pas.

    Voilà, entre autre, pourquoi il faut que tu te débrouilles pour que ça marche sans tempo. Il faut corriger le driver UART côté PIC sinon, c'est un cache-misère!

    @ +,

Discussions similaires

  1. [Info] Recherche de contrôle d'accès compatible KNX
    Par Tact dans le forum Dépannage
    Réponses: 0
    Dernier message: 24/02/2012, 17h38
  2. Besoin d'aide en conception de contrôle d'accès
    Par kurokawa dans le forum Électronique
    Réponses: 2
    Dernier message: 13/02/2010, 11h54
  3. controle d'acces
    Par 405gld dans le forum Électronique
    Réponses: 1
    Dernier message: 03/01/2007, 20h54
  4. lecteur de carte magnetique pour controle d'acces
    Par soudara dans le forum Électronique
    Réponses: 1
    Dernier message: 16/12/2006, 17h36
  5. Controle d'accès, Interphone.
    Par Hobbyelec dans le forum Dépannage
    Réponses: 3
    Dernier message: 27/11/2006, 16h53
Découvrez nos comparatifs produits sur l'informatique et les technologies.