Lecteur de carte d'identité belge : Consommation excessive de mémoire

Signaler
Messages postés
6
Date d'inscription
samedi 26 août 2006
Statut
Membre
Dernière intervention
1 mars 2009
-
Messages postés
6
Date d'inscription
samedi 26 août 2006
Statut
Membre
Dernière intervention
1 mars 2009
-
Salut à tous,

J'essaie actuellement de faire un programme qui détecte l'insertion d'une EiD (carte d'identité électronique BELGE dans mon cas).
Mon programme tourne parfaitement mais quelque chose me tracasse.

Lorsque l'application tourne et passe en boucle un bout de code (celui qui vérifie si oui ou non une carte est insérée), l'application consomme de plus en plus de mémoire.

J'utilise la librairie qui à été fournie avec le programme à savoir EIDLib.

Le code qui pose problème est le suivant :
<hr size="2" width="100%" />Private Sub timer_carte_inserée_Timer()
    Dim retStatus As EIDLIBCTRLLibCtl.retStatus
    Dim lhandle As Long
 
    timer_carte_inserée.Enabled = False
   
     Set retStatus = EIDlibCtrl.Init("", -1, -1, lhandle)
      
 If (retStatus.GetGeneral = 0) Then
        image_accueil.Visible = False
        chargement_donnees
        timer_chargement_carte.Enabled = True
        'message_acceuil.Caption = "Chargement des données en cours" + Chr$(13) + "Ne retirer pas votre carte"
    Else
        timer_carte_inserée.Enabled = True
    End If

    Set retStatus = EIDlibCtrl.Exit()
    EIDlibCtrl.Exit

End Sub
<hr size="2" width="100%" />Vu que cela se produit quand la carte n'est pas insérée je penses que le problème vient de " Set retStatus = EIDlibCtrl.Init("", -1, -1, lhandle)".

Voila mon problème, est que quelqu'un aurait une idée pour résoudre mon problème ???

Merci d'avance
Axel

5 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
Salut
Questionne le fournisseur de cette DLL afin d'être sûr du mode d'accès aux fonctions.

Il serait peut-être bon de faire une commande Exist même si le GetGeneral n'a pas retourné 0 (actuellement, le Exit n'est fait que dans le If.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
6
Date d'inscription
samedi 26 août 2006
Statut
Membre
Dernière intervention
1 mars 2009

Salut Jack et merci de ta réponse.

J'ai déjà farfouillé dans leur manuel (qui dit en passant est en anglais  ...disponible ici ), le seule moment qu'il parle d'une vidange de mémoire c'est pour une fonction dite "BEID_FlushCache" et qui est définie comme: "This function flushes the data cached in memory and on the disk" pour les non anglophites : "Cette fonction efface les données cachées dans la mémoire et sur le disque".

J'ai regardé dans le programme qu'il donne en VB. Cette fonction est présente mais elle n'est pas utilisé par l'application officielle. De plus cette application a le même défaut que mon programme... à chaque identification sa mémoire augmente 

Dés lors je penches pour un probléme propre à la OCA.

Pour le moment, la seule solution que j'ai trouvé et qui est fonctionnelle est carrément d'arreter le programme .... mais soyons clair ce n'est pas une solution trés propre ....

Pour le moment, je cherche une solution plus neutre alors si quelqu'un a une solution ... il est le bienvenu

Bonne journée à tous

Axel

http://eid.belgium.be/fr/binaries/DeveloperGuide_tcm146-17218.pdf
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
Salut
J'ai parcourru la doc.
Tu pourrais essayer d'utiliser BeginTransaction en début d'interrogation et de finir avec un EndTransaction.
Celà peut avoir une influence sur le comportement de la mémoire.
Et pourquoi pas un FlushCache ensuite, ça ne coute rien

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
7
Date d'inscription
samedi 4 février 2006
Statut
Membre
Dernière intervention
1 mars 2009

Salut,

As-tu trouvé une solution , j'ai le problème que toi !

En gros, je dois utiliser cela dans mon Trvail de Fin d'Etudes : et même lors de la programmation de mon tfe dans l'ide
après une execution (F5) tout l'environnement de dévellopement se ferme !

???????????????????????????????

 Jeff_montois
Messages postés
6
Date d'inscription
samedi 26 août 2006
Statut
Membre
Dernière intervention
1 mars 2009

Salut Jeff_montois,

Ben côté solution, j'ai carrément crée une 2° application qui une fois lancée ferme le programme principal (celui utilisant l'EID) et pour éviter que l'application ne pompe de trop à cause d'un timer, et compte tenu qu'on utilisait un écran tactile dans le cadre de ce projet, il fallait appuyer sur l'écran pour commencer un identification. C'est le seul moyen que j'ai trouvé afin que la mémoire n'augmente pas de maniéré trop rapide.
De plus, l'extinction du programme se déroulé à 2h du mat, compte tenu que c'était pour contrôler une porte dans un école et durant les heures de cours, cela ne posé pas de problème.

Que veux tu dire par "se ferme" ? tu veux dire se plante et redémarre ??

Bon amusement,
Axel