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

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    juin 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2005
    Messages : 10
    Points : 7
    Points
    7

    Par défaut Reception de trame avec Tcomport

    Bonjour


    j'utilise le composant Tcomport 3.0 sous Delphi 2005. Merci a vous pour Delphi2005 personnel et merci Nono40 pour l'installation du composant sous D 2005

    Je communique avec divers equipements par le port série du PC. Le dialogue est de type "maitre-esclave", l'applicatif PC envoie une trame et l'equipement repond. J'utilise l'évenement OnRxChar pour recuperer les données rentrantes dans le PC.

    Les trames recues sont de longueurs variables et ne possedent pas de caratères d'entête ni de fin (TcomDataPacket inutilisable).
    Le maximum de caratères recues au declenchement de OnRxChar ("count" renvoyé) est de 8 est ceci quelque soit la vitesse de communication.
    Lorsque je reçoi des trames de longueur superieur a 8 je dois attendre "un peu avant" d'aller lire le port avec 'ReadStr' et lui passer un nombre de caratères superieur à 8 , par exemple 'ReadStr(DatasRecues,13)', pour recup ma trame complète. Ceci n'est pas vraiment satisfaisant, si je ne connais pas la longueur de la trame attendue mon bricolage tombe a l'eau.
    Y aurait il un paramètre de Tcomport qui me permettrait de recup une trame compète, ou peut on modifier cette valeur de 8 caratères maximum?

    Je pensais a quelque chose dans le genre :
    Tant que des caratères arrivent dans un intervalle de temps donné (fonction de la vitesse de communication) ils sont considérés comme appartenant à la meme trame et un evenement n'est généré que lorsque l'intervalle de temps sera ecoulé à la suite d'un caratère.

    Je ne suis pas persuadé de la clarté de mon post
    Si besoin je reformulerai cela a tête reposée, apres une bonne nuit de sommeil.


    Par avance merci, bonne soirée

    Amaz

  2. #2
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2003
    Messages : 613
    Points : 667
    Points
    667

    Par défaut

    Si j'ai tout compris, je te dirais qu'il te suffit de mettre un timer. A chaque fois que tu reçois quelque chose, tu le réinitialises et tu concatènes les caractères lu dans une variable tampon. Ce timer représente le temps entre deux trames. A chaque fois qu'il arrive au bout, tu copies le contenu de la variable tampon dans une autre variable et tu effaces la variable tampon. Ainsi, à la prochaine réception, la variable tampon sera vide, et représentera une nouvelle trame.

    C'est ça, ou j'ai rien compris ?
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    juin 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2005
    Messages : 10
    Points : 7
    Points
    7

    Par défaut

    Bonjour

    Ta solution est plus elegante que la mienne est surtout moins 'bloquante', j'utilisait un sleep avant d'aller lire le port. Je pensais qu'il etait possible qu'un paramètre du composant me permette de le faire.

    Merci pour la reponse rapide et efficace.

    Salutations

    Amaz

  4. #4
    Membre confirmé Avatar de badr
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    décembre 2004
    Messages
    529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : décembre 2004
    Messages : 529
    Points : 511
    Points
    511

    Par défaut

    vous communiqué avec qoi?
    et si un autre poste qui as crée le prog de l'autre coté
    si une apareil, normalement chaque apareil a un protocol(langeur de donnée caractére de début et de fin)
    si c'est vous qui as consut ces apareil alors pourqoi pas leur donnée un protocol

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    juin 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2005
    Messages : 10
    Points : 7
    Points
    7

    Par défaut

    Bonsoir

    Les logiciels des equipements reliés au PC par le port serie ont des caractéristiques qui ne sont pas modifiables, certains communiquent par trame avec caratères de debut et de fin (dans ce cas j'utilise TcomDataPacket ) d'autres pas.

    J'ai fait tourner avec la solution de MD, pas de soucis ca roule

    Salutations

    Amaz

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mai 2005
    Messages : 98
    Points : 67
    Points
    67

    Par défaut

    alors n'oublie pas la mention résolu ^^

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    juin 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2005
    Messages : 10
    Points : 7
    Points
    7

    Par défaut

    bonsoir

    Je fais desuite

    Salutations

    Amaz

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

Discussions similaires

  1. Reception d'une trame avec port com (threads ?)
    Par vinowan dans le forum VB.NET
    Réponses: 11
    Dernier message: 13/10/2011, 11h26
  2. Envoyer des trames avec le composant TComPort
    Par allinfo dans le forum Débutant
    Réponses: 4
    Dernier message: 04/12/2009, 16h32
  3. Lire une trame avec TcomPort
    Par makroute dans le forum C++Builder
    Réponses: 4
    Dernier message: 14/04/2008, 09h22
  4. Reception série avec TComPort
    Par Revan777 dans le forum C++Builder
    Réponses: 9
    Dernier message: 04/06/2007, 13h52
  5. Reception avec Tcomport
    Par web-angel dans le forum C++Builder
    Réponses: 16
    Dernier message: 27/01/2004, 16h20

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