SlideShare a Scribd company logo
1 of 70
Download to read offline
QR codes et codes à barres
sous Delphi
Webinaire du 26 mars 2019
(c) Patrick Prémartin / developpeur-pascal.fr
Au menu du jour
• Introduction
• C’est quoi un QR code ou un code à barres ?
• La génération de QR codes et codes à barres
• La lecture de QR codes et codes à barres
• Cas pratique : fiches de lecture
• Conclusion
• Questions / réponses
(c) Patrick Prémartin / developpeur-pascal.fr
Introduction
(c) Patrick Prémartin / developpeur-pascal.fr
Patrick Prémartin
• Ancien utilisateur de Turbo Pascal, amoureux de Delphi depuis toujours,
développeur web depuis NCSA Mosaic…
• Prestataire et formateur à travers sa société Olf Software.
• Editeur du blog https://developpeur-pascal.fr/
• MVP Embarcadero depuis octobre 2017.
• Auteur d’articles, de livres, webinariste et parfois même conférencier.
(c) Patrick Prémartin / developpeur-pascal.fr
A propos de Olf Software
• Depuis octobre 2001 la société de services Olf Software propose des
prestations de conseil, développement et formation sur les
technologies liées au web et au développement logiciel.
• La société édite également des livres, des sites Internet et des
logiciels.
• Site web principal : https://olfsoftware.fr
(c) Patrick Prémartin / developpeur-pascal.fr
Organisme de formation
• Olf Software propose des formations en lien avec Delphi.
• Des formations inter entreprises sont organisées régulièrement et
annoncées sur https://se-former-a-delphi.fr/
• Des formations intra entreprise personnalisées sont faisables sur demande
partout en France et en Europe.
• Olf Software est un organisme de formation professionnelle enregistré en
préfecture et référencé sur Datadock.
Nos formations peuvent être prises en charge par les OPCA.
(c) Patrick Prémartin / developpeur-pascal.fr
Les versions de Delphi
• Plusieurs licences de Delphi existent (vendu seul ou dans RAD Studio):
• Academic : pour les établissements d’enseignement et leurs étudiants
• Community Edition : gratuit pour tous, en licence commerciale limitée
• Professional, Enterprise, Architect : pour les entreprises, selon leurs besoins
• Pour toutes informations sur les licences et les tarifs contactez la
société Barnsten sur https://www.barnsten.com/fr/
(c) Patrick Prémartin / developpeur-pascal.fr
Les webinaires précédents
• Je participe régulièrement à des webinaires. Une page leur est
consacrée sur mon blog à l’adresse https://vasur.fr/webinairesdelphi
• Vous y trouverez les rediffusions en vidéos lorsqu’elles sont
disponibles, un PDF de mes présentations, le lien vers les sources des
exemples présentés et des informations complémentaires.
• S’y trouvent aussi les dates et liens d’inscriptions pour les prochains
webinaires, conférences et formations.
(c) Patrick Prémartin / developpeur-pascal.fr
Introduction
• Présentation de la société Olf Software
https://www.olfsoftware.fr
• Présentation de Patrick Prémartin
https://www.linkedin.com/in/patrickpremartin/
• Les différentes versions de Delphi
https://www.embarcadero.com/fr/products/delphi
• Voir ou revoir les webinaires précédents
https://vasur.fr/webinairesdelphi
(c) Patrick Prémartin / developpeur-pascal.fr
Introduction
• Aujourd’hui nous allons parler de QR codes et codes à barres :
• Ce qu’ils représentent.
• A quoi ils servent.
• D’autres technologies pour faire la même chose.
• Comment les utiliser dans Delphi.
(c) Patrick Prémartin / developpeur-pascal.fr
QR code, code à barres,
c’est quoi ?
(c) Patrick Prémartin / developpeur-pascal.fr
Qu’est-ce qu’un code à barres ?
• Les codes à barres sont une forme de codage de chiffres et lettres
dans un rectangle composé de traits verticaux noirs sur fond blanc.
• Il existe de nombreux types de codes à barres. Ci-dessous un
« interleave 2 of 5 » et un « code 39 ». Le dessin permet de
déterminer le type utilisé et le contenu codé.
• Plus d’infos sur https://en.wikipedia.org/wiki/Barcode
(c) Patrick Prémartin / developpeur-pascal.fr
Qu’est-ce qu’un QR code ?
• On assimile les QR codes à des codes à barres 2D. Il en existe de
nombreux formats que vous retrouverez aussi sur
https://en.wikipedia.org/wiki/Barcode
• Plus complexes que les codes à barres, les QR codes sont utilisés pour
stocker des informations en plus gros volume avec un certain niveau
de redondance.
• Quand un code à barres est partiellement effacé, on perd tout.
Les QR codes contribuent à limiter ce problème.
(c) Patrick Prémartin / developpeur-pascal.fr
A quoi servent-ils ?
• Les codes à barres sont généralement utilisés pour identifier des objets.
• Les QR codes permettant de stocker plus d’informations dans un volume
plus petit ils servent à identifier des objets ou des lieux mais également à
transporter des informations ou les stocker d’une façon plus facilement
lisible par des automates.
• Les cas d’usages les plus courants sont les étiquettes produits (codes à
barres et maintenant QR codes sur les livres et spiritueux), les étiquettes
d’expédition des colis (codes à barres pour le numéro de colis, QR code
pour redonder l’adresse et certaines informations de colisage) et les billets
de train ou de spectacles.
(c) Patrick Prémartin / developpeur-pascal.fr
A quoi servent-ils ?
• Dans notre monde « augmenté » on utilise des QR codes un peu
partout : sur des abribus, dans des magasins, dans des musées, sur
des lieux touristiques, sur les menus des restaurants, …
• Ces tags contiennent soit des informations interprétées par une
application mobile, soit des URL qui peuvent renvoyer vers des pages
web quand on n’a pas l’application concernée soit être interprétées
par l’applications associée.
• On retrouve codes à barres ou QR codes sur les cartes d’étudiants, les
cartes de fidélité, les badges d’entreprises, …
(c) Patrick Prémartin / developpeur-pascal.fr
Quel intérêt ?
• Codes à barres et QR codes ne coûtent rien à produire et peuvent
être soit imprimés, soit tatoués, soit directement affichés sur des
écrans, il est donc très facile de les utiliser.
• Tous les appareils capables de capturer une image ont désormais une
application de lecture de ces codes, on peut donc utiliser un
smartphone directement sans avoir besoin d’équipement spécifique.
• L’inconvénient c’est qu’ils sont reproductibles et lisibles par n’importe
qui en ayant pris l’image. On ne doit donc pas s’en servir pour des
informations sensibles ou gérer des accès sécurisés.
(c) Patrick Prémartin / developpeur-pascal.fr
Les alternatives
• Quand on parle d’accès sécurisés on entre plutôt sur des technologies
utilisant les RFID et NFC que liées aux QR codes et codes à barres
simples.
• Si aller plus loin sur ce sujet vous intéresse je vous recommande la
session « Integrating with Barcode and RFID Readers » de Fernando
Rizzato lors du Code Rage 2018 organisé par Embarcadero:
https://www.embarcaderoacademy.com/courses/441209/lectures/84
41956
(c) Patrick Prémartin / developpeur-pascal.fr
La génération de QR codes et
codes à barres
(c) Patrick Prémartin / developpeur-pascal.fr
Générer des codes 1D et 2D
• Les normes de chaque type de codes à barres (1D) et codes 2D sont
connues, il est donc possible de tout faire à la main. Il suffit de
dessiner ce que l’on veut obtenir dans une image.
• Ni Delphi 10.3.1 Rio, ni ses prédécesseurs ne proposent de
composant ou librairie pour générer des codes à barres ou QR codes.
• Si on ne veut pas tout coder soi-même on peut passer par des
composants externes ou l’une des libraires open source existantes
(Zint ou Zxing pour les plus connues).
(c) Patrick Prémartin / developpeur-pascal.fr
Générer des codes 1D et 2D
• Les outils de génération d’état intègrent généralement une solution
pour avoir des codes 1D ou 2D sur les listings qu’ils génèrent. C’est
notamment le cas de Fast Report et Rave Report.
• Pour le reste (écrans, exports sous forme d’images) il y a de
nombreuses possibilités. J’ai choisi 4 solutions à vous présenter :
• Winsoft
• TMS Software
• Han Soft
• La librairie « DelphiZXingQRCode » dispo sur GitHub.
(c) Patrick Prémartin / developpeur-pascal.fr
A propos de Winsoft
• La société Winsoft s’est spécialisée dans l’empaquetage en Delphi de
librairies open sources.
• On retrouve de nombreuses choses sous forme de composants ou
d’unités, pour la VCL ou FMX, depuis leur site.
• Ils proposent des licences par pack ou globale avec l’utilisation à vie,
un an de mises à jour et un support par email.
• Leur site web : https://www.winsoft.sk
(c) Patrick Prémartin / developpeur-pascal.fr
Génération avec Winsoft
• Pour la génération de codes 1D et 2D Winsoft se base sur la librairie
open source Zint.
• Ces composants sont disponibles avec les DLL et équivalents pour la
VCL et FMX :
• https://www.winsoft.sk/barcode.htm
• https://www.winsoft.sk/fbarcode.htm
(c) Patrick Prémartin / developpeur-pascal.fr
Génération avec Winsoft
Démonstration
(c) Patrick Prémartin / developpeur-pascal.fr
A propos de TMS Software
• Tout développeur Delphi a forcément entendu parler de cet éditeur à
un moment ou un autre de sa carrière.
• TMS Software édite de nombreux packs de composants pour Delphi
(VCL, FMX et IntraWeb) et maintenant aussi pour Lazarus.
• Depuis un an TMS Software a sorti une solution permettant de faire
des sites web en Pascal depuis Delphi et continue à mettre à jour
régulièrement ses packs notamment dans le domaine de la
cryptographie et le cloud.
• Leur site web : https://www.tmssoftware.com/
(c) Patrick Prémartin / developpeur-pascal.fr
Génération avec TMS Software
• TMS Software ne propose pas directement de solution pour générer
des codes à barres ou QR codes en revanche ils passent pas l’API du
site Barcodes4Me.
• Le composant est présent dans leurs packs cloud pour VCL, FMX et
LCL:
• https://www.tmssoftware.com/site/cloudpack.asp
• https://www.tmssoftware.com/site/tmsfmxcloudpack.asp
(c) Patrick Prémartin / developpeur-pascal.fr
Génération avec TMS Software
• Les composants de TMS génèrent une image que l’on peut enregistrer
directement ou une URL qu’il faut appeler pour récupérer l’image
générée.
• Dans un cas comme dans l’autre, ils passent par un site externe et ça
implique donc que le site soit accessible et opérationnel.
(c) Patrick Prémartin / developpeur-pascal.fr
Génération avec TMS Software
Démonstration
(c) Patrick Prémartin / developpeur-pascal.fr
A propos de Han-soft
• L’éditeur Han-soft édite des packs de composants 1D et 2D pour
Delphi depuis sa création en 2001.
• D’autres outils sont disponibles comme un logiciel de backup, un
logiciel de tunneling et des logiciels gratuits pour générer des codes à
barres (développés en Delphi avec leurs composants).
• Leur site web : https://www.han-soft.com
(c) Patrick Prémartin / developpeur-pascal.fr
Génération avec Han-soft
• Han-soft propose trois packs de composants pour générer des codes
1D et des codes 2D.
• https://www.han-soft.com/barcode1d.php
• https://www.han-soft.com/barcode2d.php
• https://www.han-soft.com/barcodefmx2d.php
• Ces packs de composants sont payants. Leur licence inclut une
utilisation à vie et des mises à jour.
(c) Patrick Prémartin / developpeur-pascal.fr
Génération avec Han-soft
• L’approche est différente des composants Winsoft ou TMS Software
car ici c’est du développement en Pascal complètement indépendant
d’une librairie extérieure ou d’un site web.
• Il y a un composant par type de code 1D (VCL uniquement) ou 2D
(VCL ou FMX).
• Chaque composant permet un export de l’image dans différents
formats et bien entendu l’affichage à l’écran.
• Cette solution permet également de s’interfacer avec les outils de
reporting habituels.
(c) Patrick Prémartin / developpeur-pascal.fr
Génération avec Han-soft
(c) Patrick Prémartin / developpeur-pascal.fr
Génération avec Han-soft
Démonstration
(c) Patrick Prémartin / developpeur-pascal.fr
La solution open source
• Il existe aussi des solutions open source dont celle-ci sur GitHub:
« DelphiZXingQRCode ».
C’est un portage Delphi partiel de la librairie Zxing.
• Le téléchargement se fait depuis cette page :
• https://github.com/foxitsoftware/DelphiZXingQRCode
• Sa présentation est disponible sur cette page :
• https://www.debenu.com/open-source/delphizxingqrcode/
(c) Patrick Prémartin / developpeur-pascal.fr
La solution open source
• La librairie « DelphiZXingQRCode » est gratuite.
• Elle est libre d’utilisation y compris pour un usage commercial.
• Elle ne permet de générer que des QR codes.
• Elle ne fait pas le dessin elle même, c’est à nous de le faire. Un
exemple est fourni dont on a juste à copier coller le source.
(c) Patrick Prémartin / developpeur-pascal.fr
Génération avec
DelphiZXingQRCode
Démonstration
(c) Patrick Prémartin / developpeur-pascal.fr
La lecture de QR codes et
codes à barres
(c) Patrick Prémartin / developpeur-pascal.fr
Lire des codes à barres et QR
• La lecture de codes à barres et QR codes nécessite un peu de
reconnaissance de formes car elle se fait depuis une image.
• L’image contenant le code à interpréter peut provenir d’un flux vidéo,
d’une photo ou d’un fichier selon les cas.
• D’une façon générale notre logiciel doit fournir une trame (image fixe
et idéalement pas floue) à la librairie qui y recherche le ou les codes
présents et nous en fournit la liste.
(c) Patrick Prémartin / developpeur-pascal.fr
Lire des codes à barres et QR
• Delphi ne possède pas de librairie ou de composant capable de traiter
les images pour en ressortir les codes 1D ou 2D présents.
• Comme pour la génération on doit faire appel à un ami mais pas de
chance il y a une séance d’aqua poney à leur club de sport.
• Parmi les solutions que j’ai pu trouver, j’ai retenu ces deux là :
• Winsoft
• La librairie « ZXing.Delphi » dispo sur GitHub
(c) Patrick Prémartin / developpeur-pascal.fr
Lire des codes à barres et QR
• Si on en a la possibilité il est préférable d’utiliser des douchettes ou
scanners dédiés à la lecture des codes à barres et autres codes. Ils
sont plus pratiques à manier pour l’utilisateur car ils n’imposent pas
l’étape de prise de photo.
(c) Patrick Prémartin / developpeur-pascal.fr
Lire des codes à barres et QR
• Il existe des smartphones équipés de scanners dédiés, agissant
comme une douchette ou transmettant leurs infos en bluetooth, en
série ou par l’intermédiaire d’une API constructeur.
• Fernando Rizzato en parle dans sa session du CodeRage 2018.
Regardez là pour savoir quels équipements il préconise et comment il
s’en sert sous Delphi.
• https://www.embarcaderoacademy.com/courses/441209/lectures/8441956
(c) Patrick Prémartin / developpeur-pascal.fr
Lecture avec Winsoft
• Comme il existe des librairies open source pour la reconnaissance de
codes à barres et QR codes, Winsoft propose plusieurs packs de
composants.
• Basés sur la librairie Zbar :
• https://www.winsoft.sk/obr.htm
• https://www.winsoft.sk/fobr.htm
• Basés sur la librairie Zxing :
• https://www.winsoft.sk/obrlib.htm
• https://www.winsoft.sk/fobrlib.htm
• https://www.winsoft.sk/aobrlib.htm
(c) Patrick Prémartin / developpeur-pascal.fr
Lecture avec Winsoft
• Je ne vais parler que de « obr » et « fobr » qui sont sous la forme de
composants alors que les autres ne sont accessibles que par le code.
• Contrairement aux packs basés sur Zxing, le pack « Optical Barcode
Recognition for FireMonkey » fonctionne sur iOS, Android, macOS et
Windows.
• Ces packs sont payants et embarquent les DLL et équivalents
nécessaires. A nous de les déployer avec nos logiciels.
(c) Patrick Prémartin / developpeur-pascal.fr
Lecture avec Winsoft
Démonstration
(c) Patrick Prémartin / developpeur-pascal.fr
La solution open source
• Sur GitHub on peut trouver la librairie « ZXing.Delphi » qui est un
portage de la librairie Java correspondante.
• Cet ensemble de composants permet de reconnaître les codes 1D et
2D les plus courants comme c’est le cas avec les composants de
Winsoft.
(c) Patrick Prémartin / developpeur-pascal.fr
La solution open source
• La librairie ZXing d’origine n’est plus maintenue, celle-ci risque par
conséquent de ne pas l’être non plus.
• Faites donc le bon choix selon vos besoins entre le « natif Delphi » de
cette librairie et le « embarque la DLL ZBar » pour la solution de
Winsoft.
• Aucune documentation n’est fournie, il faut donc bidouiller en
s’inspirant des exemples et regarder dans les options de projet les
chemins de recherche d’unités à inclure.
(c) Patrick Prémartin / developpeur-pascal.fr
Lecture avec Zxing.Delphi
Démonstration
(c) Patrick Prémartin / developpeur-pascal.fr
Cas pratique : fiches de lecture
(c) Patrick Prémartin / developpeur-pascal.fr
Cas pratique : fiches de lecture
• Ayant vu comment générer et lire des codes dans nos logiciels, je
vous propose un cas pratique : une application permettant de
consulter des données liées à des livres sur un réseau local.
• J’ai découpé ce logiciel en 3 parties :
• Un programme qui servira à configurer l’application mobile.
• Un programme de gestion de la base de données de livres.
• Une application mobile qui lira les codes à barres et affichera le titre des
livres.
(c) Patrick Prémartin / developpeur-pascal.fr
Utilisation de l’AppTethering
• Suite à une demande d’exemples sur developpez.com j’ai utilisé
l’AppTethering pour faire discuter les programmes entre eux.
• L’AppTethering est une technologie permettant de partager des
données et actions entre programmes sur le réseau local ou en
Bluetooth grâce à l’utilisation de deux composants.
• Le TTetheringManager gère les connexions et recherches de
partenaires.
• Le TTetheringProfile gère les ressources et actions partagées.
(c) Patrick Prémartin / developpeur-pascal.fr
Utilisation de l’AppTethering
• Ici j’utilise l’association automatique entre les différents programmes.
• Chaque TTetheringManager devant s’associer a la même valeur dans
la propriété Password.
• Chaque TTetheringProfile (associé au bon TTetheringManager) a la
même valeur dans la propriété Group pour dialoguer avec ses
partenaires.
• Plus d’infos sur
http://docwiki.embarcadero.com/RADStudio/Rio/en/Using_App_Teth
ering
(c) Patrick Prémartin / developpeur-pascal.fr
Cas pratique : fiches de lecture
Le programme de configuration
(c) Patrick Prémartin / developpeur-pascal.fr
Le programme de configuration
• Le programme de configuration est un écran tout simple développé
avec IntraWeb.
• On saisit le mot de passe que l’on veut utiliser entre les applications
mobiles et le logiciel de gestion.
• Le programme génère le QR code correspondant pour l’application
mobile et envoi le mot de passe à l’application de gestion par
l’intermédiaire de la ressource « Password » partagée en
AppTethering.
(c) Patrick Prémartin / developpeur-pascal.fr
Le programme de configuration
• Notez que les composants non visuels sont au niveau du serveur et
non de la session utilisateur ou de l’écran lui-même. Ca permet de
s’assurer de leur existence et pérennité durant toute l’exécution de
l’application.
• Quand vous utilisez un système de type serveur comme celui-ci
n’oubliez pas de gérer les synchronisations de threads.
Là je n’ai qu’un seul utilisateur donc je ne risque pas de violations
d’accès à chaque appel de page.
(c) Patrick Prémartin / developpeur-pascal.fr
Cas pratique : fiches de lecture
Le programme de gestion de la base de données
(c) Patrick Prémartin / developpeur-pascal.fr
Le programme de gestion de
la base de données
• La base de données est gérée sous forme de table en mémoire avec
un TFDMemTable persistant.
• Etant en VCL pour ce programme j’ai opté pour des composants
TDBxxx et un TDataSource pour les mises à jour plutôt que passer par
Live Bindings.
(c) Patrick Prémartin / developpeur-pascal.fr
Le programme de gestion de
la base de données
• La communication avec le configurateur se fait en App Tethering, le
programme de gestion étant client de celui-ci.
• La communication avec l’application mobile se fait dans les deux sens
: une ressource partagée pour la lecture, un envoi de texte pour la
réponse.
• Dans une application classique il aurait mieux valu utiliser de vraies
API (par exemple avec un serveur REST) ou du RPC. Là je détourne
l’usage standard de l’App Tethering mais ça fonctionne très bien.
(c) Patrick Prémartin / developpeur-pascal.fr
Cas pratique : fiches de lecture
L’application mobile de lecture
(c) Patrick Prémartin / developpeur-pascal.fr
L’application mobile de lecture
• Pour l’application mobile il y a deux écrans gérés sous forme
d’onglets.
• Le premier sert à la configuration par la lecture du QR code contenant
le mot de passe à utiliser en AppTethering.
• Le second sert à la lecture des codes à barres des livres et à l’affichage
de leur titre.
(c) Patrick Prémartin / developpeur-pascal.fr
L’application mobile de lecture
• La lecture se fait à l’aide de la caméra du smartphone.
• Chaque trame est affichée à l’écran et une recherche de code 1D/2D
est faite.
• Sur la config : une fois le QR code trouvé on change la configuration
du TTetheringManager et on lance l’auto connexion.
• Sur la lecture: lorsque le programme trouve un code, il remplit la
ressource « CB » partagée en AppTethering avec le programme de
gestion de base.
(c) Patrick Prémartin / developpeur-pascal.fr
L’application mobile de lecture
• Lorsqu’un code est envoyé au gestionnaire de la base de données, on
n’attend pas de réponse. Elle est gérée sous forme d’événement
directement depuis le TTetheringProfile.
(c) Patrick Prémartin / developpeur-pascal.fr
L’application mobile de lecture
• Notez qu’il faut penser à désactiver la caméra lorsque l’application
perd le focus, sinon on bloque le périphérique et aucune autre
application ne peut l’utiliser.
• Notez également que l’AppTethering fonctionne en « broadcast » sans
notion de client / serveur. On peut lancer plusieurs exemplaires du
programme de gestion de la base sur le réseau. Ils recevront tous les
codes envoyés par les applications mobiles.
Tenez en compte dans vos développements si vous utilisez
l’AppTethering pour faire du client/serveur.
(c) Patrick Prémartin / developpeur-pascal.fr
Exemple : fiches de lecture
Démonstration
(c) Patrick Prémartin / developpeur-pascal.fr
Bonus « poisson chat »
(c) Patrick Prémartin / developpeur-pascal.fr
Bonus « poisson chat »
• Les QR codes ont l’avantage d’être redondants, on peut donc les
abimer volontairement en respectant certaines limites. C’est pour
cela qu’on voit parfois des codes avec une image dedans.
• C’est grâce à la redondance que ces codes restent lisibles.
(c) Patrick Prémartin / developpeur-pascal.fr
Bonus « poisson chat »
• On peut aller encore plus loin dans les modifications d’un QR code
tout en conservant un certain niveau de lisibilité.
• Ici, par exemple, j’utilise les points comme masque pour incruster le
code dans une image.
(c) Patrick Prémartin / developpeur-pascal.fr
Bonus « poisson chat »
• Aucun des composants vus aujourd’hui ne gère ces modifications en
standard mais on peut très bien le faire avec les filtres ou en copiant
les images par un QR code généré.
• Si vous « jouez » à ça pour vos codes pensez à ne pas trop déborder
du centre du QR code ou de son angle bas / droite.
• Si vous incrustez le code dans une image, il ne sera pas lisible par tous
les logiciels. Dans le vôtre pensez à passer l’image en noir et blanc
avant de lancer un scan dessus.
(c) Patrick Prémartin / developpeur-pascal.fr
Conclusion
(c) Patrick Prémartin / developpeur-pascal.fr
Conclusion
• Les solutions proposées aujourd’hui ne sont pas les seules. Vous
pourrez en trouver d’autres en cherchant sur Internet ou créer les
vôtres selon les besoins.
• Si vous avez besoin de transmettre des informations utilisez plutôt
des QR codes qui sont lisibles par tout logiciel interprétant les codes
1D / 2D et lisibles nativement dans les versions récentes d’Android et
iOS.
• Pour les solutions sécurisées n’utilisez des codes imprimés qu’en
secours de technologies hardware comme RFID / NFC et 2FA.
(c) Patrick Prémartin / developpeur-pascal.fr
Conclusion
• Ce webinaire et les sources des démos seront rapidement mis à disposition sur le
blog https://developpeur-pascal.fr
• Prochains événements en live :
=> meetup à Lille le 25 avril 2019
=> journées de conférence à Lyon (14/05), Aix en Provence (16/05), Bordeaux
(21/05) et Nantes (23/05)
Nombre de places limitées, inscrivez-vous dès maintenant depuis
https://www.barnsten.com/fr/evenements
• Prochain webinaire le 23 avril :
=> Utiliser les assistants de l’EDI pour développer en multiplateforme
(c) Patrick Prémartin / developpeur-pascal.fr
Questions / réponses
(c) Patrick Prémartin / developpeur-pascal.fr

More Related Content

Similar to QR codes et codes à barres sous Delphi

Quick reader code (qrc)
Quick reader code (qrc)Quick reader code (qrc)
Quick reader code (qrc)Rosie Nahhal
 
Quick reader code (qrc)
Quick reader code (qrc)Quick reader code (qrc)
Quick reader code (qrc)Rosie Nahhal
 
Découvrez FireDAC pour la VCL
Découvrez FireDAC pour la VCLDécouvrez FireDAC pour la VCL
Découvrez FireDAC pour la VCLpprem
 
Diffuser nos logiciels et leurs mises à jour
Diffuser nos logiciels et leurs mises à jourDiffuser nos logiciels et leurs mises à jour
Diffuser nos logiciels et leurs mises à jourpprem
 
Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !pprem
 
Faire des applications web avec Delphi
Faire des applications web avec DelphiFaire des applications web avec Delphi
Faire des applications web avec Delphipprem
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
Fichier, Nouveau projet… Et après ?
Fichier, Nouveau projet… Et après ?Fichier, Nouveau projet… Et après ?
Fichier, Nouveau projet… Et après ?Microsoft
 
Le guide du code barre 2D
Le guide du code barre 2DLe guide du code barre 2D
Le guide du code barre 2DMarketingZ
 
Afmm le-guide-du-code-barres-2 d
Afmm le-guide-du-code-barres-2 dAfmm le-guide-du-code-barres-2 d
Afmm le-guide-du-code-barres-2 dMarketingZ
 
Guide du code barre 2D - AFMM 2011
Guide du code barre 2D - AFMM 2011Guide du code barre 2D - AFMM 2011
Guide du code barre 2D - AFMM 2011Romain Fonnier
 
Internationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMXInternationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMXpprem
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphipprem
 
HTML5 W3C Conference Euratechnologie
HTML5 W3C Conference EuratechnologieHTML5 W3C Conference Euratechnologie
HTML5 W3C Conference Euratechnologiewyggio
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...ENSIBS
 
2012 11 Toulibre - Open Hardware
2012 11 Toulibre - Open Hardware2012 11 Toulibre - Open Hardware
2012 11 Toulibre - Open HardwareSylvain Wallez
 

Similar to QR codes et codes à barres sous Delphi (20)

Quick reader code (qrc)
Quick reader code (qrc)Quick reader code (qrc)
Quick reader code (qrc)
 
Quick reader code (qrc)
Quick reader code (qrc)Quick reader code (qrc)
Quick reader code (qrc)
 
Découvrez FireDAC pour la VCL
Découvrez FireDAC pour la VCLDécouvrez FireDAC pour la VCL
Découvrez FireDAC pour la VCL
 
Diffuser nos logiciels et leurs mises à jour
Diffuser nos logiciels et leurs mises à jourDiffuser nos logiciels et leurs mises à jour
Diffuser nos logiciels et leurs mises à jour
 
Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !
 
Faire des applications web avec Delphi
Faire des applications web avec DelphiFaire des applications web avec Delphi
Faire des applications web avec Delphi
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
Atelier QR codes
Atelier QR codesAtelier QR codes
Atelier QR codes
 
4D Summit2013 refactoring
4D Summit2013 refactoring4D Summit2013 refactoring
4D Summit2013 refactoring
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Fichier, Nouveau projet… Et après ?
Fichier, Nouveau projet… Et après ?Fichier, Nouveau projet… Et après ?
Fichier, Nouveau projet… Et après ?
 
Le guide du code barre 2D
Le guide du code barre 2DLe guide du code barre 2D
Le guide du code barre 2D
 
Afmm le-guide-du-code-barres-2 d
Afmm le-guide-du-code-barres-2 dAfmm le-guide-du-code-barres-2 d
Afmm le-guide-du-code-barres-2 d
 
Guide du code barre 2D - AFMM 2011
Guide du code barre 2D - AFMM 2011Guide du code barre 2D - AFMM 2011
Guide du code barre 2D - AFMM 2011
 
Internationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMXInternationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMX
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphi
 
HTML5 W3C Conference Euratechnologie
HTML5 W3C Conference EuratechnologieHTML5 W3C Conference Euratechnologie
HTML5 W3C Conference Euratechnologie
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
 
Le Cloud computing c'est quoi ?
Le Cloud computing c'est quoi ?Le Cloud computing c'est quoi ?
Le Cloud computing c'est quoi ?
 
2012 11 Toulibre - Open Hardware
2012 11 Toulibre - Open Hardware2012 11 Toulibre - Open Hardware
2012 11 Toulibre - Open Hardware
 

More from pprem

Using FireMonkey as a game engine
Using FireMonkey as a game engineUsing FireMonkey as a game engine
Using FireMonkey as a game enginepprem
 
Using Delphi as a no code development environment
Using Delphi as a no code development environmentUsing Delphi as a no code development environment
Using Delphi as a no code development environmentpprem
 
Easy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkeyEasy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkeypprem
 
Utiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéoUtiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéopprem
 
Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?pprem
 
Delphi et les tests unitaires
Delphi et les tests unitairesDelphi et les tests unitaires
Delphi et les tests unitairespprem
 
Développer une application pour Android TV avec Delphi
Développer une application pour Android TV avec DelphiDévelopper une application pour Android TV avec Delphi
Développer une application pour Android TV avec Delphipprem
 
Sauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobilesSauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobilespprem
 
Gérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et AndroidGérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et Androidpprem
 
Faire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCLFaire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCLpprem
 
Faire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkeyFaire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkeypprem
 
Des solutions de synchronisation de données
Des solutions de synchronisation de donnéesDes solutions de synchronisation de données
Des solutions de synchronisation de donnéespprem
 
POC Notes de frais
POC Notes de fraisPOC Notes de frais
POC Notes de fraispprem
 
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...pprem
 
Comment écrire des articles de blog à succès
Comment écrire des articles de blog à succèsComment écrire des articles de blog à succès
Comment écrire des articles de blog à succèspprem
 
Gagner de l'argent sur Internet
Gagner de l'argent sur InternetGagner de l'argent sur Internet
Gagner de l'argent sur Internetpprem
 
Trafic
TraficTrafic
Traficpprem
 

More from pprem (17)

Using FireMonkey as a game engine
Using FireMonkey as a game engineUsing FireMonkey as a game engine
Using FireMonkey as a game engine
 
Using Delphi as a no code development environment
Using Delphi as a no code development environmentUsing Delphi as a no code development environment
Using Delphi as a no code development environment
 
Easy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkeyEasy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkey
 
Utiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéoUtiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéo
 
Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?
 
Delphi et les tests unitaires
Delphi et les tests unitairesDelphi et les tests unitaires
Delphi et les tests unitaires
 
Développer une application pour Android TV avec Delphi
Développer une application pour Android TV avec DelphiDévelopper une application pour Android TV avec Delphi
Développer une application pour Android TV avec Delphi
 
Sauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobilesSauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobiles
 
Gérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et AndroidGérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et Android
 
Faire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCLFaire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCL
 
Faire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkeyFaire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkey
 
Des solutions de synchronisation de données
Des solutions de synchronisation de donnéesDes solutions de synchronisation de données
Des solutions de synchronisation de données
 
POC Notes de frais
POC Notes de fraisPOC Notes de frais
POC Notes de frais
 
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
 
Comment écrire des articles de blog à succès
Comment écrire des articles de blog à succèsComment écrire des articles de blog à succès
Comment écrire des articles de blog à succès
 
Gagner de l'argent sur Internet
Gagner de l'argent sur InternetGagner de l'argent sur Internet
Gagner de l'argent sur Internet
 
Trafic
TraficTrafic
Trafic
 

QR codes et codes à barres sous Delphi

  • 1. QR codes et codes à barres sous Delphi Webinaire du 26 mars 2019 (c) Patrick Prémartin / developpeur-pascal.fr
  • 2. Au menu du jour • Introduction • C’est quoi un QR code ou un code à barres ? • La génération de QR codes et codes à barres • La lecture de QR codes et codes à barres • Cas pratique : fiches de lecture • Conclusion • Questions / réponses (c) Patrick Prémartin / developpeur-pascal.fr
  • 3. Introduction (c) Patrick Prémartin / developpeur-pascal.fr
  • 4. Patrick Prémartin • Ancien utilisateur de Turbo Pascal, amoureux de Delphi depuis toujours, développeur web depuis NCSA Mosaic… • Prestataire et formateur à travers sa société Olf Software. • Editeur du blog https://developpeur-pascal.fr/ • MVP Embarcadero depuis octobre 2017. • Auteur d’articles, de livres, webinariste et parfois même conférencier. (c) Patrick Prémartin / developpeur-pascal.fr
  • 5. A propos de Olf Software • Depuis octobre 2001 la société de services Olf Software propose des prestations de conseil, développement et formation sur les technologies liées au web et au développement logiciel. • La société édite également des livres, des sites Internet et des logiciels. • Site web principal : https://olfsoftware.fr (c) Patrick Prémartin / developpeur-pascal.fr
  • 6. Organisme de formation • Olf Software propose des formations en lien avec Delphi. • Des formations inter entreprises sont organisées régulièrement et annoncées sur https://se-former-a-delphi.fr/ • Des formations intra entreprise personnalisées sont faisables sur demande partout en France et en Europe. • Olf Software est un organisme de formation professionnelle enregistré en préfecture et référencé sur Datadock. Nos formations peuvent être prises en charge par les OPCA. (c) Patrick Prémartin / developpeur-pascal.fr
  • 7. Les versions de Delphi • Plusieurs licences de Delphi existent (vendu seul ou dans RAD Studio): • Academic : pour les établissements d’enseignement et leurs étudiants • Community Edition : gratuit pour tous, en licence commerciale limitée • Professional, Enterprise, Architect : pour les entreprises, selon leurs besoins • Pour toutes informations sur les licences et les tarifs contactez la société Barnsten sur https://www.barnsten.com/fr/ (c) Patrick Prémartin / developpeur-pascal.fr
  • 8. Les webinaires précédents • Je participe régulièrement à des webinaires. Une page leur est consacrée sur mon blog à l’adresse https://vasur.fr/webinairesdelphi • Vous y trouverez les rediffusions en vidéos lorsqu’elles sont disponibles, un PDF de mes présentations, le lien vers les sources des exemples présentés et des informations complémentaires. • S’y trouvent aussi les dates et liens d’inscriptions pour les prochains webinaires, conférences et formations. (c) Patrick Prémartin / developpeur-pascal.fr
  • 9. Introduction • Présentation de la société Olf Software https://www.olfsoftware.fr • Présentation de Patrick Prémartin https://www.linkedin.com/in/patrickpremartin/ • Les différentes versions de Delphi https://www.embarcadero.com/fr/products/delphi • Voir ou revoir les webinaires précédents https://vasur.fr/webinairesdelphi (c) Patrick Prémartin / developpeur-pascal.fr
  • 10. Introduction • Aujourd’hui nous allons parler de QR codes et codes à barres : • Ce qu’ils représentent. • A quoi ils servent. • D’autres technologies pour faire la même chose. • Comment les utiliser dans Delphi. (c) Patrick Prémartin / developpeur-pascal.fr
  • 11. QR code, code à barres, c’est quoi ? (c) Patrick Prémartin / developpeur-pascal.fr
  • 12. Qu’est-ce qu’un code à barres ? • Les codes à barres sont une forme de codage de chiffres et lettres dans un rectangle composé de traits verticaux noirs sur fond blanc. • Il existe de nombreux types de codes à barres. Ci-dessous un « interleave 2 of 5 » et un « code 39 ». Le dessin permet de déterminer le type utilisé et le contenu codé. • Plus d’infos sur https://en.wikipedia.org/wiki/Barcode (c) Patrick Prémartin / developpeur-pascal.fr
  • 13. Qu’est-ce qu’un QR code ? • On assimile les QR codes à des codes à barres 2D. Il en existe de nombreux formats que vous retrouverez aussi sur https://en.wikipedia.org/wiki/Barcode • Plus complexes que les codes à barres, les QR codes sont utilisés pour stocker des informations en plus gros volume avec un certain niveau de redondance. • Quand un code à barres est partiellement effacé, on perd tout. Les QR codes contribuent à limiter ce problème. (c) Patrick Prémartin / developpeur-pascal.fr
  • 14. A quoi servent-ils ? • Les codes à barres sont généralement utilisés pour identifier des objets. • Les QR codes permettant de stocker plus d’informations dans un volume plus petit ils servent à identifier des objets ou des lieux mais également à transporter des informations ou les stocker d’une façon plus facilement lisible par des automates. • Les cas d’usages les plus courants sont les étiquettes produits (codes à barres et maintenant QR codes sur les livres et spiritueux), les étiquettes d’expédition des colis (codes à barres pour le numéro de colis, QR code pour redonder l’adresse et certaines informations de colisage) et les billets de train ou de spectacles. (c) Patrick Prémartin / developpeur-pascal.fr
  • 15. A quoi servent-ils ? • Dans notre monde « augmenté » on utilise des QR codes un peu partout : sur des abribus, dans des magasins, dans des musées, sur des lieux touristiques, sur les menus des restaurants, … • Ces tags contiennent soit des informations interprétées par une application mobile, soit des URL qui peuvent renvoyer vers des pages web quand on n’a pas l’application concernée soit être interprétées par l’applications associée. • On retrouve codes à barres ou QR codes sur les cartes d’étudiants, les cartes de fidélité, les badges d’entreprises, … (c) Patrick Prémartin / developpeur-pascal.fr
  • 16. Quel intérêt ? • Codes à barres et QR codes ne coûtent rien à produire et peuvent être soit imprimés, soit tatoués, soit directement affichés sur des écrans, il est donc très facile de les utiliser. • Tous les appareils capables de capturer une image ont désormais une application de lecture de ces codes, on peut donc utiliser un smartphone directement sans avoir besoin d’équipement spécifique. • L’inconvénient c’est qu’ils sont reproductibles et lisibles par n’importe qui en ayant pris l’image. On ne doit donc pas s’en servir pour des informations sensibles ou gérer des accès sécurisés. (c) Patrick Prémartin / developpeur-pascal.fr
  • 17. Les alternatives • Quand on parle d’accès sécurisés on entre plutôt sur des technologies utilisant les RFID et NFC que liées aux QR codes et codes à barres simples. • Si aller plus loin sur ce sujet vous intéresse je vous recommande la session « Integrating with Barcode and RFID Readers » de Fernando Rizzato lors du Code Rage 2018 organisé par Embarcadero: https://www.embarcaderoacademy.com/courses/441209/lectures/84 41956 (c) Patrick Prémartin / developpeur-pascal.fr
  • 18. La génération de QR codes et codes à barres (c) Patrick Prémartin / developpeur-pascal.fr
  • 19. Générer des codes 1D et 2D • Les normes de chaque type de codes à barres (1D) et codes 2D sont connues, il est donc possible de tout faire à la main. Il suffit de dessiner ce que l’on veut obtenir dans une image. • Ni Delphi 10.3.1 Rio, ni ses prédécesseurs ne proposent de composant ou librairie pour générer des codes à barres ou QR codes. • Si on ne veut pas tout coder soi-même on peut passer par des composants externes ou l’une des libraires open source existantes (Zint ou Zxing pour les plus connues). (c) Patrick Prémartin / developpeur-pascal.fr
  • 20. Générer des codes 1D et 2D • Les outils de génération d’état intègrent généralement une solution pour avoir des codes 1D ou 2D sur les listings qu’ils génèrent. C’est notamment le cas de Fast Report et Rave Report. • Pour le reste (écrans, exports sous forme d’images) il y a de nombreuses possibilités. J’ai choisi 4 solutions à vous présenter : • Winsoft • TMS Software • Han Soft • La librairie « DelphiZXingQRCode » dispo sur GitHub. (c) Patrick Prémartin / developpeur-pascal.fr
  • 21. A propos de Winsoft • La société Winsoft s’est spécialisée dans l’empaquetage en Delphi de librairies open sources. • On retrouve de nombreuses choses sous forme de composants ou d’unités, pour la VCL ou FMX, depuis leur site. • Ils proposent des licences par pack ou globale avec l’utilisation à vie, un an de mises à jour et un support par email. • Leur site web : https://www.winsoft.sk (c) Patrick Prémartin / developpeur-pascal.fr
  • 22. Génération avec Winsoft • Pour la génération de codes 1D et 2D Winsoft se base sur la librairie open source Zint. • Ces composants sont disponibles avec les DLL et équivalents pour la VCL et FMX : • https://www.winsoft.sk/barcode.htm • https://www.winsoft.sk/fbarcode.htm (c) Patrick Prémartin / developpeur-pascal.fr
  • 23. Génération avec Winsoft Démonstration (c) Patrick Prémartin / developpeur-pascal.fr
  • 24. A propos de TMS Software • Tout développeur Delphi a forcément entendu parler de cet éditeur à un moment ou un autre de sa carrière. • TMS Software édite de nombreux packs de composants pour Delphi (VCL, FMX et IntraWeb) et maintenant aussi pour Lazarus. • Depuis un an TMS Software a sorti une solution permettant de faire des sites web en Pascal depuis Delphi et continue à mettre à jour régulièrement ses packs notamment dans le domaine de la cryptographie et le cloud. • Leur site web : https://www.tmssoftware.com/ (c) Patrick Prémartin / developpeur-pascal.fr
  • 25. Génération avec TMS Software • TMS Software ne propose pas directement de solution pour générer des codes à barres ou QR codes en revanche ils passent pas l’API du site Barcodes4Me. • Le composant est présent dans leurs packs cloud pour VCL, FMX et LCL: • https://www.tmssoftware.com/site/cloudpack.asp • https://www.tmssoftware.com/site/tmsfmxcloudpack.asp (c) Patrick Prémartin / developpeur-pascal.fr
  • 26. Génération avec TMS Software • Les composants de TMS génèrent une image que l’on peut enregistrer directement ou une URL qu’il faut appeler pour récupérer l’image générée. • Dans un cas comme dans l’autre, ils passent par un site externe et ça implique donc que le site soit accessible et opérationnel. (c) Patrick Prémartin / developpeur-pascal.fr
  • 27. Génération avec TMS Software Démonstration (c) Patrick Prémartin / developpeur-pascal.fr
  • 28. A propos de Han-soft • L’éditeur Han-soft édite des packs de composants 1D et 2D pour Delphi depuis sa création en 2001. • D’autres outils sont disponibles comme un logiciel de backup, un logiciel de tunneling et des logiciels gratuits pour générer des codes à barres (développés en Delphi avec leurs composants). • Leur site web : https://www.han-soft.com (c) Patrick Prémartin / developpeur-pascal.fr
  • 29. Génération avec Han-soft • Han-soft propose trois packs de composants pour générer des codes 1D et des codes 2D. • https://www.han-soft.com/barcode1d.php • https://www.han-soft.com/barcode2d.php • https://www.han-soft.com/barcodefmx2d.php • Ces packs de composants sont payants. Leur licence inclut une utilisation à vie et des mises à jour. (c) Patrick Prémartin / developpeur-pascal.fr
  • 30. Génération avec Han-soft • L’approche est différente des composants Winsoft ou TMS Software car ici c’est du développement en Pascal complètement indépendant d’une librairie extérieure ou d’un site web. • Il y a un composant par type de code 1D (VCL uniquement) ou 2D (VCL ou FMX). • Chaque composant permet un export de l’image dans différents formats et bien entendu l’affichage à l’écran. • Cette solution permet également de s’interfacer avec les outils de reporting habituels. (c) Patrick Prémartin / developpeur-pascal.fr
  • 31. Génération avec Han-soft (c) Patrick Prémartin / developpeur-pascal.fr
  • 32. Génération avec Han-soft Démonstration (c) Patrick Prémartin / developpeur-pascal.fr
  • 33. La solution open source • Il existe aussi des solutions open source dont celle-ci sur GitHub: « DelphiZXingQRCode ». C’est un portage Delphi partiel de la librairie Zxing. • Le téléchargement se fait depuis cette page : • https://github.com/foxitsoftware/DelphiZXingQRCode • Sa présentation est disponible sur cette page : • https://www.debenu.com/open-source/delphizxingqrcode/ (c) Patrick Prémartin / developpeur-pascal.fr
  • 34. La solution open source • La librairie « DelphiZXingQRCode » est gratuite. • Elle est libre d’utilisation y compris pour un usage commercial. • Elle ne permet de générer que des QR codes. • Elle ne fait pas le dessin elle même, c’est à nous de le faire. Un exemple est fourni dont on a juste à copier coller le source. (c) Patrick Prémartin / developpeur-pascal.fr
  • 36. La lecture de QR codes et codes à barres (c) Patrick Prémartin / developpeur-pascal.fr
  • 37. Lire des codes à barres et QR • La lecture de codes à barres et QR codes nécessite un peu de reconnaissance de formes car elle se fait depuis une image. • L’image contenant le code à interpréter peut provenir d’un flux vidéo, d’une photo ou d’un fichier selon les cas. • D’une façon générale notre logiciel doit fournir une trame (image fixe et idéalement pas floue) à la librairie qui y recherche le ou les codes présents et nous en fournit la liste. (c) Patrick Prémartin / developpeur-pascal.fr
  • 38. Lire des codes à barres et QR • Delphi ne possède pas de librairie ou de composant capable de traiter les images pour en ressortir les codes 1D ou 2D présents. • Comme pour la génération on doit faire appel à un ami mais pas de chance il y a une séance d’aqua poney à leur club de sport. • Parmi les solutions que j’ai pu trouver, j’ai retenu ces deux là : • Winsoft • La librairie « ZXing.Delphi » dispo sur GitHub (c) Patrick Prémartin / developpeur-pascal.fr
  • 39. Lire des codes à barres et QR • Si on en a la possibilité il est préférable d’utiliser des douchettes ou scanners dédiés à la lecture des codes à barres et autres codes. Ils sont plus pratiques à manier pour l’utilisateur car ils n’imposent pas l’étape de prise de photo. (c) Patrick Prémartin / developpeur-pascal.fr
  • 40. Lire des codes à barres et QR • Il existe des smartphones équipés de scanners dédiés, agissant comme une douchette ou transmettant leurs infos en bluetooth, en série ou par l’intermédiaire d’une API constructeur. • Fernando Rizzato en parle dans sa session du CodeRage 2018. Regardez là pour savoir quels équipements il préconise et comment il s’en sert sous Delphi. • https://www.embarcaderoacademy.com/courses/441209/lectures/8441956 (c) Patrick Prémartin / developpeur-pascal.fr
  • 41. Lecture avec Winsoft • Comme il existe des librairies open source pour la reconnaissance de codes à barres et QR codes, Winsoft propose plusieurs packs de composants. • Basés sur la librairie Zbar : • https://www.winsoft.sk/obr.htm • https://www.winsoft.sk/fobr.htm • Basés sur la librairie Zxing : • https://www.winsoft.sk/obrlib.htm • https://www.winsoft.sk/fobrlib.htm • https://www.winsoft.sk/aobrlib.htm (c) Patrick Prémartin / developpeur-pascal.fr
  • 42. Lecture avec Winsoft • Je ne vais parler que de « obr » et « fobr » qui sont sous la forme de composants alors que les autres ne sont accessibles que par le code. • Contrairement aux packs basés sur Zxing, le pack « Optical Barcode Recognition for FireMonkey » fonctionne sur iOS, Android, macOS et Windows. • Ces packs sont payants et embarquent les DLL et équivalents nécessaires. A nous de les déployer avec nos logiciels. (c) Patrick Prémartin / developpeur-pascal.fr
  • 43. Lecture avec Winsoft Démonstration (c) Patrick Prémartin / developpeur-pascal.fr
  • 44. La solution open source • Sur GitHub on peut trouver la librairie « ZXing.Delphi » qui est un portage de la librairie Java correspondante. • Cet ensemble de composants permet de reconnaître les codes 1D et 2D les plus courants comme c’est le cas avec les composants de Winsoft. (c) Patrick Prémartin / developpeur-pascal.fr
  • 45. La solution open source • La librairie ZXing d’origine n’est plus maintenue, celle-ci risque par conséquent de ne pas l’être non plus. • Faites donc le bon choix selon vos besoins entre le « natif Delphi » de cette librairie et le « embarque la DLL ZBar » pour la solution de Winsoft. • Aucune documentation n’est fournie, il faut donc bidouiller en s’inspirant des exemples et regarder dans les options de projet les chemins de recherche d’unités à inclure. (c) Patrick Prémartin / developpeur-pascal.fr
  • 46. Lecture avec Zxing.Delphi Démonstration (c) Patrick Prémartin / developpeur-pascal.fr
  • 47. Cas pratique : fiches de lecture (c) Patrick Prémartin / developpeur-pascal.fr
  • 48. Cas pratique : fiches de lecture • Ayant vu comment générer et lire des codes dans nos logiciels, je vous propose un cas pratique : une application permettant de consulter des données liées à des livres sur un réseau local. • J’ai découpé ce logiciel en 3 parties : • Un programme qui servira à configurer l’application mobile. • Un programme de gestion de la base de données de livres. • Une application mobile qui lira les codes à barres et affichera le titre des livres. (c) Patrick Prémartin / developpeur-pascal.fr
  • 49. Utilisation de l’AppTethering • Suite à une demande d’exemples sur developpez.com j’ai utilisé l’AppTethering pour faire discuter les programmes entre eux. • L’AppTethering est une technologie permettant de partager des données et actions entre programmes sur le réseau local ou en Bluetooth grâce à l’utilisation de deux composants. • Le TTetheringManager gère les connexions et recherches de partenaires. • Le TTetheringProfile gère les ressources et actions partagées. (c) Patrick Prémartin / developpeur-pascal.fr
  • 50. Utilisation de l’AppTethering • Ici j’utilise l’association automatique entre les différents programmes. • Chaque TTetheringManager devant s’associer a la même valeur dans la propriété Password. • Chaque TTetheringProfile (associé au bon TTetheringManager) a la même valeur dans la propriété Group pour dialoguer avec ses partenaires. • Plus d’infos sur http://docwiki.embarcadero.com/RADStudio/Rio/en/Using_App_Teth ering (c) Patrick Prémartin / developpeur-pascal.fr
  • 51. Cas pratique : fiches de lecture Le programme de configuration (c) Patrick Prémartin / developpeur-pascal.fr
  • 52. Le programme de configuration • Le programme de configuration est un écran tout simple développé avec IntraWeb. • On saisit le mot de passe que l’on veut utiliser entre les applications mobiles et le logiciel de gestion. • Le programme génère le QR code correspondant pour l’application mobile et envoi le mot de passe à l’application de gestion par l’intermédiaire de la ressource « Password » partagée en AppTethering. (c) Patrick Prémartin / developpeur-pascal.fr
  • 53. Le programme de configuration • Notez que les composants non visuels sont au niveau du serveur et non de la session utilisateur ou de l’écran lui-même. Ca permet de s’assurer de leur existence et pérennité durant toute l’exécution de l’application. • Quand vous utilisez un système de type serveur comme celui-ci n’oubliez pas de gérer les synchronisations de threads. Là je n’ai qu’un seul utilisateur donc je ne risque pas de violations d’accès à chaque appel de page. (c) Patrick Prémartin / developpeur-pascal.fr
  • 54. Cas pratique : fiches de lecture Le programme de gestion de la base de données (c) Patrick Prémartin / developpeur-pascal.fr
  • 55. Le programme de gestion de la base de données • La base de données est gérée sous forme de table en mémoire avec un TFDMemTable persistant. • Etant en VCL pour ce programme j’ai opté pour des composants TDBxxx et un TDataSource pour les mises à jour plutôt que passer par Live Bindings. (c) Patrick Prémartin / developpeur-pascal.fr
  • 56. Le programme de gestion de la base de données • La communication avec le configurateur se fait en App Tethering, le programme de gestion étant client de celui-ci. • La communication avec l’application mobile se fait dans les deux sens : une ressource partagée pour la lecture, un envoi de texte pour la réponse. • Dans une application classique il aurait mieux valu utiliser de vraies API (par exemple avec un serveur REST) ou du RPC. Là je détourne l’usage standard de l’App Tethering mais ça fonctionne très bien. (c) Patrick Prémartin / developpeur-pascal.fr
  • 57. Cas pratique : fiches de lecture L’application mobile de lecture (c) Patrick Prémartin / developpeur-pascal.fr
  • 58. L’application mobile de lecture • Pour l’application mobile il y a deux écrans gérés sous forme d’onglets. • Le premier sert à la configuration par la lecture du QR code contenant le mot de passe à utiliser en AppTethering. • Le second sert à la lecture des codes à barres des livres et à l’affichage de leur titre. (c) Patrick Prémartin / developpeur-pascal.fr
  • 59. L’application mobile de lecture • La lecture se fait à l’aide de la caméra du smartphone. • Chaque trame est affichée à l’écran et une recherche de code 1D/2D est faite. • Sur la config : une fois le QR code trouvé on change la configuration du TTetheringManager et on lance l’auto connexion. • Sur la lecture: lorsque le programme trouve un code, il remplit la ressource « CB » partagée en AppTethering avec le programme de gestion de base. (c) Patrick Prémartin / developpeur-pascal.fr
  • 60. L’application mobile de lecture • Lorsqu’un code est envoyé au gestionnaire de la base de données, on n’attend pas de réponse. Elle est gérée sous forme d’événement directement depuis le TTetheringProfile. (c) Patrick Prémartin / developpeur-pascal.fr
  • 61. L’application mobile de lecture • Notez qu’il faut penser à désactiver la caméra lorsque l’application perd le focus, sinon on bloque le périphérique et aucune autre application ne peut l’utiliser. • Notez également que l’AppTethering fonctionne en « broadcast » sans notion de client / serveur. On peut lancer plusieurs exemplaires du programme de gestion de la base sur le réseau. Ils recevront tous les codes envoyés par les applications mobiles. Tenez en compte dans vos développements si vous utilisez l’AppTethering pour faire du client/serveur. (c) Patrick Prémartin / developpeur-pascal.fr
  • 62. Exemple : fiches de lecture Démonstration (c) Patrick Prémartin / developpeur-pascal.fr
  • 63. Bonus « poisson chat » (c) Patrick Prémartin / developpeur-pascal.fr
  • 64. Bonus « poisson chat » • Les QR codes ont l’avantage d’être redondants, on peut donc les abimer volontairement en respectant certaines limites. C’est pour cela qu’on voit parfois des codes avec une image dedans. • C’est grâce à la redondance que ces codes restent lisibles. (c) Patrick Prémartin / developpeur-pascal.fr
  • 65. Bonus « poisson chat » • On peut aller encore plus loin dans les modifications d’un QR code tout en conservant un certain niveau de lisibilité. • Ici, par exemple, j’utilise les points comme masque pour incruster le code dans une image. (c) Patrick Prémartin / developpeur-pascal.fr
  • 66. Bonus « poisson chat » • Aucun des composants vus aujourd’hui ne gère ces modifications en standard mais on peut très bien le faire avec les filtres ou en copiant les images par un QR code généré. • Si vous « jouez » à ça pour vos codes pensez à ne pas trop déborder du centre du QR code ou de son angle bas / droite. • Si vous incrustez le code dans une image, il ne sera pas lisible par tous les logiciels. Dans le vôtre pensez à passer l’image en noir et blanc avant de lancer un scan dessus. (c) Patrick Prémartin / developpeur-pascal.fr
  • 67. Conclusion (c) Patrick Prémartin / developpeur-pascal.fr
  • 68. Conclusion • Les solutions proposées aujourd’hui ne sont pas les seules. Vous pourrez en trouver d’autres en cherchant sur Internet ou créer les vôtres selon les besoins. • Si vous avez besoin de transmettre des informations utilisez plutôt des QR codes qui sont lisibles par tout logiciel interprétant les codes 1D / 2D et lisibles nativement dans les versions récentes d’Android et iOS. • Pour les solutions sécurisées n’utilisez des codes imprimés qu’en secours de technologies hardware comme RFID / NFC et 2FA. (c) Patrick Prémartin / developpeur-pascal.fr
  • 69. Conclusion • Ce webinaire et les sources des démos seront rapidement mis à disposition sur le blog https://developpeur-pascal.fr • Prochains événements en live : => meetup à Lille le 25 avril 2019 => journées de conférence à Lyon (14/05), Aix en Provence (16/05), Bordeaux (21/05) et Nantes (23/05) Nombre de places limitées, inscrivez-vous dès maintenant depuis https://www.barnsten.com/fr/evenements • Prochain webinaire le 23 avril : => Utiliser les assistants de l’EDI pour développer en multiplateforme (c) Patrick Prémartin / developpeur-pascal.fr
  • 70. Questions / réponses (c) Patrick Prémartin / developpeur-pascal.fr