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

Delphi Discussion :

Librairie RS232 ComPort


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 20
    Par défaut Librairie RS232 ComPort
    Bonjour,

    J'essaie de communiquer avec un pic16f877 par la rs232 . Mon code d'envoie de caractere delphi est le suivant :

    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
     
    procedure TForm1.Button_OpenClick(Sender: TObject);
    begin
      if ComPort.Connected then
        ComPort.Close
      else
        ComPort.Open;
    end;
     
    procedure TForm1.Button_SettingsClick(Sender: TObject);
    begin
      ComPort.ShowSetupDialog;
    end;
     
    procedure TForm1.Button_SendClick(Sender: TObject);
    var
      Str: String;
    begin
      Str := Edit_Data.Text;
      if NewLine_CB.Checked then
     
        Str := Str + #13;
      ComPort.WriteStr('Str);
     
    end;
     
    procedure TForm1.ComPortOpen(Sender: TObject);
    begin
      Button_Open.Caption := 'Close';
    end;
     
    procedure TForm1.ComPortClose(Sender: TObject);
    begin
      if Button_Open <> nil then
        Button_Open.Caption := 'Open';
    end;
     
    procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
    var
      Str: String;
    begin
      ComPort.ReadStr(Str, Count);
      Memo.Text := Memo.Text + Str;
    end;
    Mon pic attend un string avec la commande gets(buffer) avec buffer composé d'un tableau de 4 caracteres puis la touche entrée (#13).

    La reception des chaines sur le pc se passe sans aucun souci, cependant lors de l'envoie, si j'envoie un caractere cela se passe bien . Par exemple j'envoie 1 à mon pic,et je demande à mon pic de me renvoyer cette chaine donc je recois bien 1 208 208 208 (208 est l'equivalent en asci de l'espace 10 - 48 )et je peux relancer autant de fois que je veux cette manip. Cependant quand j'envoie plus d'un caractere soit 12 ou 123 ou 1234, je ne recois plus rien et je ne vois vraiment pas pourquoi... Mon pic marche trés bien en emission avec un autre logiciel (serial de y morgan) mais je souhaite utiliser (Comport Example trouvé sur le net) . Je vous remercie par avance de votre réponse

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 190
    Par défaut
    bonjour

    essaye voir d'envoyer la chaine de caractere en envoyant un caractere a la fois
    avec quelques ms de tempo entre chaque envoi

  3. #3
    Membre très actif
    Avatar de octal
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    441
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 441
    Par défaut
    Bonjour,
    avec quel language t'as programmé les routines de réception série sur ton PIC?
    De plus, est ce que tu utilise des routine SOFT pour faire du RS232 ou est ce que tu utilise l' UART HARDWARE du PIC ? parce que dans ce cas là il faut savoir que le PIC possède un buffer (en réception) de deux bytes maximum ...

    Cordialement
    Octal

  4. #4
    Membre averti
    Inscrit en
    Février 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 20
    Par défaut
    Le compilateur que j'utilise pour mon pic est ccs, les routines sont écrites en C. Pour la question du buffer, cela marche trés bien avec un autre prog donc je ne pense pas que ca vienne de la sachant que mon pic recoit bien un caractere + 3 blancs et la touche entrée.

  5. #5
    Membre très actif
    Avatar de octal
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    441
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 441
    Par défaut
    Bonjour,
    eh bien raison de plus, si ca marche avec un autre soft c'est tant mieux, mais est ce que vous utilisez le port hardware en RS232 ou une émulation soft du port série (pouvez vous juste me filer la ligne où vous déclarez votre port série... en CCS c'est la ligne avec #use232 ...).
    peut être que vous devriez insérer des delay entre chaque émission d'un caractère à partir du PC !!! Cela donnera au PIC le temps de charger et traiter les caractères !!!
    Cordialement

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Par défaut Utilise l'HyperTerminal
    Salut,

    Pour debuger ta RS232 je te conseille d'utiliser l'hyperterminal.
    C'est un utilitaire fourni par windows pour debuger les rs232. Tu le trouverras en faisant ca:
    Demarrer/Tous les programmes/Accessoires/Communication/HyperTerminal
    Ensuite tu le lances
    tu met un nom bidon tu laisse la premier icon et tu fait ok
    Ensuite tu met 'Com1' dans 'se connecté en utilisant' puis ok
    en suite tu met la paramettre de la LS: souvent c'est 9600 baud pour le debit, le reste change pas.

    En suite tu branches ta carte avec ton pic au Com1 de ton PC et si elle fonctionne bien tu devrais voir s'afficher à l'ecran de l'hyperterminal les caracteres ascii que ta carte crache.
    Si tu tape des lettre au clavier elle s'affiche pas a l'ecran mais elles sont envoyées par L'RS232 à ta carte. cette utlitaire et donc tres pratique pour tester un protocole.

    Comme ca une fois que t'es sure que ta carte marche, tu peux faire la meme chose avec ton programme delphi:
    Soit t'as 2 port serie et tu le connecte l'un a l'autre. (par exemple hyperterminal sur com1 et delphi sur com2) soit tu prends 2 PC.
    Attention, tu dois utliser un cable serie croiser.
    Comme ca tu pourras envoyer des caractere ascii a delphi et voir se qu'il te renvoie commes caractaire ascci.

    NB: tu l'as compris l'hyperteminal gere que les caracère ascii donc tu deveras tester ta carte et ton programme avec des nombres correspondant à des lettres ascii

    bonne chance

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

Discussions similaires

  1. carte fox-lx832, librairie com rs232 usb, c++
    Par lunikmarty dans le forum Embarqué
    Réponses: 8
    Dernier message: 12/12/2010, 14h52
  2. Connexion asynchrone RS232 Comport
    Par thelife dans le forum Débuter
    Réponses: 2
    Dernier message: 07/04/2010, 08h10
  3. Comportement différent d'une "librairie"
    Par Deallyra dans le forum Débuter
    Réponses: 3
    Dernier message: 25/01/2010, 12h47
  4. comportement etrange RS232 C/C++
    Par suppilou69 dans le forum C++
    Réponses: 9
    Dernier message: 03/07/2008, 11h39
  5. Réponses: 6
    Dernier message: 15/04/2008, 13h58

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