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 :

Problème pour piloter le port série avec TComPort


Sujet :

Composants VCL Delphi

  1. #1
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut Problème pour piloter le port série avec TComPort
    Bonjour
    J'ai un ptit soucis avec l'utilisation du composant Tcomport.
    En fait je souhaite dans un projet VCL piloter le port série de mon pc (recevoir des données) sous delphi 2005 version personnelle. Pour cela j'ai récupérer et installé le composant Tcomport et j'ai essayé d'écrire un programme (en m'inspirant d'un cours trouvé sur ce site).
    Le programme est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure TForm1.OnRXchar(Sender: TObject; Count: Integer);
    Var Chaine:String;
    begin
      ComPort1.ReadStr(Chaine,Count);
      Memo1.Lines.Text := Memo1.Lines.Text + Chaine;
    end;
    D'apres ce que j'ai compris (ca vaut ce que ca vaut car je débute ), ce programme devrait récupérer tous les caractères se présentant sur la ligne Rx du port série.

    Quelqu'un pourrait me dire ce qu'il ne va pas dans ma démarche car lorsque je présente des niveaux sur Rx, je n'arrive pas à les récupérer dans mon mémo?
    Dois-je au préalable ouvrir mon port?
    Enfin éclairez moi car il parait que l'utilisation de TComport et simple mais moi je galere grave .
    Merci d'avance a tous ceux qui auront pris la peine de lire ces lignes.

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 879
    Points : 11 377
    Points
    11 377
    Billets dans le blog
    6
    Par défaut
    oui, tu dois initialiser ComPort1 et l'ouvrir

    pour voir si tu passes bien dans l'événement OnRxChar, tu peux y faire un Beep(); ou un ShowMessage(IntToStr(Count));

  3. #3
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut
    J'ai essayé de mettre le showmessage dans l'évennement OnRxChar et celui-ci ne s'exécute pas.
    alors avant événement OnRxChar il faut que j'ouvre mon port.
    Il suffit d'écrire par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     procedure TForm1.boutton1click(.......)
       begin 
          ComPort1.open; 
       end;
    J'ai bien compris?
    En ce qui concerne la configuration du port je le fais directement en cliquant sur le composant Tcomport (tu présices le port, la vitesse de transmission....)

  4. #4
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut
    Je suis désespéré....................

    J'ai essayé comme tu m'as dit tourlourou mais ca ne marche toujours pas.
    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
         ComPort1.open;            //ouverture du port     
    end;
     
    procedure TForm1.onrxchar1(Sender: TObject; Count: Integer);
    var
      chaine: string;
    begin
        Edit1.Text:= 'ok2';   // pour vérifier que l'événement se présente       
        ComPort1.ReadStr(chaine,Count);   //lecture du port 
        Memo1.Lines.Text:= Memo1.Lines.Text+chaine;   //affichage
    end;
    Donc apres ouverture du port (par appui sur un bouton poussoir) je présente un mot binaire sur la ligne mais je n'arrive pas a l'afficher dans le mémo. L'évennement OnRxChar ne se présente meme pas car l'affichage du "ok2" dans le TEdit ne marche pas.

    Je suis perdu.......;

  5. #5
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 879
    Points : 11 377
    Points
    11 377
    Billets dans le blog
    6
    Par défaut
    regarde comment le port est réglé pour le contrôle de flux
    ça a pê une incidence sur les événements déclenchés et la manière de lire

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 141
    Points : 78
    Points
    78
    Par défaut
    Salut,
    je débutes aussi sur Delphi mais voici ce que je fais pour utiiliser le port COM.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    comport1.connected:=true; // ouverture de port, équivaut à comport.open ?
    Comport1.Timeouts.ReadTotalConstant := 1000;//tu lis pendant 1 sec
    comport1.ClearBuffer(true,false);  //tu effaces ce que t'as en buffer en réception mais pas ce que t'as en émission ou inversemment ?
    ComPort1.ReadStr( tramerecu ,10); // 10 = nombre d'octets attendus
    showmessage(tramerecu);
    si ça peut t'aider... moi aussi je me suis arraché les cheveux sur le port série. Utilises un logiciel (portmon) espionnant les ports de ton PC, ça peut aider...
    bon courage
    Seb

  7. #7
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut A
    re (me revoila )

    J'ai donc essayé ton programme chourmo mais je n'arrive toujours pas a récupérer ma donnée sous DELPHI.

    Voici la configuration de mon port (tcomport):
    port: COM1
    vitesse: 9600 baud
    donnée sur: 8 bits
    bit de stop: 1
    bit de parité: none
    controle du flux (hardware sofware none custom)

    En ce qui concerne le controle de flux je les ai tous essayé mais sans succes. Au fait a quoi conrrespondent ces différents types de contrôle?

    La donnée envoyée sur le port série est un signal carré qui est mis en forme par un pic (pour respecter la norme RS232).

    Je ne comprend vraiment pas comment faire?

    Au fait, j'ai placerton code dans un évennement "OnRxChar", qui normalement se "déclenche" lorsque un bit de start se présente sur la ligne RX de la RS232.

    Voila, donc je suis toujours désespéré

Discussions similaires

  1. pilote de port série pour le noyau Linux
    Par Nanoucha dans le forum Autres éditeurs
    Réponses: 0
    Dernier message: 14/09/2007, 05h04
  2. [VB.NET] problème pour piloter une appli. excel 2003
    Par Pynuch dans le forum Windows Forms
    Réponses: 13
    Dernier message: 16/11/2005, 13h02
  3. Communication Kit Velleman K8063 par port série et TComport
    Par carotreger dans le forum Composants VCL
    Réponses: 16
    Dernier message: 07/11/2005, 21h11
  4. Comment écouter un port série avec flash ?
    Par Alex01 dans le forum Flash
    Réponses: 11
    Dernier message: 07/10/2005, 16h11
  5. quel est le Meilleur language pour piloter le port serie ?
    Par flyfab dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 21/07/2003, 10h03

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