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

Composants VCL Delphi Discussion :

TComDataPacket Trame reçue


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Par défaut TComDataPacket Trame reçue
    Bonjour,

    Je souhaite utiliser ce composant pour ma liaison série RS232 en complément de mon composant TComport. Comment dois-je faire pour récupérer dans un Edit ou autre ma trame reçue ?

    D'avance merci

  2. #2
    Membre confirmé
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Par défaut
    J'ai réussi à récupérer ma trame avec un ComTerminal(sans passage à la ligne automatique), le souci c'est que lorsque je veux récupérer ma trame reçu dans un Mémo, au bout du 14ème caractère, retour à la ligne automatique

    J'utilise ce morceau de code pour copier ma trame reçu dans mon Mémo:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.ComDataPacket1Packet(Sender: TObject; const Str: String);
    begin
         Memo1.Lines.Add('Rec: '+Str);
    end;
    Merci d'avance pour vos conseils précieux

  3. #3
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 101
    Par défaut
    Si ta trame ne contient ni #10 ni #13, c'est WordWrap qui est à true et que ton mémo est trop petit pour afficher plus de 14 caractères sur une ligne ?
    Soit agrandi le mémo, tu auras le problème plus tard
    Soit passe WordWrap à false, cela sera définitivement résolu
    Pense à la ScrollBar aussi !

    Un petit conseil, fouille un peu plus dans l'aide ou les tutoriel TComPort avant de poser des questions !
    La 1ère c'est bien, tu as trouvé la réponse, preuve qu'il n'était pas utile d'en poser une !
    WordWrap est le dernier membre de TMemo, tu aurais certe passé du temps à le trouver dans l'aide mais tu aurais au passage découvert un tas de propriété !
    C'est comme cela que l'on apprend !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Par défaut
    Merci pour ta réponse rapide mais...
    Mon WordWrap est bien à False et mon mémo est suffisamment grand. J'ai essayé avec RichEdit (même cas qu'avec le Mémo) et Edit1 (j'ai la dernière ligne)

    Normalement, ma trame est de ce type:
    >1D2;€2X0=00[Dè

    Mais à partir du 14ème caractères, que ce soit cette trame ou une autre: retour ligne et qui me donne:

    >1D2;€2X0=00[

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Par défaut
    Je pourrais rajouter que j'utilise Comport et Comterminal (celui-ci m'affiche correctement la trame) mais je ne sais pas comment récupérer la trame que j'ai envoyée. Ce qui me faciliterais la tâche tout en sachant que je dois exporter toutes trames émises et reçues dans un fichier texte.

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 101
    Par défaut
    Pense que Lines.Add ajoute un retour charriot, si tu reçois >1D2;€2X0=00[ et Dè séparément (deux appels à OnPacket)

    tu obtiens ?
    Code com : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >1D2;€2X0=00[
    ou
    Code com : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Rec: >1D2;€2X0=00[
    ou
    Code com : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Rec: >1D2;€2X0=00[
    Rec: Dè

    Utilise Pos pour vérifier si tu n'as pas #13 ou #10 dans ta chaine !

    Lorsque je copie colle ta chaîne, j'ai un caractère "carré" entre €2 et X0 !
    C'est étrange !

    Version de ton Delphi 3 à 2007 ou 2009/2010/XE
    Attention avec 2009+, pense que c'est de l'Unicode pour le type String !
    Je n'ai jamais utilisé le TComPort et J'ignore encore plus comment fonctionne TComPort avec l'Unicode, j'ai toujours préféré l'utilisation de array of byte, c'est tellement plus fiable qu'une string !
    tu devrais utiliser OnRxChar et Read (normalement fonctionne en octet et non en char)

    Sinon Windows founi "Microsoft Comm Control 6.0" de mscomm32.ocx (élement du HyperTerminal et des éléments redistribuables de Microsoft Visual Basic 6.0)
    C'est le composant que l'on utilise où je travaille actuellement pour la gestion du Port COM
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Par défaut
    J'obtiens la troisième solution:

    Rec: >1D2;€2X0=00[
    Rec: Dè


    et lorsque j'utilise un label, je n'obtiens que . La première partie de la trame envolée

Discussions similaires

  1. Trame reçue en plusieurs étapes
    Par cyclopsnet dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 22/05/2014, 11h43
  2. Affichage automatique des trames reçues des SMS
    Par bm1990 dans le forum Débuter
    Réponses: 3
    Dernier message: 16/07/2012, 16h01
  3. VB6 et Mscomm Problème dans la Trame Reçue Modbus
    Par mat-tech dans le forum Automation
    Réponses: 13
    Dernier message: 01/10/2008, 19h55
  4. VB6 et Mscomm Problème dans la Trame Reçue Modbus
    Par mat-tech dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 29/09/2008, 17h46
  5. Réponses: 2
    Dernier message: 26/09/2007, 16h45

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