QRCodeCreator (By Dige - Forum anglophone)

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

QRCodeCreator (By Dige - Forum anglophone)

Message par falsam »

QRCodeCreator est une magnifique ressource crée par Dige en 2011 pour générer des code-barres en deux dimensions lisible avec par un lecteur de code-barres ou une application sur SmartPhone par exemple.

Je vous laisse lire les domaines d'applications sur ce lien : https://fr.wikipedia.org/wiki/Code_QR

Si vous avez une application sur votre smartphone essayez de lire ces deux exemples que j'ai pu lire avec QR Code Reader pour Android.

Image Image

Possible que le deuxième QRCode soit trop petit.

:arrow: Download QRCodeCreator.zip (Source, Lib, DLL)
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Philippe_GEORGES
Messages : 112
Inscription : mer. 28/janv./2009 13:28

Re: QRCodeCreator (By Dige - Forum anglophone)

Message par Philippe_GEORGES »

Un grand merci !!

Phil
Philippe GEORGES
"La simplicité est la sophistication suprême" (De Vinci)
assistance informatique, création de logiciels
georges.informatique@gmail.com
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: QRCodeCreator (By Dige - Forum anglophone)

Message par falsam »

Philippe_GEORGES a écrit :Un grand merci !!Phil
De rien et une très bonne année.

Quelques trucs pratiques.
-Pour envoyer un SMS sms:votretel:votremessage
-Appeler un numéro de téléphone tel:+votretel

-Si vous donnez acces à votre point de connexion wifi
WIFI:T:WPA/WPA2;S:idWifi;P:password;;
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: QRCodeCreator (By Dige - Forum anglophone)

Message par falsam »

Le fichier a télécharger est modifié.
-Ajout d'un code de démonstration différent du précédant et séparé de l'include.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: QRCodeCreator (By Dige - Forum anglophone)

Message par GallyHC »

Vraiment sympa et pratique comme code, Merci.

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: QRCodeCreator (By Dige - Forum anglophone)

Message par Marc56 »

Est-il possible de convertir ce code pour le faire fonctionner en 64 bits ?
ou est-ce lié à la lib qui n'est pas compatible ?
(je n'y connais pour l'instant pas grand chose dans les fonctions Importc etc)

Cela fonctionne parfaitement bien avec PB 5.72 LTS x86
mais pas avec la version x64

Code : Tout sélectionner

Attente du démarrage du programme...
Type d'exécutable: Windows - x64  (64bit, Unicode)
Exécutable démarré.
[ERREUR] QRCreator_GUI.pb (Ligne: 24)
[ERREUR] Accès mémoire invalide. (erreur de lecture à l'adresse 18446744073709551615)
Le programme a été arrêté.

Ligne 24
*Qrcode = QRcode_encodeString8bit(content, 0, EC_Level)
Le deuxième programme du package fonctionne aussi bien en 32 bits mais pas en 64

Code : Tout sélectionner

---------------------------
PureBasic_Compilation1.exe - Erreur système
---------------------------
Impossible d’exécuter le code, car ÁG.DLL est introuvable. La réinstallation du programme peut corriger ce problème. 
---------------------------
OK   

L'exécutable de débogage se ferme de façon inattendue.
Code d'origine de Dige qui fonctionne en 5.72 LTS x86
https://www.purebasic.fr/english/viewto ... 12&t=47938
j'a juste ajouté un CompilerIf et changé l'emplacement de la lib

Code : Tout sélectionner

; by Dige 10/2011
; http://www.purebasic.fr/english/viewtopic.php?f=12&t=47938
; Create 2D Barcodes (QRCode) based on qrencode-win32
; Requires: qrcodelib.lib, qrcodelib.dll
; http://code.google.com/p/qrencode-win32/downloads/list

; --- Ajouté 
CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
    CompilerError "Désolé, Ce programme ne fonctionne pas en 64 bits, sélectionnez le compilateur x86"
CompilerEndIf

Structure QRCode
  Version.l
  Width.l
  pSymbolData.l
EndStructure

Enumeration
  #QR_ECLEVEL_L = 0 ; lowest
  #QR_ECLEVEL_M
  #QR_ECLEVEL_Q
  #QR_ECLEVEL_H     ; highest
EndEnumeration

; ImportC "..\Lib\qrcodelib.lib"
; --- Emplacement de la lib
ImportC "qrcodelib.lib"
  QRcode_encodeString8bit(Text.p-ascii, Version.l, QRecLevel.l) As "_QRcode_encodeString8bit"
  QRcode_free(*Qrcode.QRCode) As "_QRcode_free"
EndImport

Procedure CreateQRCode (content.s, ImgID = #PB_Any, EC_Level = #QR_ECLEVEL_L, Size=4 )
  Protected *Qrcode.QRCode, QRImg
 
  *Qrcode = QRcode_encodeString8bit(content, 0, EC_Level)
 
  With *Qrcode
    If *Qrcode = 0 Or \Width = 0
      ProcedureReturn #Null
    Else
      *mem = \pSymbolData
      w    = \Width
    EndIf
  EndWith
 
  QRImg  = CreateImage(ImgID, w, w)
 
  If QRImg
    If ImgID = #PB_Any
      ImgID = QRImg
    EndIf
  EndIf
 
  If StartDrawing(ImageOutput(ImgID))
      ; White Background
      Box (0, 0, ImageWidth(ImgID), ImageHeight(ImgID), #White) 
     
      ; Draw Black Dots
      For y = 0 To w - 1
        For x = 0 To w - 1
          b = PeekB(*mem) & $FF
          If b & 1
            Plot( x, y, #Black)
          EndIf
          *mem + 1
        Next
      Next
     
    StopDrawing()
   
    w * Size
    ResizeImage( ImgID, w, w, #PB_Image_Raw)
  EndIf
 
  QRcode_free(*Qrcode)
 
  ProcedureReturn ImgID
EndProcedure

; Example, how to use it:
CreateImage(0, 200, 200)

OpenWindow(#Null, 0, 0, 450, 400, "2D Barcode Creator", #WS_OVERLAPPEDWINDOW|#PB_Window_ScreenCentered )
TextGadget(#PB_Any, 10, 4, 50, 16, "Text" )
StringGadget(0, 10, 20, 200, 20, "Feel the Pure Power!" )

TextGadget(#PB_Any, 10, 44, 50, 16, "EC_Level" )
TrackBarGadget(1, 10, 60, 100, 20, #QR_ECLEVEL_L, #QR_ECLEVEL_H, #PB_TrackBar_Ticks)

TextGadget(#PB_Any, 110, 44, 50, 16, "Size" )
TrackBarGadget(2, 110, 60, 100, 20, 1, 10, #PB_TrackBar_Ticks)

ImageGadget (3, 10, 90, 430, 550, ImageID(0), #PB_Image_Border)

Repeat
 
  Event = WaitWindowEvent()
 
  If Event = #PB_Event_Gadget
    Select EventGadget()
      Case 0, 1, 2
        ImgID = CreateQRCode(GetGadgetText(0), #Null, GetGadgetState(1), GetGadgetState(2))
        If IsImage(ImgID)
          SetGadgetState(3, ImageID(ImgID))
        EndIf
    EndSelect
  EndIf

Until Event = #PB_Event_CloseWindow
:?: :wink:
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: QRCodeCreator (By Dige - Forum anglophone)

Message par Ar-S »

C'est drôle j'ai compilé la Lib avant hier quand j'ai vu que l'Etat allait permettre de créer des attestations numériques de déplacements via QRCode :P
J'attendais le 6 avec impatience :mrgreen:
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: QRCodeCreator (By Dige - Forum anglophone)

Message par Ollivier »

Ar-S a écrit :J'attendais le 6 avec impatience
Je... Excuse mon inculture véritable, voire mon ignorance, mais, je... Je comprends pô...
Avatar de l’utilisateur
Mindphazer
Messages : 635
Inscription : mer. 24/août/2005 10:42

Re: QRCodeCreator (By Dige - Forum anglophone)

Message par Mindphazer »

Le 6 avril
Date à laquelle l'attestation en ligne a été mise à disposition
Bureau : Win10 64bits
Maison : Macbook Pro M1 14" SSD 512 Go / Ram 16 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
zaphod_b
Messages : 76
Inscription : mar. 09/déc./2014 20:02

Re: QRCodeCreator (By Dige - Forum anglophone)

Message par zaphod_b »

Salut à tous.

J'ai compilé la lib de Fukuchi qrencodelib (dernière version, 4.1) avec mingGW 4.3.5 (dernière version) dans l'environnement CodeBlocks.
C'est dispo ici : https://github.com/docroger/qrencodelib

Il y a les version x86 et x64 : on peut dont compiler en 64 bits.

Pour compiler en x64 il faut modifier le code :

Code : Tout sélectionner

ImportC "d:\perso\qrencodelib.lib"
  CompilerIf #PB_Compiler_Processor=#PB_Processor_x86
  QRcode_encodeString8bit(Text.p-ascii, Version.l, QRecLevel.l) As "_QRcode_encodeString8bit"
  QRcode_free(*Qrcode.QRCode) As "_QRcode_free"
  CompilerElse
  QRcode_encodeString8bit(Text.p-ascii, Version.l, QRecLevel.l) As "QRcode_encodeString8bit"
  QRcode_free(*Qrcode.QRCode) As "QRcode_free"
  CompilerEndIf
EndImport
Voilà.
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: QRCodeCreator (By Dige - Forum anglophone)

Message par Marc56 »

Super, ça fonctionne, Merci :P
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: QRCodeCreator (By Dige - Forum anglophone)

Message par GallyHC »

Bonjour,

@zaphod_b > Déjà merci pour la compilation de cette DLL, par contre pour pouvoir les mettre dans le même répertoire que le programme principal, ne serait t'il pas possible d'avoir une version écrit "qrencodelib_x32.lib" et "qrencodelib_x64.lib"?

Encore merci et bonne continuation
GallyHC,
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: QRCodeCreator (By Dige - Forum anglophone)

Message par Marc56 »

Bon idée, et peut-être même mieux, garder le nom ancien pour la version 32 bits et suffixer _x64 la version 64 bits. Ainsi ceux qui ont déjà écrits des programmes 32 bits utilisant cette lib n'auront juste qu'à ajouter les nouvelles lib/dll, sans modifier la code de base ?

Il semble que renommer les fichiers ne suffise pas. Le nom est utilisé "en dur" dans le code ?

:wink:
Répondre