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 :

[TComPort] gestion des évenements


Sujet :

Composants VCL Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 28
    Points : 25
    Points
    25
    Par défaut [TComPort] gestion des évenements
    Bonjour,

    Je développe une application de communication avec des modem en commandes AT en utilisant le composant TComPort.

    J'ai déja réaliser ce que je voulais en mode Fiche Delphi (c'est dire avec un TForm). Pour la gestion des messages AT renvoyés par le modem j'utilise donc l'évenement TForm1.ComPort1RxChar de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
    begin
      ComPort1.ReadStr(combuffer, Count);
      buffer := buffer + combuffer;
    end;
    Cette méthode fonctionne bien. Maintenant je désirerais développer cette application en mode console (c'est à dire sans TForm). Je me pose alors la question de comment gérer les évenements en mode console.

    J'ai essayé ca :

    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
    45
     
    program Project1;
     
    {$APPTYPE CONSOLE}
     
    uses
      SysUtils,
      Cport,
      Windows,
      SyncObjs;
     
    var
      ComPort: TComPort;
      buffer: string;
     
    function CtrlHandler(CtrlType: LongWord): Boolean;
    begin
      if evRxChar in ComPort.Events then
      begin
        Comport.ReadStr(buffer, ComPort.InputCount);
        Writeln(buffer);
      end;
      Result := True;
    end;
     
    begin
      { TODO -oUser -cConsole Main : placez le code ici }
      SetConsoleCtrlHandler(@CtrlHandler, True);
      try
        ComPort := TComPort.Create(nil);
        try
          ComPort.Port := 'COM3';
          ComPort.BaudRate := br57600;
          ComPort.FlowControl.ControlDTR := dtrEnable;
          ComPort.FlowControl.ControlRTS := rtsEnable;
          ComPort.Open;
          ComPort.WriteStr('AT'#13#10);
        finally
          ComPort.Free;
        end;
      except
        on E: Exception do
          Writeln('Error: ' + E.Message);
      end;
    end.
    Mais cela ne fonctionne pas ...

    Comment récupérer les évenements rxChar dans ce cas la ?

    Toute aide est la bienvenue

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    Pour préciser le problème je connais la méthode WaitForEvent de TComPort mais elle est bloquante, et la solution avec onRxChar me parrait plus élégante.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    Bon j'ai contourner le problème en créant une application service (où l'on peut utiliser l'événement RxChar).

    Par contre juste par curiosité si quelqu'un sait comment faire avec une application console, je suis tout ouïe ...

    Vive les monologues

Discussions similaires

  1. Gestion des évenements avec sdl
    Par sharu_a99 dans le forum C++
    Réponses: 1
    Dernier message: 27/11/2007, 07h46
  2. [Gtk2-perl] Gestion des évenements pour l'appui d'une touche.
    Par GarulfoLinux dans le forum Interfaces Graphiques
    Réponses: 0
    Dernier message: 08/08/2007, 17h48
  3. Réponses: 2
    Dernier message: 19/06/2007, 11h59
  4. Gestion des évenements lors de la validation par le bouton entrée
    Par rattlehead dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/12/2006, 16h24
  5. [VB2005] Gestion des évenement dans une fonction
    Par arnolem dans le forum Windows Forms
    Réponses: 8
    Dernier message: 24/07/2006, 09h07

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