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 :

probleme avec if et variable globale


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 13
    Points : 8
    Points
    8
    Par défaut probleme avec if et variable globale
    bonjour,

    jusqu'a maintenant je n'ai fait que du C et de l'assembleur pour microcontrolleur, ayant besoin de faire communiquer ce dernier avec le PC, j'ai choisi d'utiliser le delphi, la notion d'evenement est facile a comprendre, c'est la meme chose que les interruption sur µC.

    le programme du µC :

    le µC reçoit un packet, l'affiche sur ecran LCD, attend une seconde et renvoie un '!' a l'ordinateur

    programme du PC :

    un bouton permet d'envoyer un packet, apres j'ai un evenement a chaque fois qu'un packet est reçu, si le packet reçu est un '!' alors je renvoi un packet .

    1/
    bon la ça ne me sert pas a grand chose, mais plus tard j'en aurait besoin car j'aurais besoin de passer certaine valeur de certain evenement a des autre, ai-je bien declarer la variable globale data dans le code?

    2/
    les if : en c on a les {} d'apres ce que j'ai compris il peuvent etre remplacer par begin end;
    l'ai-je bien fait?

    mon code PC :

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, CPort, CPortCtl, StdCtrls;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        ComPort1: TComPort;
        ComDataPacket1: TComDataPacket;
        procedure FormActivate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure ComDataPacket1Packet(Sender: TObject; const Str: String);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
    var
      data: integer;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.FormActivate(Sender: TObject);
    begin
    Comport1.Connected := true;
    end;
     
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    Comport1.Connected := false;
    end;
     
    procedure TForm1.ComDataPacket1Packet(Sender: TObject; const Str: String);
    begin
    if Str = '!' then
      begin
      if  Comport1.Connected = true then Comport1.WriteStr('F');
      end;
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    if  Comport1.Connected = true then Comport1.WriteStr('F');
    end;
     
    end.
    j'utilise delphi 7 et la librairie comport 3

    ce programme ne marche pas, je ne sait pas encore pourquoi, l'evenement du bouton fonctionne mais pas celui qui doit se declencher a chaque reception de packet

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Tu as bien lié le ComDataPacket au Comport ?
    Et les events du Comport, comment sont-ils ? cf : http://nono40.developpez.com/tutorie.../2005/comport/

    Sinon, pour tes 2 questions, c'est ok !

    Par contre, tu peux remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if  Comport1.Connected = true then ...
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if  Comport1.Connected then ...
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    effectivement les {} sont remplaçable par Begin End mais la disposition est différente
    Inutile de tester à true, un booleen ce type est géré naturellement par le if
    Ensuite dans ton code tu n'active jamais ce ComDataPacket1, tu devrais plûtot utiliser RxChar, voir ce sujet sur RxChar du TComport

    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.ComDataPacket1Packet(Sender: TObject; const Str: String);
    begin
      if Str = '!' then
      begin
        if Comport1.Connected then
          Comport1.WriteStr('F');
      end;
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
       if Comport1.Connected then
         Comport1.WriteStr('F');
    end;
    [EDIT]qi130, grillé !
    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

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    j'ai reussi a reosudre le probleme, je n'avais pas associer le composant a comport1 (dans le menu a gauche)

    pour RxChar ça m'a l'air compliqué^^

    apres plusieur test j'ai reussi a comprendre le comportement de Tcomport :

    -un evenement est generé XXms apres la reception d'un packet.
    -entre temps, tous les packet qui arrive entre le premier et les XXms sont stocker dans une chaine appellé Str
    -a 9600 bauds, je peux envoyer 9 caractere avant que l'evenement ne soit declenché

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Citation Envoyé par Siñal Voir le message
    pour RxChar ça m'a l'air compliqué^^
    lol, à côté du C et de l'ASM ... moi j'aimerais bien en faire, ...
    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

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

Discussions similaires

  1. [PHP 5.3] Probleme de visibilité de variable globale
    Par ygu406 dans le forum Langage
    Réponses: 3
    Dernier message: 23/01/2012, 12h54
  2. Réponses: 13
    Dernier message: 22/02/2008, 21h02
  3. Probleme avec string et variable.
    Par pierre987321 dans le forum Delphi
    Réponses: 3
    Dernier message: 26/04/2007, 13h22
  4. [XSLT] probleme avec if et variable
    Par jaktok dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 11/08/2006, 00h13
  5. Probleme avec passage de variables par formulaires
    Par cortex007 dans le forum Langage
    Réponses: 5
    Dernier message: 17/12/2005, 14h08

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