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 :

Obtenir la réponse d'une commande sur Raspberry Pi


Sujet :

Lazarus Pascal

  1. #1
    Membre éclairé
    Obtenir la réponse d'une commande sur Raspberry Pi
    Bonjour à toutes et à tous,

    Je pensais pouvoir récupérer une valeur de la commande

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    i2cget -y 1 0x1e 0x03 b


    qui, lancée dans un terminal, retourne la valeur contenue dans le registre à l'adresse 0x03 d'un module sur le bus i2c (compas magnétique) à l'adresse 0x1e.

    Dans un programme sous Lazarus, j'ai écrit :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    val:= fpSystem('i2cget -y 1 0x1e 0x03 b');


    mais cela me retourne la valeur 0, qui n'est pas ce que j'y vois lorsque la commande est lancée dans un terminal, mais qui me semble être le code de retour comme quoi la commande a bien été réalisée.

    Donc, y a-t-il moyen de récupérer cette valeur avec fpSystem et comment faire ou bien y a-t-il un autre moyen.

    Merci de votre aide.

    Pierre

  2. #2
    Membre éclairé
    Bonjour,

    Citation Envoyé par ChPr Voir le message


    mais cela me retourne la valeur 0, qui n'est pas ce qu j'y vois lorsque la commande est lancée dans un terminal, mais qui me semble être le code de retour comme quoi la commande a bien été réalisée.

    Donc, y a-t-il moyen de récupérer cette valeur avec fpSystem et comment faire ou bien y a-t-il un autre moyen.
    1/ Le retour est normal la fonction fpSystem lance un shell et retourne le code de sortie de la commande https://www.freepascal.org/docs-html/rtl/unix/fpsystem.html

    2/ Je vois deux méthodes pour récupérer le bon résultat :
    2a/ Utiliser une bibliothèque permettant de travailler avec le bus I2C sous lazarus
    2b/ utiliser un TProcess et analyser la sortie (sous format texte de ta commande) des exemples ici

    Cordialement

  3. #3
    Membre éclairé
    Citation Envoyé par acaumes Voir le message
    ... 2/ Je vois deux méthodes pour récupérer le bon résultat :
    2a/ Utiliser une bibliothèque permettant de travailler avec le bus I2C sous lazarus
    2b/ utiliser un TProcess ...
    Merci acaumes pour ce retour.

    Ayant vu qu'il existait de commandes simples pour s'interfacer avec le bus i2c, je me suis dit que si je pouvais me passer de bibliothèque, ce serait bien. Dans un terminal, ces commandes faisaient ce que je voulais.

    Comme je réalise mes programmes avec Lazarus, j'ai voulu utiliser fpSystem, mais n'ayant pas vu que fpSystem ne renvoyait que le code d'erreur, je m'étais lancé aveuglément dans son utilisation.

    J'ai trouvé une bibliothèque, rpi-hal, qui permait de jouer avec tous les bus et le GPIO ; je l'ai essayé sur mon composant i2c : c'est simple et ça fonctionne bien.

    Cordialement.

    Pierre

###raw>template_hook.ano_emploi###