Gestion des pointeuses en temps réel

Résolu
omar235689 Messages postés 29 Date d'inscription vendredi 6 août 2010 Statut Membre Dernière intervention 17 avril 2012 - 28 juil. 2011 à 10:33
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 - 8 août 2011 à 14:03
bonjour,
J'effectue dans cette période un stage qui consiste à la manipulation des pointeuses de la société dans le cadre de la gestion du contrôle d'accès et le suivi de présence des collaborateurs.Il me semble que plein ont travaillé sur ce thème pendant que j'ai cherché dans le forum donc je compte vraiment avoir une réponse.
Au début je suis arrivé à me connecter à la pointeuse et récupérer certaines données via la méthode GetGeneralLogData mais le problème que j'arrive pas à extraire d'autre infos très nécessaire pour mon travail à savoir : le numéro de la badge et le nom de l'employé qui a pointé ainsi son ID.
Mais dans tout ça la vrai problématique qui m'est confié consiste à comment stocker ces données récupérées dans la base et surtout surtout comment faire un traitement instantané c'est à dire dès qu'un pointage se fait ce dernier s'enregistre directement dans la base sans avoir cliquer sur un bouton ou exécuter de nouveau mon programme.
Merci.
A voir également:

31 réponses

4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
2 août 2011 à 10:45
VB6 ou VB.net même C++ Borland. Le principe reste le même. Tu dois ajouter l'objet timer à ta former. Mettre un valeur à interval et Enabled à true.Fair un double clique pour arrivé au code comme celui ci-dessous
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Timer1.Enabled = False
        (ton code)
        (ton code)
        (ton code)
        Timer1.Enabled = True
    End Sub
3
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
28 juil. 2011 à 14:26
Trop d'information tue l'information

Plus sérieusement tu ne donne pas les bon élément et quand tu dis "Il me semble que plein ont travaillé sur ce thème pendant que j'ai cherché dans le forum donc je compte vraiment avoir une réponse" excuse moi mais

Bref.
De qu'elle type de pointeuse s'agit-il ?
Il faut que tu affiche le code qui te permet déjà d'avoir des info.
Avec qu'elle langage codes-tu ?

Qu'elle basse de donnée utilise tu ?
0
omar235689 Messages postés 29 Date d'inscription vendredi 6 août 2010 Statut Membre Dernière intervention 17 avril 2012 5
28 juil. 2011 à 14:56
oui tu as raison j'ai parlé au premier degré et vraiment ça n'était pas précis.
concernant ce que j'ai développé jusqu'à maintenant est en vb et le voilà:
CZKEM1.Connect_Net("10.101.10.214", 4370)
Dim vMachineNumber As Long, vTMachineNumber(0) As Long
Dim vEnrollNumber(0) As Long, vEMachineNumber(0) As Long
Dim vVerifyMode(0) As Long
Dim vInOutMode(0) As Long
Dim vYear(0) As Long, vMonth(0) As Long, vDay(0) As Long
Dim vHour(0) As Long, vMinute(0) As Long
Dim bRet As Boolean
vMachineNumber = 1
bRet = CZKEM1.ReadGeneralLogData(1)
If bRet = False Then
Exit Sub
Else
While (CZKEM1.GetGeneralLogData(1, vTMachineNumber(0), vEnrollNumber(0), _vEMachineNumber(0), vVerifyMode(0), vInOutMode(0),vYear(0), vMonth(0), _vDay(0), vHour(0), vMinute(0)) = True)
ListBox1.Items.Add(i & ") " & CStr(vYear(0)) & " - " & Format(vMonth(0), "00") & " - " & Format(vDay(0), "00") _
'& " " & Format(vHour(0), "00") & ":" & Format(vMinute(0), "00") & "Pass Machine Number " & CStr(vTMachineNumber(0)) & ("Enroll Number " & CStr(vEnrollNumber(0))) & "E-Machine Number = " & CStr(vEMachineNumber(0)) & "Verify Mode = " & CStr(vVerifyMode(0)))
End While
cela m'a permis de me connecter à la pointeuse qui est la SCR 100
et extraire les données relatives aux dates de pointages , les matricules des employés et je les mets dans une listeBox; chaque ligne contient un pointage.
alors j'ai pas su extraire le nom et prénom de l'employé et le numéro de la carte ça d'une part, d'autre part concernant la base de données j'ai rien conçu pour le moment, je veux avoir des conseils là dessus.
à propos le traitement instantané, maintenant lors de l'exécution du programme la listeBox contiendra tout les pointages fait jusqu'au moment de l'exécution, une fois quelqu'un pointe après ça ne s'affichera pas qu'à après une nouvelle exécution donc je veux savoir comment procéder pour aboutir à ce résultat désire
j'espère que j'ai quand même éclairci le sujet
Merci
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
28 juil. 2011 à 15:34
C déjà plus claire.

Quand tu poste du code utilise le menu du troisième bouton depuis la droite. Cela rendra le code plus lisible.

On va commencer par le traitement instantané?
Tu dis "maintenant lors de l'exécution du programme la listeBox contiendra tout les pointages fait jusqu'au moment de l'exécution, une fois quelqu'un pointe après ça ne s'affichera pas qu'à après une nouvelle exécution donc je veux savoir comment procéder pour aboutir à ce résultat désire "

Je comprends pas trop. Explique toi avec peux de mots stp. En est au claire sur le fait que ton application tournera sans stop ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
omar235689 Messages postés 29 Date d'inscription vendredi 6 août 2010 Statut Membre Dernière intervention 17 avril 2012 5
28 juil. 2011 à 15:43
exactement l'application doit tourner sans stop c'est à dire chaque pointage doit s'enregistrer automatiquement dans la base, il ne faut pas attendre jusqu'à ce qu'on fait un traitement
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
28 juil. 2011 à 15:57
Ok! Comme je ne connais pas le pointeuse (je cherche des info sur le net) et que après tout c ton projet

Cherche si l'objet CZKEM1 a l’événement change (ou un nom du style) Si oui il faut que tu place le code que ta a poster dans cette événement sans la boucle while. comme cela le code va automatique gérer l'état de le pointeuse et cela constamment. Si non alors il faut mettre le code derrière un timer et changer le while par un if.
0
omar235689 Messages postés 29 Date d'inscription vendredi 6 août 2010 Statut Membre Dernière intervention 17 avril 2012 5
28 juil. 2011 à 16:12
je serais très reconnaissant si tu m'expliques davantage (je sais que c'est chiant mais pitié )
surtout " Cherche si l'objet CZKEM1 a l’événement change (ou un nom du style) Si oui il faut que tu place le code que ta a poster dans cette événement "
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
28 juil. 2011 à 16:27
Non c pas du tout chiant! De plus je constate

Tout d'abord peux-tu poster la déclaration de l'objet CZKEM1. Car je en le connais pas. Et je voudrais savoir si c un objet de la pointeuse ou un objet web.
0
omar235689 Messages postés 29 Date d'inscription vendredi 6 août 2010 Statut Membre Dernière intervention 17 avril 2012 5
28 juil. 2011 à 17:03
je m'excuse pour le retard de mes réponses car ma connexion est vraiment merdique.
Concernant l'objet CZKEM1 c'est un composant COM qui à travers lui la communication est assurée avec la pointeuse
http://www.clepsyd.fr/index.php?option=com_content&view=article&id=82%3Asdk-prise-en-main-rapide&catid=45%3Adocumentation-technique&Itemid=95&tmpl=component&type=raw
ce lien explique brièvement tout
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
28 juil. 2011 à 17:42
Bon dans le but d’avancer (je part a 18:00) je v modifier ton code pour q'il fonctionne via un timer. Ce qui est une bonne solution mais pas la meilleur. Je pense que tu devrais te renseigner sur le net au sujet des événements.

Il faut bien sure que tu ajoute u timer à ton projet
Private Sub Timer1_Timer()
  Dim vMachineNumber As Long
  Dim TMachineNumber(0) As Long
  Dim vEnrollNumber(0) As Long
  dim vEMachineNumber(0) As Long
  Dim vVerifyMode(0) As Long
  Dim vInOutMode(0) As Long
  Dim vYear(0) As Long
  Dim vMonth(0) As Long
  Dim vDay(0) As Long
  Dim vHour(0) As Long
  Dim vMinute(0) As Long
  Dim bRet As Boolean
  CZKEM1.Connect_Net("10.101.10.214", 4370)
  vMachineNumber = 1
  bRet = CZKEM1.ReadGeneralLogData(1)
  If bRet = False Then
    Exit Sub
  Else
IF(CZKEM1.GetGeneralLogData(1,vTMachineNumber(0),vEnrollNumber(0),_vEMachineNumber(0),vVerifyMode(0),vInOutMode(0),vYear(0),vMonth(0),_vDay(0), vHour(0), vMinute(0))) then
  ListBox1.Items.Add(i & ") " & Str(vYear(0)) & " - " & Format(vMonth(0), "00") & " - " & Format(vDay(0), "00") _
'& " " & Format(vHour(0), "00") & ":" & Format(vMinute(0), "00") & "Pass Machine Number " & CStr(vTMachineNumber(0)) & ("Enroll Number " & CStr(vEnrollNumber(0))) & "E-Machine Number = " & CStr(vEMachineNumber(0)) & "Verify Mode = " & CStr(vVerifyMode(0)))
End if 

Fais un timer de 500ms je pese que cela devrais fonctionné.

Aussi je te conseille de faire les modif. sur une copie au cas ou j supprimer une lettre des tes variables ou un truc du style.
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
29 juil. 2011 à 10:12
Tu en es oû
0
omar235689 Messages postés 29 Date d'inscription vendredi 6 août 2010 Statut Membre Dernière intervention 17 avril 2012 5
29 juil. 2011 à 10:20
je m'excuse de n'avoir pas répondu hier car je suis parti , je reprend maintenant.
je gère pas encore la situation,il faut que je me familiarise avec le timer que tu m'a dit d'utiliser en plus j'ai rien encore fait au niveau de la base de données
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
29 juil. 2011 à 13:20
Sorry de te répondre aussi tard mais j'avais des tâches qui me demandaient du temps.

Donc tu te familarise avec le timer c bein! Comprends que a la diférence de ton while que s'arrete un fois que les conditions sont remplies le timer va touner infiniment.

Tu parles de la base de donnée. Je pense qu'il faut faire une chose après l'autre. Un fois que tu metriseras la pointeuse et ta liste box tu sera plus serain pour la base de donnée.

Mais si tu vois les choses autrements dis le moi c ton projet.
0
omar235689 Messages postés 29 Date d'inscription vendredi 6 août 2010 Statut Membre Dernière intervention 17 avril 2012 5
29 juil. 2011 à 13:47
est ce que tu peux m'aider à comment je vais recourir au timer car tout ce que j'ai trouvé ne m'a pas servi pour mon cas. J'ai pas su implémenter
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
29 juil. 2011 à 14:48
Ok! Le code que tu avais était dans un boucle. Ce qui fesait que au ton code s'arréter tout seul?

Avec l'objet timer (icone horloge) tout le code que tu mets dedans sera refait tout les x seconde et sans fin.

1) Il faut que tu place l'objet dans ta form.
2) Dans les propriéter de l'objet il faut que tu met une valeur au champ interval (qui est à 0 par défaut) cette valeur est en mili seconde.
3) il faut que tu façes un double clique sur l'ojet pour ariver à la parite code
4) Il faut que tu colle le code que tu as dans la partie code de l'objet
5) il faut que tu change ton while par un IF

Dis moi si je suis pas claire
0
omar235689 Messages postés 29 Date d'inscription vendredi 6 août 2010 Statut Membre Dernière intervention 17 avril 2012 5
29 juil. 2011 à 15:01
alors j'ai fait ce que t'as dit j'ai intégré le timer et j'ai placé mon code dans la partie code après un double clic sur l'objet mais en executant j'ai rien obtenu.Il me semble qu'il ne faut pas placer le code dans Timer1_Tick il faut ajouter un bouton ou un truc comme ça
alors comment ça marche ?
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
29 juil. 2011 à 15:06
"Timer1_Tick" Je pensais que le double clique te ménerais dans Timer1_Timer().

Suprimer tout ce que tu as dans Timer1_Tick et tape à la main
Private Sub Timer1_Timer()
'...tont code
'...ton code
'etc.
end sub
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
29 juil. 2011 à 15:08
Tu dis " ajouter un bouton ou un truc comme ça" pas besion avec un timer doux tout l'intéret
0
omar235689 Messages postés 29 Date d'inscription vendredi 6 août 2010 Statut Membre Dernière intervention 17 avril 2012 5
29 juil. 2011 à 15:14
même avec Timer1_Timer() rien n'arrive, en fait je pense que c'est logique ça ne requiert pas un bouton pour déclencher l'opération, un événement de déclenchement quoi.N'est ce pas ?
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
29 juil. 2011 à 15:24
Exactement

Retourne dans ton timer1_timer()
Dans la marge grise tout a gauche tu fais un clique au niveau d'une des premières ligne de code ( Pas une déclaration de varible mais une ligne de code). Là un bande rouge va apparaitre.

Lance le code. attend. le code va automatiquement ce stoper au niveau de la ligne rouge. ensuite en tapant sur la touche F8 pour pouras poursuivre ton code en pas à pas.
0
Rejoignez-nous