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 :

TapdComPort données reçues tronquées


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur DELPHI
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur DELPHI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Points : 55
    Points
    55
    Par défaut TapdComPort données reçues tronquées
    Bonjour,

    J'utilise l'événement "onTriggerAvail" pour lire les données reçues sur un port COM.

    J'utilise une autre application pour envoyer une chaine de caractères sur le port COM que je surveille. Mais je ne reçois pas la totalité du message.

    Voici le code source :
    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
    procedure TForm4.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
    var
      I : Word;
      C : AnsiChar;
      S : String;
    begin
      S := '';
      for I := 1 to Count do begin
        C := ApdComPort1.GetChar;
        case C of
          #0..#31 : {Don't display} ;
          else S := S + C;
        end;
      end;
      memo1.Lines.Add(S);
    end;
    Merci pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 : 13 447
    Points : 24 846
    Points
    24 846
    Par défaut
    Pourquoi n'utilises-tu pas le paramètre CP ?
    Il est toujours plus prudent d'utiliser le Sender d'un Event qu'un membre global !

    Quel Delphi 2009, XE ? Très Important !

    Utilise plutôt le TCOMPort, il est plus populaire dans la communauté Développez !
    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

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur DELPHI
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur DELPHI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Points : 55
    Points
    55
    Par défaut
    Je suis sous D2010.

    Je ne vois pas comment je peux utiliser le paramètre CP ?

    Je n'ai rien réussi à faire avec le composant "TcomPort", les exemples fournis ne fonctionnent pas.

    Mon chef ma recommandé le composant "TapdComPort".

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 : 13 447
    Points : 24 846
    Points
    24 846
    Par défaut
    CP c'est le Sender, il est en général du type du composant !
    Très utile si l'on affecte le même gestionnaire à plusieurs instances !
    Dans ton cas, je pense que CP sera égale à ApdComPort1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm4.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
    begin
     
      ...
      if CP is TapdComPort then
      begin
        with TapdComPort(CP) do
        begin
     
        end;
      end;
    end;
    Sinon "TForm4", pense à donner des noms pertinents pour les élements de ton projet !

    Si ton chef connait le composant, demande le lui !
    Ton code est exactement celui de la FAQ, si il ne fonctionne pas, pas de chance !
    Peut-être un problème lié au Bit d'Arrêt, la parité du port COM ...

    Citation Envoyé par curt25 Voir le message
    Je n'ai rien réussi à faire avec le composant "TcomPort", les exemples fournis ne fonctionnent pas.
    Ah ?
    Je l'ai utilise pour la première fois, il y a un mois, cela a fonctionné du 1er coup, je n'avais pas l'appareil, j'ai code à l'aveugle, j'ai file le programme à ma collègue, ça fonctionnait nickel !
    Je suis passé par le TComDataPacket cela nécessite un STX\ETX !
    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

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur DELPHI
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur DELPHI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Points : 55
    Points
    55
    Par défaut
    Merci pour ta réponse.

    Je vais explorer tes pistes !
    Mon chef ne comprend pas, tout comme moi, pourquoi on a ce problème.

    "Tform4", c'est normal, c'est juste un projet de test indépendant pour tester la fonction de façon isolée.

    Merci pour ton aide.

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur DELPHI
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur DELPHI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Points : 55
    Points
    55
    Par défaut
    Rien y fait, toujours le même problème.

    Je continue à creuser !

    je suis ouvert à vos propositions.

    Merci

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur DELPHI
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur DELPHI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Points : 55
    Points
    55
    Par défaut
    J'ai trouvé la source de mon problème.

    En réalité c'est une erreur d'émission de données.

    J'utilisais le composant "TzylAISreceiver" pour envoyer mes données.
    Or j'avais un souci de type entre "String" et "AnsiString". Du coup mon message était entravé de caractère "#0".

    Merci de votre aide ShaiLeTroll.

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 : 13 447
    Points : 24 846
    Points
    24 846
    Par défaut
    Ma question "Quel Delphi 2009, XE ? Très Important !"
    N'était pas un hasard ! tout le monde se fait avoir avec l'Unicode !

    C'était surement le même problème avec TComPort comme dans ce sujet de la semaine dernière : petit problème de configuration où je conseille d'éviter les fonctions typées string mais d'utiliser les fonctions en buffer non typé !

    Ou même dans ce sujet TCP\IP : #0 obligatoire avec winsock ?


    pense au bouton
    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

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur DELPHI
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur DELPHI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Points : 55
    Points
    55
    Par défaut
    Oui, surtout que ce n'est pas la première fois que je fait surprendre mais là j'ai mis le temps avant de m'en apercevoir !

    Merci

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

Discussions similaires

  1. Datagrid > Formatage des données reçues par PHP
    Par purple21 dans le forum Flash
    Réponses: 3
    Dernier message: 28/06/2007, 11h33
  2. Données reçues par port ethernet
    Par Akeon dans le forum C++Builder
    Réponses: 2
    Dernier message: 20/12/2006, 17h53
  3. Filtrer les données reçues
    Par cryborg dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 20/07/2006, 16h36
  4. [TComPort] Analyse des données reçues avec ReadStr
    Par chourmo dans le forum Langage
    Réponses: 4
    Dernier message: 22/06/2005, 14h12
  5. [Indy TCPClient] Recupérer le données reçues
    Par fandor7 dans le forum Web & réseau
    Réponses: 8
    Dernier message: 29/06/2003, 21h52

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