Récupérer le contenu d'une carte d'identité belge
Bonjour,
Nous sommes une association sans but lucratif belge et organisons des événements où l'identité de chaque participant est nécessaire.
Jusqu'à présent, nous demandons la carte d'identité de la personne et introduisons les renseignements "à la main" dans une feuille Calc.
Je me demande s'il n'est pas possible, via un peu de code de récupérer le contenu des différents champs affichés dans la fenêtre du lecteur de carte EID belge et de les introduire dans une feuille Calc.
Je connecte le lecteur de carte à l'ordi puis en enfichant la carte d'identité dedans, le contenu légal apparaît dans leur champ respectif à l'intérieur de la fenêtre du logiciel de lecture.
Je n'ai aucune idée de la méthode à employer. Mais c'est faisable puisque les logiciels communaux le font très bien.
Je travaille avec LibreOffice et sous Debian.
Merci pour votre aide.
Récupération contenu carte d'identité belge
Bonjour Michel,
Quel boulot magnifique :applo:
Un tout tout grand MERCI pour ce travail et ton partage.
Ceci va m'éviter bien des heures de recherches. Je teste sans tarder.
MERCI.
A+
Supprimer ces horribles boucles d'attente !
En testant je me suis rendu compte que le basic essayait de lire avant que le shell n'aie fini. Ce que je n'avais pas vu, en revanche c'est que la fonction shell a un paramètre qui bloque l'exécution du basic tant qu'elle n'a pas fini. Par défaut se paramètre est à Fals et on va donc le mettre à true !
La commande cevient donc
Code:
Shell( "bash -c " + cQuote + "eidenv >"+Fichier+cQuote,0,"",true )
Il faut bien remplir les paramètres précédent avec o pour l'affichage et une chaine vide pour un programme appelé en plus; d'où les virgules et guillemts
Citation:
Syntaxe:
Shell (Pathname As String[, Windowstyle As Integer][, Param As String][, bSync])
bSync
Si cette valeur est définie sur True, la commande Shell et toutes les tâches LibreOffice sont suspendues jusqu'à ce que le processus shell soit terminé. Si cette valeur est définie sur False, le processus shell intervient directement. La valeur par défaut est False.
Voici donc la dernière mouture
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
REM ***** BASIC *****
sub carte
Fichier= "/home/michel/AAAA.txt"
testShell(Fichier)
lecture(Fichier)
' on le détruit
kill(Fichier)
end sub
Sub testShell(Fichier)
'Le code ascii du guillemet est 34 asc() et chr() permettent d'atteindre le code ascii d'un caractère
cQuote = Chr( 34 )
Shell( "bash -c " + cQuote + "eidenv >"+Fichier+cQuote,0,"",true )
end sub
sub lecture(Fichier)
vNomFichier =Fichier ' "/home/michel/AAAA.txt"
' Génère un descripteur de fichier libre, Définit un numéro de fichier libre
vNumFichier = Freefile
' Ouvre le fichier (en mode lecture)
Open vNomFichier For Input As vNumFichier
' Vérifie si la fin du fichier a été atteinte
While not eof(vNumFichier)
' Lit une ligne
Line Input #vNumFichier, vLigne
vMessage = vMessage & vLigne & Chr(13)
wend
' Ferme le fichier
Close #vNumFichier
Msgbox vMessage
End Sub |
C'est beau l'exploration ;-)
Bonjour Michel,
Super tes recherches. Cela m'est très utile pour en apprendre un peu plus sur la programmation.
Merci.
A+
et vous ne connaitrez jamais la fin (hitchcock les cinq dernieres minutes)
Merci mais il reste du boulot.
Le bacic de LibreOffice ce n'est pas de la tarte!
Théoriquement, on pourrait utiliser python; ce langage offre beaucoup plus de possibilités mais .....comment ?
Et ces fameuses applets java fournies par le ministère avec une page html qui n'a jamais rien affiché chez moi.
Bref beaucoup de patience
A+