Bonjour,
Je voudrais savoir comment je dois procéder sous flowcode 4 pour que je puisse programmer un mot de passe à partir d'un Keypad a 12 chiffre et ensuite entre ce mot passe pour désactiver ou activer??
Merci
Keypad pour configurer un mot de passe?
Moderator: Benj
- Benj
- Matrix Staff
- Posts: 15312
- Joined: Mon Oct 16, 2006 10:48 am
- Location: Matrix TS Ltd
- Has thanked: 4803 times
- Been thanked: 4314 times
- Contact:
Re: Keypad pour configurer un mot de passe?
Bonjour,
Ce poste par Medelec35 devrait contribuer à vous aider à démarrer.
http://www.matrixmultimedia.com/mmforum ... 26&t=10565
Hello,
This post by Medelec35 should help to get you started.
http://www.matrixmultimedia.com/mmforum ... 26&t=10565
Ce poste par Medelec35 devrait contribuer à vous aider à démarrer.
http://www.matrixmultimedia.com/mmforum ... 26&t=10565
Hello,
This post by Medelec35 should help to get you started.
http://www.matrixmultimedia.com/mmforum ... 26&t=10565
Regards Ben Rowland - MatrixTSL
Flowcode Product Page - Flowcode Help Wiki - Flowcode Examples - Flowcode Blog - Flowcode Course - My YouTube Channel
Flowcode Product Page - Flowcode Help Wiki - Flowcode Examples - Flowcode Blog - Flowcode Course - My YouTube Channel
- Enamul
- Posts: 1772
- Joined: Mon Mar 05, 2012 11:34 pm
- Location: Nottingham, UK
- Has thanked: 271 times
- Been thanked: 814 times
- Contact:
Re: Keypad pour configurer un mot de passe?
Salut,
J'ai joint ici un FC pour la vérification de mot de passe en utilisant LCD et du clavier en V4.
J'espère que cela aidera.
Enamul
J'ai joint ici un FC pour la vérification de mot de passe en utilisant LCD et du clavier en V4.
J'espère que cela aidera.
Enamul
- Attachments
-
- Password_v4.fcf
- (13.5 KiB) Downloaded 293 times
Re: Keypad pour configurer un mot de passe?
Bonjour Ben,
Dans le poste par Medelec35 le Door Lock v2B 16f883, Serait-il possible d'avoir plus d'informations sur les variables, je voudrais bien comprendre leurs fonctions ??
Merci
Christian
Dans le poste par Medelec35 le Door Lock v2B 16f883, Serait-il possible d'avoir plus d'informations sur les variables, je voudrais bien comprendre leurs fonctions ??
Merci
Christian
-
- Posts: 594
- Joined: Thu Sep 17, 2009 7:52 am
- Location: Belgium
- Has thanked: 63 times
- Been thanked: 102 times
- Contact:
Re: Keypad pour configurer un mot de passe?
Cela ne doit pas être trop compliqué à faire.
Si tu n'as pas d'expérience avec les keypad essaye ça :
- D'abord, essaye d'afficher le chiffre sur lequel tu appuies.
- Une fois que t'as ça, essaye de faire en sorte que tu puisses entrer un nombre entre 0 et 999 et terminer par # par exemple.
Si tu arrive à faire tout ça, la seul chose qui te reste à faire c'est d'avoir une variable 'mot de passe', une variable 'lire keypad' et de voir avec un if(...) s'ils sont égaux.
-----------
Pour le programme de Medelec, j'ai pas vérifié tout le code. Je te dis se que je pense que les variables font et se que j'ai trouvé en regardant vite fait le code.
- CursorPos_x : pos x du curseur du LCD
- degcal[4] : 'enregistre' le chiffre dont la touche keypad a été appuyé.
- digcount : compte le nombres de touches que l'utilisateur a entré
- key : contient la valuer de la touche keypad appuyé.
- Master_Code : Mot de passe de secours ou mot de passe permettant de changer le Pass_Code (?)
- Pass_Code : Mot de passe (2 bytes long)
- Pass_Code_High_Byte : Octet suppérieur du mot de passe sauvegardé dans l'EEPROM (probablement)
- Pass_Code_Low_Byte : Octet inférieur du mot de passe sauvegardé dans l'EEPROM (probablement)
- place : pas utilisé dans le code
- Result : contient le résultat des 4 chiffres enregistrer dans degcalc[4]
- Seconds : utiliser pour un delay de 5s
- Status : variable statut qui lui permet d'executer son code étape par étape
- Temp1 : Variable temporaire, il vérifie, après un read de l'EEPROM, s'il est égal à 34. Probablement pour vérifier si c'est la première fois que le programme a été lancé ou non. (?)
- Temp2 : Idem temp1 sauf qu'ici la variable vaut 5.
- Wrong_Tries : nombres d'erreurs
Nicolas
Si tu n'as pas d'expérience avec les keypad essaye ça :
- D'abord, essaye d'afficher le chiffre sur lequel tu appuies.
- Une fois que t'as ça, essaye de faire en sorte que tu puisses entrer un nombre entre 0 et 999 et terminer par # par exemple.
Si tu arrive à faire tout ça, la seul chose qui te reste à faire c'est d'avoir une variable 'mot de passe', une variable 'lire keypad' et de voir avec un if(...) s'ils sont égaux.
-----------
Pour le programme de Medelec, j'ai pas vérifié tout le code. Je te dis se que je pense que les variables font et se que j'ai trouvé en regardant vite fait le code.
- CursorPos_x : pos x du curseur du LCD
- degcal[4] : 'enregistre' le chiffre dont la touche keypad a été appuyé.
- digcount : compte le nombres de touches que l'utilisateur a entré
- key : contient la valuer de la touche keypad appuyé.
- Master_Code : Mot de passe de secours ou mot de passe permettant de changer le Pass_Code (?)
- Pass_Code : Mot de passe (2 bytes long)
- Pass_Code_High_Byte : Octet suppérieur du mot de passe sauvegardé dans l'EEPROM (probablement)
- Pass_Code_Low_Byte : Octet inférieur du mot de passe sauvegardé dans l'EEPROM (probablement)
- place : pas utilisé dans le code
- Result : contient le résultat des 4 chiffres enregistrer dans degcalc[4]
- Seconds : utiliser pour un delay de 5s
- Status : variable statut qui lui permet d'executer son code étape par étape
- Temp1 : Variable temporaire, il vérifie, après un read de l'EEPROM, s'il est égal à 34. Probablement pour vérifier si c'est la première fois que le programme a été lancé ou non. (?)
- Temp2 : Idem temp1 sauf qu'ici la variable vaut 5.
- Wrong_Tries : nombres d'erreurs
Nicolas
Re: Keypad pour configurer un mot de passe?
Bonjour Nicolas,
Jusqu'à maintenant je suis capable d'afficher le chiffre sur lequel j’appuie de 0 à 9999, mon problème sais que je ne saisis pas très bien la manière que Low_Byte et High_Byte soit calculer et ensuite stocker dans le EEPROM?
Ma compréhension de Low_Byte ce sont les deux premier chiffre et Hight_Byte les deux dernier, mais pour que les deux premier ainsi que les deux autres chiffre sois calculé et stocker dans le EEPROM aucune idée
Merci de ton aide
Christian
Jusqu'à maintenant je suis capable d'afficher le chiffre sur lequel j’appuie de 0 à 9999, mon problème sais que je ne saisis pas très bien la manière que Low_Byte et High_Byte soit calculer et ensuite stocker dans le EEPROM?
Ma compréhension de Low_Byte ce sont les deux premier chiffre et Hight_Byte les deux dernier, mais pour que les deux premier ainsi que les deux autres chiffre sois calculé et stocker dans le EEPROM aucune idée
Merci de ton aide
Christian
-
- Posts: 594
- Joined: Thu Sep 17, 2009 7:52 am
- Location: Belgium
- Has thanked: 63 times
- Been thanked: 102 times
- Contact:
Re: Keypad pour configurer un mot de passe?
Salut,
Ton chiffre de 0 à 9999 est stocké dans un int.
Un int utilise 2 bytes de mémoire. L'EEPROM ne pouvant stocker qu'un byte à la fois, il faut que tu 'découpes' l'integer en 2 bytes séparé.
Donc le low_byte et high_byte ne représentent pas les deux premier et dernier chiffres, mais bien la valeur du premier et second byte utilisé par l'integer.
Rien de compliqué :
low_byte = code & 0x00FF;
La variable 'code' contient ton code et pour récupérer le byte inférieur tu le 'and' avec 0x00FF. Le 'and' va "effacer" les 8 bytes supérieur et comme ça il ne te reste plus que le byte inférieur.
high_byte = (code & 0xFF00) >> 8;
high_byte = (code >> 8 ) & 0x00FF;
Pour récupérer le byte supérieur t'as deux solutions quasiment identique.
Soit tu effaces le byte inférieur et tu shift le résultat de 8 places vers la droite, soit tu shift la valeur 'code' de 8 places vers la droite et tu le 'and' avec 0x00FF pour être sur que le résultat a une taille de 1 byte. (perso je préfère le second)
Au cas ou tu ne sais pas comment fonctionne le shift left/right:
0110 >> 1 = 0011
0110 << 1 = 1100
Nicolas
Ton chiffre de 0 à 9999 est stocké dans un int.
Un int utilise 2 bytes de mémoire. L'EEPROM ne pouvant stocker qu'un byte à la fois, il faut que tu 'découpes' l'integer en 2 bytes séparé.
Donc le low_byte et high_byte ne représentent pas les deux premier et dernier chiffres, mais bien la valeur du premier et second byte utilisé par l'integer.
Rien de compliqué :
low_byte = code & 0x00FF;
La variable 'code' contient ton code et pour récupérer le byte inférieur tu le 'and' avec 0x00FF. Le 'and' va "effacer" les 8 bytes supérieur et comme ça il ne te reste plus que le byte inférieur.
high_byte = (code & 0xFF00) >> 8;
high_byte = (code >> 8 ) & 0x00FF;
Pour récupérer le byte supérieur t'as deux solutions quasiment identique.
Soit tu effaces le byte inférieur et tu shift le résultat de 8 places vers la droite, soit tu shift la valeur 'code' de 8 places vers la droite et tu le 'and' avec 0x00FF pour être sur que le résultat a une taille de 1 byte. (perso je préfère le second)
Au cas ou tu ne sais pas comment fonctionne le shift left/right:
0110 >> 1 = 0011
0110 << 1 = 1100
Nicolas