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 :

Affichage de données reçues sur un port série: problème de type


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Points : 20
    Points
    20
    Par défaut Affichage de données reçues sur un port série: problème de type
    Bonjour,

    J'ai une carte avec des interrupteurs communicant avec un port com.
    Je veux savoir ce qu'envoie cette carte quand j'appuie sur un des interrupteurs, pour cela je relie la carte à l'ordinateur via un port com et j'ai écrit le code suivant sur vb6 qui est censé lire les données d'un port com:
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Private Sub Form_Load()
    With MSComm1
    .CommPort = 1
    .Handshaking = 2
    .RThreshold = 1
    .RTSEnable = True
    .Settings = "9600,N,8,1"
    .SThreshold = 1
    .PortOpen = True
    End With
    Text1.Text = ""
    End Sub
     
    Private Sub Form_Unload(Cancel As Integer)
    MSComm1.PortOpen = False 'on ferme le port quand l'appli quitte
    End Sub
     
    Private Sub MSComm1_OnComm()
    Dim InBuff As String
     
    Select Case MSComm1.CommEvent
    ' On effectue la gestion des erreurs (cf. le modèle ci-dessus)
     
    'liste des erreurs possibles
    Case comEventBreak 'On a reçu un signal d’interruption (Break)
    Case comEventCDTO ' Timeout de la porteuse
    Case comEventCTSTO ' Timeout du signal CTS (Clear To Send)
    Case comEventDSRTO ' Timeout du signal de réception
    Case comEventFrame ' Erreur de trame
    Case comEventOverrun ' Des données ont été perdues
    Case comEventRxOver ' Tampon de réception saturé
    Case comEventRxParity ' Erreur de parité
    Case comEventTxFull ' Tampon d’envoi saturé
    Case comEventDCB ' Erreur de réception DCB (jamais vu)
     
    'liste des événements possibles qui sont, eux, normaux
    Case comEvCD 'Changement dans la broche CD (porteuse)
    Case comEvCTS 'Changement dans broche CTS
    Case comEvDSR 'Changement dans broche DSR (réception)
    Case comEvRing 'Changement dans broche RING (sonnerie)
     
    Case comEvReceive
          tampon = MSComm1.Input
          Call Traitement(tampon) 'traitement données
     
    End Select
    End Sub
     
    Sub Traitement(tampon As String)
    'cette procédure sert à traiter l’information reçue dans le tampon
         Text1.SelStart = Len(Text1.Text)
         Text1.SelText = tampon 'ici, on affiche le résultat dans un champ de texte
    End Sub
    A la compilation, j'ai l'erreur: Type d'argument ByRef incompatible, avec tampon dans Call Traitement(tampon) surligné.

    Auriez-vous une idée de quoi il s'agit?

    Petite précision: j'ai besoin de lire ces données pour pouvoir envoyer les mêmes après avec le clavier de l'ordinateur. J'ai donc besoin de savoir sous quelle forme je les reçois, en gros je veux remplacer les interrupteurs par le clavier.

    Merci

  2. #2
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Bonjour,

    tu as bien déclaré ta variable tampon en tant que String quelquepart ?
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Points : 20
    Points
    20
    Par défaut
    j'ai essayé comme ça:
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Private Sub Form_Load()
    With MSComm1
    .CommPort = 1
    .Handshaking = 2
    .RThreshold = 1
    .RTSEnable = True
    .Settings = "9600,N,8,1"
    .SThreshold = 1
    .PortOpen = True
    End With
    Text1.Text = ""
    End Sub
     
    Private Sub Form_Unload(Cancel As Integer)
    MSComm1.PortOpen = False 'on ferme le port quand l'appli quitte
    End Sub
     
    Private Sub MSComm1_OnComm()
    Dim InBuff As String
    Dim tampon As String
    Select Case MSComm1.CommEvent
    ' On effectue la gestion des erreurs (cf. le modèle ci-dessus)
     
    'liste des erreurs possibles
    Case comEventBreak 'On a reçu un signal d’interruption (Break)
    Case comEventCDTO ' Timeout de la porteuse
    Case comEventCTSTO ' Timeout du signal CTS (Clear To Send)
    Case comEventDSRTO ' Timeout du signal de réception
    Case comEventFrame ' Erreur de trame
    Case comEventOverrun ' Des données ont été perdues
    Case comEventRxOver ' Tampon de réception saturé
    Case comEventRxParity ' Erreur de parité
    Case comEventTxFull ' Tampon d’envoi saturé
    Case comEventDCB ' Erreur de réception DCB (jamais vu)
     
    'liste des événements possibles qui sont, eux, normaux
    Case comEvCD 'Changement dans la broche CD (porteuse)
    Case comEvCTS 'Changement dans broche CTS
    Case comEvDSR 'Changement dans broche DSR (réception)
    Case comEvRing 'Changement dans broche RING (sonnerie)
     
    Case comEvReceive
          tampon = MSComm1.Input
          Call Traitement(tampon) 'traitement données
     
    End Select
    End Sub
     
    Sub Traitement(tampon As String)
    'cette procédure sert à traiter l’information reçue dans le tampon
         Text1.SelStart = Len(Text1.Text)
         Text1.SelText = tampon 'ici, on affiche le résultat dans un champ de texte
    End Sub
    et ça ne marche pas non plus

  4. #4
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 087
    Points : 16 666
    Points
    16 666
    Par défaut
    Citation Envoyé par mah00 Voir le message
    j'ai essayé comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim tampon As String
    ...........
    Case comEvReceive
          tampon = MSComm1.Input
          Call Traitement(tampon) 'traitement données
    ..........
    Sub Traitement(tampon As String)
    'cette procédure sert à traiter l’information reçue dans le tampon
         Text1.SelStart = Len(Text1.Text)
         Text1.SelText = tampon 'ici, on affiche le résultat dans un champ de texte
    End Sub
    et ça ne marche pas non plus
    Toujours la même erreur ?
    C'est curieux car chez moi cela fonctionne en typant la variable, mais j'ai le même premier message d'erreur si elle n'est pas typée.
    essais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Traitement(ByVal tampon As String)
    'cette procédure sert à traiter l’information reçue dans le tampon
         Text1.SelStart = Len(Text1.Text)
         Text1.SelText = tampon 'ici, on affiche le résultat dans un champ de texte
    End Sub
    Citation Envoyé par MSDN pour Sub, instruction
    ByVal Facultatif. Indique que l'argument est passépar valeur.
    ByRef Facultatif. Indique que l'argument est passépar référence. ByRef est l'option par défaut dans Visual Basic.
    là tu n'auras pas de problème même si tu ne type pas la variable dans la sub MSComm1_OnComm()

    A propos ...
    Dans la discussion Lecture écriture RFID, les informations que je t'ai fournis t'ont elles servis ?
    pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Points : 20
    Points
    20
    Par défaut
    ah là je n'ai plus l'erreur, c'est déjà un bon signe!
    Mais bon je n'ai rien qui apparaît dans mon textbox.

    Sinon dans le post précédent, ben c'est pareil, il me dit: erreur à la lecture du périphérique de communication.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Points : 20
    Points
    20
    Par défaut
    ah, je viens de régler le problème de connexion avec le programme que j'ai récupéré sur ta page.

    je ne sais pas pourquoi mais rien qu'en lançant le programme, il y à plein de chose qui sont émises sur le port com et je ne sais pas ce que c'est pour l'instant.

    Pour être plus clair, j'ai une platine de swtich connectée à cette maquette.

    Mon but final est d'envoyer des infos avec le clavier de l'ordinateur à la place des switchs pour coder les tags RFID. Pour l'instant mon gros problème est que je ne sais pas du tout comment ces deux morceaux communiquent et j'essaye juste d'envoyer des octects en binaire pour voir ce que ça donne

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/09/2014, 19h59
  2. Réponses: 7
    Dernier message: 18/07/2011, 17h34
  3. affichage des données reçus sur le port série
    Par chitane87 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 14/06/2011, 07h10
  4. [Visual C#] Données reçues d'un port série
    Par levalp dans le forum Windows Forms
    Réponses: 14
    Dernier message: 11/02/2008, 16h28
  5. [javax.comm] Envoyer des données sur le Port série
    Par deuspi dans le forum Applets
    Réponses: 2
    Dernier message: 29/08/2006, 09h40

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