1. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

QR code

Discussion dans 'Windev' créé par RADOUANE999, Mai 17, 2018.

  1. RADOUANE999

    RADOUANE999 Member

    Inscrit:
    Mar 21, 2018
    Messages:
    66
    J'aime reçus:
    18
    [Modé]
    UN BONJOUR fait toujours plaisir.

    QR code
    C' est possible de decode un Qr Code via webcam sous windows ( avec windev )
    j ai trouve Zxing mais je tourve pas le code d utilisation
     
    #1 RADOUANE999, Mai 17, 2018
    Dernière édition par un modérateur: Nov 25, 2018
    Tags:
  2. kabeda

    kabeda Active Member

    Inscrit:
    Avr 23, 2018
    Messages:
    173
    J'aime reçus:
    63
    Bonjour,
    je ne sais pas si tu es passé par

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    et ce que tu en penses.
     
    joker apprécie ceci.
  3. Kobex

    Kobex Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    373
    J'aime reçus:
    257
    Bonjour,

    Déjà, un bonjour et un merci est le bienvenu (la B A Ba de la politesse quoi )

    Pour lire via webcam j'intègre ceci dans webdev

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    cela fonctionne bien si la tablette est de bonne qualité et asse performante.

    Bon dev ;)
     
    suenodesign et joker aiment ça.
  4. RADOUANE999

    RADOUANE999 Member

    Inscrit:
    Mar 21, 2018
    Messages:
    66
    J'aime reçus:
    18
    Bonjour a vous
    je veux exécute sous windows pas sous android (..)
     
    joker apprécie ceci.
  5. Kobex

    Kobex Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    373
    J'aime reçus:
    257
    dans ce cas c'est pareille, c'est html5 et plugin JS, cette technique fonctionne quelque soit l'OS, chrome marche nickel avec le plugin
     
    suenodesign et joker aiment ça.
  6. popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,938
    J'aime reçus:
    1,564

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Pcsoft a fait un exemple avec cette dll dans la lst 98
     
  7. Razorte

    Razorte Member

    Inscrit:
    Mai 11, 2018
    Messages:
    49
    J'aime reçus:
    50
    Pour Zxing il te faut une procédure qui ce répète dans le temps avec ce code :
    Code (Text):

    PROCEDURE Scan()

    MonCB est un CodeBarres
    // Détection automatique de code-barres
    MonCB = CBCapture(Cam)

    SI PAS ErreurDétectée ET MonCB..Contenu  <> 1 ALORS
        FinAutomatismeProcédure(Scan)
        VidéoArrête(Cam, viArrêteTout)
        Ferme(F_Principale,MonCB..Contenu)
    FIN
     
    Ensuite 2 autres procédure son nécessaire :
    Code (Text):

    PROCEDURE CBCapture(ChampWebcam est un Champ, LOCAL nTypeCodeBarres est un entier = -1) : CodeBarres
    sFichierTmp         est une chaîne  
    pclZXINGDecoder     est un IBarcodeReader dynamique
    MonCodeBarres         est un CodeBarres
    MonCodeBarres..Contenu  = 1

    // Génère un nom de fichier temporaire
    sFichierTmp = fFichierTemp()
    // Capture l'image depuis la caméra
    SI VidéoCapture(ChampWebcam, sFichierTmp, viCaptureImage) ALORS
        // Charge l'image
        pclImage est une Bitmap dynamique = Bitmap.FromFile(sFichierTmp)      
       
        // Supprime le fichier temporaire
        SI PAS fSupprime(sFichierTmp) ALORS
            // Lecture de ErreurInfo pour réinitialiser ErreurDétectée
            ErreurInfo()
        FIN
       
        // Charge le décodeur
        pclZXINGDecoder = allouer un BarcodeReader()
       
        // Décode l'image
        pclRésultat est un ZXing.RESULT dynamique = pclZXINGDecoder.Decode(pclImage)
        SI pclRésultat <> Null ALORS
           
            bCodeBarresValide    est un booléen = Vrai          
            sContenu            est une chaîne = pclRésultat.Text          
           
                        // ASTUCE
                        // Pour dessiner les limites du code-barres à l'écran, dé-commentez le code ci-dessous :
           
    //                    tabPoints            est un tableau de ResultPoint dynamique = pclRésultat.ResultPoints
    //      
    //                    // Remplacez <Champ> par le nom du champ dans lequel l'image sera affichée                      
    //                    dDébutDessin(ChampWebcam, dEffacer)
    //                  
    //                    // 2 points
    //                    si tabPoints..Occurrence = 2 ALORS
    //                        dligne(tabPoints[1].X, tabPoints[1].Y, tabPoints[2].X, tabPoints[2].Y, RougeClair, 4)
    //                  
    //                    // 4 points
    //                    sinon SI tabPoints..Occurrence = 4 _et_ (pclRésultat.BarcodeFormat dans (BarcodeFormat::EAN_13, BarcodeFormat::UPC_A)) ALORS        
    //                        dLigne(tabPoints[1].X, tabPoints[1].Y, tabPoints[2].X, tabPoints[2].Y, RougeClair, 3)
    //                        dLigne(tabPoints[3].X, tabPoints[3].Y, tabPoints[4].X, tabPoints[4].Y, RougeClair, 3)
    //                    sinon
    //                        dstylo(rougeclair, 0, 10)
    //                        pour tout pclPoint de tabPoints
    //                            dpoint(pclPoint.X,pclPoint.Y, rougeclair)
    //                        FIN
    //                    FIN
           
            // Selon le format                                  
            SELON pclRésultat.BarcodeFormat
                CAS BarcodeFormat::QR_CODE
                    MonCodeBarres.TypeCodeBarres = CB_QRCODE
                CAS BarcodeFormat::CODABAR
                    MonCodeBarres.TypeCodeBarres = CB_CODABAR
                CAS BarcodeFormat::CODE_39
                    MonCodeBarres.TypeCodeBarres = CB_CODE39
                CAS BarcodeFormat::CODE_93
                    MonCodeBarres.TypeCodeBarres = CB_CODE93
                CAS BarcodeFormat::CODE_128
                    MonCodeBarres.TypeCodeBarres = CB_CODE128
                CAS BarcodeFormat::DATA_MATRIX
                    MonCodeBarres.TypeCodeBarres = CB_DATAMATRIX
                CAS BarcodeFormat::EAN_8
                    MonCodeBarres.TypeCodeBarres = CB_EAN8
                   
                    // Si le caractère de contrôle est inséré, on le supprime
                    SI Taille(sContenu) > 7 ALORS sContenu = sContenu[[A 7]]
                   
                CAS BarcodeFormat::EAN_13
                    MonCodeBarres.TypeCodeBarres = CB_EAN13
                   
                    // Si le caractère de contrôle est inséré, on le supprime
                    SI Taille(sContenu) > 12 ALORS sContenu = sContenu[[A 12]]
                CAS BarcodeFormat::ITF
                    MonCodeBarres.TypeCodeBarres = CB_INTER2OF5
                CAS BarcodeFormat::MSI
                    MonCodeBarres.TypeCodeBarres = CB_MSI
                CAS BarcodeFormat::PDF_417
                    MonCodeBarres.TypeCodeBarres = CB_PDF417
                CAS BarcodeFormat::UPC_A
                    MonCodeBarres.TypeCodeBarres = CB_UPCA
                CAS BarcodeFormat::UPC_E
                    MonCodeBarres.TypeCodeBarres = CB_UPCE
                   
                    // Non supportés
                    // BarcodeFormat::AZTEC, BarcodeFormat::MAXICODE, BarcodeFormat::PLESSEY, ...
                // BarcodeFormat::RSS_14, barcodeFormat::RSS_EXPANDED, BarcodeFormat::UPC_EAN_EXTENSION, BarcodeFormat::All_1D
                AUTRES CAS
                    bCodeBarresValide = Faux
            FIN
           
            // Si le code barre est valide
            SI bCodeBarresValide ALORS  
               
                // Vérifie si le type de code-barres correspond à celui attendu
                SI (nTypeCodeBarres <> -1 _ET_ MonCodeBarres.TypeCodeBarres = nTypeCodeBarres) _OU_ nTypeCodeBarres = -1 ALORS
                   
                    // Lecture du contenu          
                    MonCodeBarres.Contenu = sContenu      
                   
                    // Lecture de ErreurInfo pour réinitialiser ErreurDétectée
                    ErreurInfo()              
                    RENVOYER MonCodeBarres
                FIN
            FIN
        FIN
    FIN

    ErreurDéclenche(404, "Aucun code-barres n'a été détecté")
    RENVOYER MonCodeBarres  
     
    N'oublie pas de démarrer le scan au début :
    Code (Text):

    // Démarre le scan
    ExécuteTraitement(COMBO_CAM, trtSélection)
     
    Normalement si tu a ajouter l'assemblages .NET ZXing sa devrais fonctionner j'avais fait une application avec ce code il y a longtemps.

    PS:Ceci est mon code et non celui de la LST donc ajuste le pour ton projet.
     
  8. RADOUANE999

    RADOUANE999 Member

    Inscrit:
    Mar 21, 2018
    Messages:
    66
    J'aime reçus:
    18

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Pour Zxing il te faut une procédure qui ce répète dans le temps avec ce code :
    Code (Text):

    PROCEDURE Scan()

    MonCB est un CodeBarres
    // Détection automatique de code-barres
    MonCB = CBCapture(Cam)

    SI PAS ErreurDétectée ET MonCB..Contenu  <> 1 ALORS
        FinAutomatismeProcédure(Scan)
        VidéoArrête(Cam, viArrêteTout)
        Ferme(F_Principale,MonCB..Contenu)
    FIN
     
    Ensuite 2 autres procédure son nécessaire :
    Code (Text):

    PROCEDURE CBCapture(ChampWebcam est un Champ, LOCAL nTypeCodeBarres est un entier = -1) : CodeBarres
    sFichierTmp         est une chaîne  
    pclZXINGDecoder     est un IBarcodeReader dynamique
    MonCodeBarres         est un CodeBarres
    MonCodeBarres..Contenu  = 1

    // Génère un nom de fichier temporaire
    sFichierTmp = fFichierTemp()
    // Capture l'image depuis la caméra
    SI VidéoCapture(ChampWebcam, sFichierTmp, viCaptureImage) ALORS
        // Charge l'image
        pclImage est une Bitmap dynamique = Bitmap.FromFile(sFichierTmp)      
     
        // Supprime le fichier temporaire
        SI PAS fSupprime(sFichierTmp) ALORS
            // Lecture de ErreurInfo pour réinitialiser ErreurDétectée
            ErreurInfo()
        FIN
     
        // Charge le décodeur
        pclZXINGDecoder = allouer un BarcodeReader()
     
        // Décode l'image
        pclRésultat est un ZXing.RESULT dynamique = pclZXINGDecoder.Decode(pclImage)
        SI pclRésultat <> Null ALORS
         
            bCodeBarresValide    est un booléen = Vrai          
            sContenu            est une chaîne = pclRésultat.Text          
         
                        // ASTUCE
                        // Pour dessiner les limites du code-barres à l'écran, dé-commentez le code ci-dessous :
         
    //                    tabPoints            est un tableau de ResultPoint dynamique = pclRésultat.ResultPoints
    //      
    //                    // Remplacez <Champ> par le nom du champ dans lequel l'image sera affichée                      
    //                    dDébutDessin(ChampWebcam, dEffacer)
    //                  
    //                    // 2 points
    //                    si tabPoints..Occurrence = 2 ALORS
    //                        dligne(tabPoints[1].X, tabPoints[1].Y, tabPoints[2].X, tabPoints[2].Y, RougeClair, 4)
    //                  
    //                    // 4 points
    //                    sinon SI tabPoints..Occurrence = 4 _et_ (pclRésultat.BarcodeFormat dans (BarcodeFormat::EAN_13, BarcodeFormat::UPC_A)) ALORS        
    //                        dLigne(tabPoints[1].X, tabPoints[1].Y, tabPoints[2].X, tabPoints[2].Y, RougeClair, 3)
    //                        dLigne(tabPoints[3].X, tabPoints[3].Y, tabPoints[4].X, tabPoints[4].Y, RougeClair, 3)
    //                    sinon
    //                        dstylo(rougeclair, 0, 10)
    //                        pour tout pclPoint de tabPoints
    //                            dpoint(pclPoint.X,pclPoint.Y, rougeclair)
    //                        FIN
    //                    FIN
         
            // Selon le format                                  
            SELON pclRésultat.BarcodeFormat
                CAS BarcodeFormat::QR_CODE
                    MonCodeBarres.TypeCodeBarres = CB_QRCODE
                CAS BarcodeFormat::CODABAR
                    MonCodeBarres.TypeCodeBarres = CB_CODABAR
                CAS BarcodeFormat::CODE_39
                    MonCodeBarres.TypeCodeBarres = CB_CODE39
                CAS BarcodeFormat::CODE_93
                    MonCodeBarres.TypeCodeBarres = CB_CODE93
                CAS BarcodeFormat::CODE_128
                    MonCodeBarres.TypeCodeBarres = CB_CODE128
                CAS BarcodeFormat::DATA_MATRIX
                    MonCodeBarres.TypeCodeBarres = CB_DATAMATRIX
                CAS BarcodeFormat::EAN_8
                    MonCodeBarres.TypeCodeBarres = CB_EAN8
                 
                    // Si le caractère de contrôle est inséré, on le supprime
                    SI Taille(sContenu) > 7 ALORS sContenu = sContenu[[A 7]]
                 
                CAS BarcodeFormat::EAN_13
                    MonCodeBarres.TypeCodeBarres = CB_EAN13
                 
                    // Si le caractère de contrôle est inséré, on le supprime
                    SI Taille(sContenu) > 12 ALORS sContenu = sContenu[[A 12]]
                CAS BarcodeFormat::ITF
                    MonCodeBarres.TypeCodeBarres = CB_INTER2OF5
                CAS BarcodeFormat::MSI
                    MonCodeBarres.TypeCodeBarres = CB_MSI
                CAS BarcodeFormat::PDF_417
                    MonCodeBarres.TypeCodeBarres = CB_PDF417
                CAS BarcodeFormat::UPC_A
                    MonCodeBarres.TypeCodeBarres = CB_UPCA
                CAS BarcodeFormat::UPC_E
                    MonCodeBarres.TypeCodeBarres = CB_UPCE
                 
                    // Non supportés
                    // BarcodeFormat::AZTEC, BarcodeFormat::MAXICODE, BarcodeFormat::PLESSEY, ...
                // BarcodeFormat::RSS_14, barcodeFormat::RSS_EXPANDED, BarcodeFormat::UPC_EAN_EXTENSION, BarcodeFormat::All_1D
                AUTRES CAS
                    bCodeBarresValide = Faux
            FIN
         
            // Si le code barre est valide
            SI bCodeBarresValide ALORS  
             
                // Vérifie si le type de code-barres correspond à celui attendu
                SI (nTypeCodeBarres <> -1 _ET_ MonCodeBarres.TypeCodeBarres = nTypeCodeBarres) _OU_ nTypeCodeBarres = -1 ALORS
                 
                    // Lecture du contenu          
                    MonCodeBarres.Contenu = sContenu      
                 
                    // Lecture de ErreurInfo pour réinitialiser ErreurDétectée
                    ErreurInfo()              
                    RENVOYER MonCodeBarres
                FIN
            FIN
        FIN
    FIN

    ErreurDéclenche(404, "Aucun code-barres n'a été détecté")
    RENVOYER MonCodeBarres  
     
    N'oublie pas de démarrer le scan au début :
    Code (Text):

    // Démarre le scan
    ExécuteTraitement(COMBO_CAM, trtSélection)
     
    Normalement si tu a ajouter l'assemblages .NET ZXing sa devrais fonctionner j'avais fait une application avec ce code il y a longtemps.

    PS:Ceci est mon code et non celui de la LST donc ajuste le pour ton projet.
    Cliquez pour agrandir...
    un Grand Merci a vous
     
    Razorte apprécie ceci.
  • Ricardo Cassolatto

    Ricardo Cassolatto New Member

    Inscrit:
    Mar 27, 2021
    Messages:
    19
    J'aime reçus:
    0
    Hi there !

    Please, waht LST contains the code to use directly zXing ( in java or other way ) isntead of BCapture() ?

    Marci in advance !
     
  • Isabelle

    Isabelle Active Member

    Inscrit:
    Jan 18, 2018
    Messages:
    358
    J'aime reçus:
    249

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Hi there !

    Please, waht LST contains the code to use directly zXing ( in java or other way ) isntead of BCapture() ?

    Marci in advance !
    Cliquez pour agrandir...
    Popoy a dit (plus haut) :

    Pcsoft a fait un exemple avec cette dll dans la lst 98
     
  • Ricardo Cassolatto

    Ricardo Cassolatto New Member

    Inscrit:
    Mar 27, 2021
    Messages:
    19
    J'aime reçus:
    0
    Marci, I found it !
     
  • popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,938
    J'aime reçus:
    1,564

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Popoy a dit (plus haut) :

    Pcsoft a fait un exemple avec cette dll dans la lst 98
    Cliquez pour agrandir...
    Je crois me souvenir sauf erreur que la LST en question est pour Windows.
    Zxing pour Android il faut installer l'application et utiliser cbcapture
    Mais c'est plus d'actualité
    Il faut maintenant utiliser un champ caméra
    La question a déjà été posé plus de 5 fois sur plusieurs forums.
     
  • Ricardo Cassolatto

    Ricardo Cassolatto New Member

    Inscrit:
    Mar 27, 2021
    Messages:
    19
    J'aime reçus:
    0

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Acho que me lembro corretamente que o LST em questão é para Windows.
    Zxing para Android você precisa instalar o aplicativo e usar o cbcapture
    Mas é mais relevante
    Agora você deve usar um controle de câmera
    Esta pergunta já foi feita mais de 5 vezes em vários fóruns.
    Cliquez pour agrandir...
    Good Morning !

    Yes, now just use the camera control, but, isn´t so precise as Zxing , I´ve done tests with both, and Camera control don´read so well as Zxing, the great question to me is, I didn´t know java , but I find a lot of examples using java and Zxing lib , avoiding to download the lib !

    Thank you !
     
  • Partager cette page

    Chargement...