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 :

Lenteur d'un événement Timer [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2015
    Messages : 12
    Par défaut Lenteur d'un événement Timer
    Bonjour,

    Ma configuration :

    Lazarus : 1.6 ; FPC : 3.0 ; OS : Raspbian ; RaspberryPi : 3.0

    Descriptif :

    Le composant Timer me génère un événement tous les 10ms et effectue une action via une procédure sous condition.
    Dès le début de l'événement je désactive le timer et après l'action je le réactive.
    Le traitement de l'action(si condition réunis) se fait sans aucun problème pendant les quatre premières heures environ.
    Passé ce délais l'action s'effectue correctement mais avec beaucoup de lenteur(cas identique en mode débogage ou pas).

    Questions :

    Quels sont les outils sous Lazarus pour contrôler la mémoire, pile... ?
    Quels sont les options de compilation à adopter ?

    En vous remerciant,

  2. #2
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 132
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 132
    Par défaut
    Salut,
    Citation Envoyé par BYLS07 Voir le message
    Quels sont les outils sous Lazarus pour contrôler la mémoire, pile... ?
    Quelles sont les options de compilation à adopter ?
    Àmhà ce n'est pas de ce côté qu'il faut chercher, je verrais plutôt un espace disque qui se remplit, de la mémoire allouée et non libérée, ce genre de choses...

    Citation Envoyé par BYLS07 Voir le message
    Le traitement de l'action (si condition réunie) se fait sans aucun problème pendant les quatre premières heures environ.
    Passé ce délai l'action s'effectue correctement mais avec beaucoup de lenteur (cas identique en mode débogage ou pas).
    Parce qu'en général, un timer fera toujours la même chose, et c'est ce sur quoi il travaille qui va évoluer et éventuellement partir en vrille, au bout d'un certain temps ("quatre heures environ").

  3. #3
    Membre Expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Billets dans le blog
    2
    Par défaut
    Salut pour une longue période il faut utiliser TIdleTimer
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2015
    Messages : 12
    Par défaut
    Merci pour vos pistes d'actions,
    - J'ai contrôlé l'espace disque avec l'application en exécution -->sans changement
    En ce qui concerne la mémoire allouée et non libérée :
    - j'ai recontrôlé la définition de mes variables, rien de ce coté apriori.
    - À l'aide d'un bouton et des fonctions ('FreeAndNil', 'free' et 'destroy'), j'ai contrôlé en libérant certains objets après 4heures, mais sans résultat.


    Je vais essayer avec TIdleTimer et je vous tiens au courant.

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2015
    Messages : 12
    Par défaut
    J'ai essayé avec TIdleTimer, il semblerait qu'il y ait une légère amélioration, mais pas suffisante. Le problème réside effectivement dans la libération de la mémoire.
    Je regarde sur le partage des variables/objets entre les unités, je vais aussi réviser sur le forum (un lien ?)

    Du coup je rentre plus dans le détail mais sans vous inonder de code(ça viendra...;-) ) :
    Au raspberry(RPI), j'ai associé une carte E/S MCP23S17 http://www.pridopia.co.uk/pi-23s17-8-v3.html.
    Après plusieurs tentatives auprès d'autres librarys(PiGPIO, RPI_HAL, WiringPI), depuis le raspberry pour bien communiquer avec cette carte j'utilise la library PXL http://asphyre.net/products/pxl
    L'utilisation de trois objets en cascade permet de faire la liaison entre la carte et le raspberry :
    Objet1 -> Map du système RPI
    Objet2 -> Gestion des ports GPIO RPI(en paramètre : Objet1)
    Objet3 -> Gestion du bus SPI(en paramètre : Objet2)
    L'Objet3 me permet aisément de lire ou d'écrire sur la carte E/S. C'est cet objet que je sollicite tous les 10ms.
    Je crée l'objet3 au démarrage de l'application, je l'utilise dans le timer 10ms et je le libère en fin d'application.

    Question :
    Est-ce qu'il vaut mieux le créer à l'événement timer et le libérer en fin de l'événement timer (Test en cours) ?

  6. #6
    Membre Expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Billets dans le blog
    2
    Par défaut
    Salut



    Est-ce qu'il vaut mieux le créer à l'événement timer et le libérer en fin de l'événement timer (Test en cours) ?
    Dur de répondre.

    Qu'elles sont les classes de "Object1,2 et 3 " ?
    Un petit bout de code de comment tu initialises, utilises et détruits ces objets serai le bienvenue.

    Le problème vient peut-être de ces objets (je parles de leur code dans la librairie Pxl, et non de ton code).
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

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

Discussions similaires

  1. Ecouter un évènement Timer dans plusieurs classes
    Par FloBaoti dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 06/01/2008, 00h55
  2. [VB6] Sortir d'une classe par gestion d'évènement (Timer) externe ...
    Par marsup54 dans le forum VB 6 et antérieur
    Réponses: 21
    Dernier message: 04/05/2006, 23h13
  3. Problème de déclenchement d'évènements dans un timer
    Par ArkSquall dans le forum Composants VCL
    Réponses: 18
    Dernier message: 30/04/2006, 21h32
  4. Réponses: 7
    Dernier message: 08/12/2005, 17h37
  5. Réponses: 7
    Dernier message: 23/08/2005, 15h56

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