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

C++Builder Discussion :

Pb sur TComPORT par rs232


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 17
    Par défaut Pb sur TComPORT par rs232
    Bonjour j ai de nouveau un probleme avec leTComport...


    En fait je relie le port COm a un telephone portable. Ce dernier m envoie une chaine de caractere . Si au bout d un certain temps je n ai pas repondu.. il me renvoit une autre ....

    J ai essayé de faire une boucle du genre:
    static boolean aquisition_com2_en_cours=false;

    if (aquisition_com2_en_cours==false)
    {
    aquisition_com2_en_cours=true;

    temps_com2_deb=toto.CurrentDateTime();
    temps_com2_fin= toto.CurrentDateTime();
    ReceptionCOM2_en_cours="";
    while ((temps_com2_fin-temps_com2_deb)*24*60*60*1000<300.0)
    {
    if (ComPort2->InputCount()>0)
    {
    ComPort2->ReadStr(temp,ComPort2->InputCount() );
    ReceptionCOM2_en_cours=ReceptionCOM2_en_cours+temp;
    temps_com2_deb=toto.CurrentDateTime();
    }

    temps_com2_fin= toto.CurrentDateTime();


    ou 300 correpondait je pensais au temps en ms sec .Cela marchotte.. mais je n ai pas a 100 % une trame complete sans coupure...


    En fait pour shematiser
    je penser que c etait un truc du genre:
    AA BB CC EE
    GG UU DD ZZ

    Entre AA et BB je partais de l hypothese que le temps etait tres petit et qu entre EE et GG plus long (300 ms)

    En fait je recois la trame sous la forme:

    AA BB CC EE GG
    UU DD ZZ

    En resumé je n arrive pas a detecer la fin dereception pour analuyser ma trame

    Quelqu un a des idees??
    J ai pensé a utilisé OnRxBuf... mais je ne sais pas comment faire il me dit property not compatible.....


    merci

  2. #2
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Salut,
    Sur ce composant il existe l'evennement OnRxChar, qui se lance dès la réception d'un caractère sur le port COM.
    Cet évènement te donne un char* contenant les octets recu, et Count, le nombre d'octet dans cette chaine.
    C'est peut être plus simple pour toi d'utiliser cet évènnement.

    Sinon, ta fonction pourrait être utilisé dans un thread pour scruter en permanance le port COM, mais je te conseil l'évennement donné.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 17
    Par défaut
    salut bandy.....
    le code que tu vois ci-dessosu est mis ds la fonction que tu m as dit
    void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int Count)
    {
    AnsiString Phrase2;
    AnsiString Recu,temp,reception_com1;


    mais ca marche pas..... j arrive pas a detecter une trame d une autre.. c est pour ca que j ai essayé de me basé sur les tempo.....entre deux trames..

  4. #4
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Ton protocole de communication n'intègre pas un début de trame, une fin de trame ou alors une longueur ? Voir un checksum pour une vérification de données ?

    Si tu connais ton protocole, il doit avoir moyen de faire la différence entre 2 trames.

    Ton problème est que tes trames ne sont jamais complète, c'est bien ca ? Ce n'est pas un problème hardware?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 17
    Par défaut
    non je ne connais pas le protocole en complet pour l instant vu que je suis obligé d espiopnner et de voir ce qui arrive... conclusion je suis bloqué entre 2 trames.
    La seule info est que j ai et le temps. Entre deux trames j ai un temps donné tres petit...

  6. #6
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Si tu es sur que tu tombes entre 2 trames (tu doit donc connaître un minimum de choses sur ce protocol donc) et que ton problème est le Temps, je ne te conseil pas d'utiliser le TComPort, mais d'utiliser les API Windows et de faire un thread.

    Avec cette solution, tu ne pourra pas aller plus vite que Windows sur ton PC en fonction de ton code.

Discussions similaires

  1. Pointeur sur NULL par défaut en parametre.
    Par KernelControl dans le forum Débuter
    Réponses: 3
    Dernier message: 15/12/2005, 10h09
  2. lire les données sur un port RS232
    Par xave dans le forum Langage
    Réponses: 6
    Dernier message: 06/10/2005, 16h40
  3. Programmer un automate par RS232
    Par wael khalil dans le forum Langage
    Réponses: 6
    Dernier message: 25/08/2005, 16h02
  4. liste déroulante. positionnement sur valeur par défaut
    Par mathieu_r dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 28/06/2005, 15h45
  5. Imprimer une dans un ".bat" sur Imp. par défaut (M
    Par argoet dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 19/11/2004, 09h53

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