IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Recevoir "NULL" sur port série [Trucs & Astuces]


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Recevoir "NULL" sur port série
    Bonjour,

    Dans le cadre d'un projet, je communique avec un automate via le port série du PC. L'envoi des données s'effectue sans problème mais à la réception il me manque les caractères "00" en héxa. Est-il possible de les récupérer?

    PS : J'utilise le code fourni dans le tuto du site

  2. #2
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Il te manque tous les 0 ou que ceux qui terminent chaque trame :
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Il me manque le "00" HEXA qui a pour code ascii "0" et ce partout dans ma trame. J'espionne ma liaison et les 0 transitent bien mais c'est lorsque je veux récupérer ma trame sur le port COM que je n'arrive pas a les lire.

  4. #4
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Comment traites-tu les données de ta trame :
    Es-tu sûr de ne pas ignorer les 0 :
    Un bout de code peut-être :
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  5. #5
    Futur Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     
    Private Sub MSComm1_OnComm()
     
    Dim i As Integer
    Dim InBuff As String
    Select Case MSComm1.CommEvent
     
    Case comEvReceive
        'MsgBox "on recoit"
     
            tampon = MSComm1.Input
     
     
          Call Traitement(tampon) 'traitement données
          'Char2Hexa (MSComm1.Input)
    End Select
     
    End Sub
     
    Sub Traitement(tampon As String)
     
    'cette procédure sert à traiter l’information reçue dans le tampon
        rtb2.SelStart = Len(txtRecu.Text)
        rtb2.SelText = tampon
        cmpt = cmpt+1
     
    End Sub
    J'ai rajouté un compteur dans la procédure de traitement pour voir combien de fois il intervenait et j'obtiens le meme nombre que j'ai de caractères au final. C'est comme si les 0 étaient ignorées. Par contre mon automate me les renvoie bien puisque je les vois grace a l'espion.

  6. #6
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Si tu ne fais qu'afficher les données reçues en chaine de caractères, il est normal que les 0 n'apparaissent pas...
    C'est à toi de déterminer si tu veux obtenir des chaines de caractères ou bien des tableaux d'octets...
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  7. #7
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    En VB soit on interprète les données reçues en tant que chaines de caractères soit en tant que tableau d'octets (que l'on peut ensuite traiter en tant que bits).
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  8. #8
    Futur Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Merci pour vos réponses les gars, HPJ t'aurait un exemple pour réceptionner en tableau d'octets?

    Merci d'avance

  9. #9
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Met la propriété InputMode de ton contrôle MsComm à la valeur comInputModeBinary.
    Puis fais une petite recherche, je pense qu'on doit avoir ça en stock, sinon regarde l'exemple de l'aide de la propriété InputMode
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  10. #10
    Futur Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    Dim tampon as String
     
    Private Sub MSComm1_OnComm()
     
    Case comEvReceive
        'MsgBox "on recoit"
     
            tampon = MSComm1.Input
     
            Bin2Hex (tampon) 'traitement données
     
    End Select
    End Sub
     
    Public Function Bin2Hex(ByVal sBin As String) As String
    Dim i As Integer
    Dim nDec As Long
     
    sBin = String(4 - Len(sBin) Mod 4, "0") & sBin
    For i = 1 To Len(sBin)
    nDec = nDec + CInt(Mid(sBin, Len(sBin) - i + 1, 1)) * 2 ^ (i - 1)
    Next i
    Bin2Hex = Hex(nDec)
    If Len(Bin2Hex) Mod 2 = 1 Then Bin2Hex = "0" & Bin2Hex
     
    txtTout.SelText = Bin2Hex
     
    End Function
    J'ai bien mis la propriété InputMode à Binary et du coup je ne recois plus que des 0!

    Pourtant avec mon mouchard je vois bien les trames passer... Je sais plus quoi faire la??

  11. #11
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Normal tu récupères le contenu de ton tampon binaire dans une variable de type String...
    As-tu lu l'exemple de l'aide VB :
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  12. #12
    Futur Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    J'ai effectivement lu le tutoriel sur MSComm...

    J'ai changé mon tampon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim tampon as Variant
    mais ca ne change rien

  13. #13
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Bon je te donne un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Dim tampon() As Byte
     
    Private Sub MSComm1_OnComm()
     
        Case comEvReceive
            'MsgBox "on recoit"
     
                tampon = MSComm1.Input
     
                MsgBox Tab2Hex(tampon)
     
        End Select
     
    End Sub
     
    Public Function Tab2Hex(tableau() As Byte) As String
     
        Dim i As Integer
        Dim s As String
     
        s = ""
     
        For i = LBound(tableau) To UBound(tableau)
     
            s = s & Right("0" & Hex(tableau(i)), 2) & " "
     
        Next i
     
        Tab2Hex = Trim(s)
     
    End Function
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  14. #14
    Futur Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Merci mais je n'ai toujours pas de 00.

    La trame que je recois : 0B09B336

    La trame que je devrais recevoir : 0B0000000000000009B336

    PS: Je recois deux boites message la première avec 0B, l'autre avec 09B336

  15. #15
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Alors il doit y a voir une propriété du composant qui doit permettre de ne pas ignorer les valeurs nulles...
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  16. #16
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    NullDiscard
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  17. #17
    Futur Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    J'avais déjà la propriété NullDiscard à true

    Je sais plus quoi faire la...

  18. #18
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Citation Envoyé par WinY57
    J'avais déjà la propriété NullDiscard à true
    Justement il faut la mettre à False
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  19. #19
    Futur Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Ca marche merci HPJ

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] lecture sur port série
    Par Iokanaan dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/05/2005, 13h50
  2. Etat de CTS sur port série
    Par Juste_Une_IlluZion dans le forum C++Builder
    Réponses: 9
    Dernier message: 12/09/2004, 10h46
  3. [Débutant] Réception sur port série
    Par Tophe59 dans le forum Langage
    Réponses: 43
    Dernier message: 28/06/2004, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo