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

Lazarus Pascal Discussion :

[Raspberry Pi] Lire état logique du gpio


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2015
    Messages : 4
    Par défaut [Raspberry Pi] Lire état logique du gpio
    Bonjour
    J'ai écrit un programme sous Lazarus pour lire le niveau logique de la broche gppio17 d'un RPi.
    LA forme contient un bouton et un label :

    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
    58
     
    unit Unit1; 
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,Unix;
     
    type
     
      { TForm1 }
     
      TForm1 = class(TForm)
        Button1: TButton;
        Label1: Tlabel;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { private declarations }
      public
        { public declarations }
      end; 
     
    var
      Form1: TForm1; 
     
    implementation
     
    {$R *.lfm}
     
    { TForm1 }
     
    procedure TForm1.Button1Click(Sender: TObject);
    var niveau:integer;
     
     
    begin
     
      niveau:=fpsystem('gpio -g read 17');
     
    Label1.caption:=inttostr(niveau);
     
     
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
     
    begin
     
     
      fpsystem('gpio -g mode 17 in');
     
     
    end;
     
    end.
    Or quelque soit le niveau imposé, le programme me renvoie toujous la valeur 0.

    En ligne de commande dans un terminal, la commande gpio -g read 17 fonctionne parfaitement.

    J'ai réussi à programmer le gpio en sortie et en pwm sous Lazarus et dans ce cas je suis bloqué.
    Pouvez vous m'apporter une solution?
    Merci

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 244
    Par défaut
    hello,
    fpsystem renvoie le code de sortie de la commande et pas la sortie standard. Regarde plutôt du côté de tprocess pour "capturer" ce qu'affiche la commande.

    Ami calmant, J.P

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2015
    Messages : 4
    Par défaut
    Bonjour
    Merci de ta réponse
    J'ai écrit ce bout de programme:

    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
    58
    59
    60
    unit Unit1; 
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,Unix,Process;
     
    type
     
      { TForm1 }
     
      TForm1 = class(TForm)
        Button1: TButton;
        Label1: Tlabel;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { private declarations }
      public
        { public declarations }
      end; 
     
    var
      Form1: TForm1; 
     
    implementation
     
    {$R *.lfm}
     
    { TForm1 }
     
    procedure TForm1.Button1Click(Sender: TObject);
    var niveau:longint;
      Aprocess:TProcess;
     
    begin
      Aprocess:=Tprocess.Create(nil);
      Aprocess.commandline:='gpio -g read 17';
      Aprocess.execute;
      Aprocess.free;
     
      //niveau:=fpsystem('gpio -g read 17');
      //Label1.caption:=inttostr(niveau);
     
     
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
     
    begin
     
     
      fpsystem('gpio -g mode 17 in');
     
     
    end;
     
    end.
    Exécuté dans un terminal, j'obtiens bien la valeur du niveau logique imposé, mais comment récupérer cette valeur dans le programme ?
    P.N

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 244
    Par défaut
    inspire-toi de l'exemple amélioré qui se trouve ici : http://wiki.freepascal.org/Executing...al_Programs/fr

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2015
    Messages : 4
    Par défaut
    Merci de ton aide
    Avec tes indications le programme fonctionne parfaitement et j'ai inséré une ligne pour afficher le résultat dans un label.

    Cordialement
    P.N

    PS : je ne sais pas comment faire pour afficher que le sujet est résolu

  6. #6
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 251
    Par défaut
    Je m’immisce dans la discussion.

    Je débute en RPi et je cherche des solutions pour avoir des applications avec interface autre que la console. Lazarus serait une solution.

    Il y a une raison particulière pour que tu passe par des appels systèmes pour interfacer les GPIO, que tu n'utilise pas des librairies telles que WiringPI ou PIGpio ?

Discussions similaires

  1. Test état des ports GPIO
    Par fleadom dans le forum Raspberry Pi
    Réponses: 4
    Dernier message: 18/06/2015, 18h18
  2. Réponses: 3
    Dernier message: 11/11/2010, 21h05
  3. [WD14] Changer le nom logique d'un état
    Par ecoinfo dans le forum WinDev
    Réponses: 1
    Dernier message: 15/02/2010, 09h58
  4. [POI] lire l'état d'un checkbox
    Par nlsbo dans le forum Documents
    Réponses: 2
    Dernier message: 30/04/2009, 08h50
  5. Lire l'état d un QCheckBox
    Par katanaenmousse dans le forum Qt
    Réponses: 7
    Dernier message: 28/10/2008, 14h10

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