Lecteur de carte d'identité belge : Consommation excessive de mémoire
axel7851
Messages postés6Date d'inscriptionsamedi 26 août 2006StatutMembreDernière intervention 1 mars 2009
-
18 juin 2008 à 14:32
axel7851
Messages postés6Date d'inscriptionsamedi 26 août 2006StatutMembreDernière intervention 1 mars 2009
-
1 mars 2009 à 13:43
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 ???
axel7851
Messages postés6Date d'inscriptionsamedi 26 août 2006StatutMembreDernière intervention 1 mars 2009 19 juin 2008 à 09:30
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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 19 juin 2008 à 14:54
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)
cs_jeff_montois
Messages postés7Date d'inscriptionsamedi 4 février 2006StatutMembreDernière intervention 1 mars 2009 1 mars 2009 à 12:47
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
axel7851
Messages postés6Date d'inscriptionsamedi 26 août 2006StatutMembreDernière intervention 1 mars 2009 1 mars 2009 à 13:43
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 ??