Page 1 sur 1

QRCodeCreator (By Dige - Forum anglophone)

Publié : ven. 19/juin/2015 13:38
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)

Re: QRCodeCreator (By Dige - Forum anglophone)

Publié : sam. 02/janv./2016 17:00
par Philippe_GEORGES
Un grand merci !!

Phil

Re: QRCodeCreator (By Dige - Forum anglophone)

Publié : sam. 02/janv./2016 17:13
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;;

Re: QRCodeCreator (By Dige - Forum anglophone)

Publié : sam. 02/janv./2016 17:50
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.

Re: QRCodeCreator (By Dige - Forum anglophone)

Publié : lun. 04/janv./2016 18:45
par GallyHC
Vraiment sympa et pratique comme code, Merci.

Cordialement,
GallyHC

Re: QRCodeCreator (By Dige - Forum anglophone)

Publié : dim. 05/avr./2020 9:09
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:

Re: QRCodeCreator (By Dige - Forum anglophone)

Publié : dim. 05/avr./2020 10:56
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:

Re: QRCodeCreator (By Dige - Forum anglophone)

Publié : mar. 07/avr./2020 8:23
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ô...

Re: QRCodeCreator (By Dige - Forum anglophone)

Publié : mar. 07/avr./2020 10:01
par Mindphazer
Le 6 avril
Date à laquelle l'attestation en ligne a été mise à disposition

Re: QRCodeCreator (By Dige - Forum anglophone)

Publié : sam. 18/avr./2020 9:45
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à.

Re: QRCodeCreator (By Dige - Forum anglophone)

Publié : sam. 18/avr./2020 10:18
par Marc56
Super, ça fonctionne, Merci :P

Re: QRCodeCreator (By Dige - Forum anglophone)

Publié : sam. 18/avr./2020 10:50
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,

Re: QRCodeCreator (By Dige - Forum anglophone)

Publié : sam. 18/avr./2020 13:10
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: