IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Comment réaliser une application de lecture et d'impression codes barres?


Sujet :

Langage Delphi

  1. #21
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    478
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2005
    Messages : 478
    Points : 89
    Points
    89
    Par défaut
    bonjour
    bon je pense vraiment à ça, c'est à dire comment valider le code à entrer et l'ajout du caractére #13 (entrée) c'est la meilleur solution, je vais essayé ca si j'arrive biensûre car la programmation du douchette est un peu difficile

  2. #22
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par dj_techno Voir le message
    bonjour
    bon je pense vraiment à ça, c'est à dire comment valider le code à entrer et l'ajout du caractére #13 (entrée) c'est la meilleur solution, je vais essayé ca si j'arrive biensûre car la programmation du douchette est un peu difficile
    Normalement tu n'as qu'à lire des code à barres fournit par la documentation technique du lecteur.
    En général :
    1- tu as un code pour mettre en mode édition,
    2- un code pour dire que tu veux rajouter 1,2 ou 3 caractères en suffixe,
    3- X codes pour mettre le code hexadecimal du caractères CR (Parfois il est même déjà prévue dans la doc ce caractère)
    4- puis un dernier code pour valider les changements.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #23
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    478
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2005
    Messages : 478
    Points : 89
    Points
    89
    Par défaut
    Citation Envoyé par Malatar Voir le message
    Normalement tu n'as qu'à lire des code à barres fournit par la documentation technique du lecteur.
    En général :
    1- tu as un code pour mettre en mode édition,
    2- un code pour dire que tu veux rajouter 1,2 ou 3 caractères en suffixe,
    3- X codes pour mettre le code hexadecimal du caractères CR (Parfois il est même déjà prévue dans la doc ce caractère)
    4- puis un dernier code pour valider les changements.
    en plus vous devez configurer le mode de lecture des données et le type de clavier utilisé pour ne pas avoir des caractére illisible pendant la lecture avec la douchette

  4. #24
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    478
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2005
    Messages : 478
    Points : 89
    Points
    89
    Par défaut
    bonjour
    je suis entrain de créer mon application de codes à barres mais mon probléme c'est que je ne sais pas comment désactiver le clavier lors d'une lecture avec la douchette, je ne sais pas si je fais la désactivation directement sur le port du clavier 3F8, ou il y'a une autre méthode qui désactive les touches clavier car la premiére methode de désactivation du port clavier va aussi désactiver la douchette qui ets en Y avec le clavier
    merci

  5. #25
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    A ma connaissance, tu ne peux pas bloquer le clavier, c'est les deux ou rien.
    (sauf si tu enlèves le clavier )
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  6. #26
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    +1 , j'ai cherché en vain , il n'y a pas moyen par contre l'inverse désactivé la douchette est possible sur certain modèle (mais on a jamais le bon )
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #27
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    478
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2005
    Messages : 478
    Points : 89
    Points
    89
    Par défaut
    salut
    voici le code que j'ai utiliser qui m'affiche un code à bar en utilisant les unité du TBARCODE avec une timage placée sur une form et il fonctionne bien pour un seul code à barres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls, Barcode;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Image1: TImage;
        Edit1: TEdit;
        procedure FormCreate(Sender: TObject);
        procedure Barcode1Change(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        barcode1 : TAsBarcode;
        { Private declarations }
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    uses WinTypes, WinProcs, Printers, barcode2;
    {$R *.dfm}
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    barcode1 := TAsBarcode.Create(self);
    barcode1.Top := 50;
    barcode1.Left := 30;
    barcode1.Typ := bcCodePostNet;
    barcode1.Modul := 2;
    barcode1.Ratio := 2.0;
    barcode1.Height := 50;
    barcode1.OnChange := Self.Barcode1Change;
     
    end;
     
    procedure TForm1.Barcode1Change(Sender: TObject);
    begin
    Image1.Picture := nil;
    Barcode1.DrawBarcode(Image1.Canvas);
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    barcode1.Typ:= TBarcodeType(14); //bccodeEAN13
    barcode1.ShowText:=TBarcodeOption(1);
    Barcode1.Text := Edit1.Text;
    end;
     
    end.


    mais si je veux que mes valeur reférences des codes à barres viennent d'une base de donnés il y'aura un probléme, j'ai placer un QRImage dans QRSubdetail connecter à la base et j'ai mis se code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls, Barcode, DB, ADODB;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Image1: TImage;
        Edit1: TEdit;
        ADOConnection1: TADOConnection;
        ADOTable1: TADOTable;
        ADOTable1ref: TWideStringField;
        ADOTable1titre: TWideStringField;
        ADOTable1auteur: TWideStringField;
        ADOTable1editeur: TWideStringField;
        ADOTable1mots_cle: TMemoField;
        ADOTable1ouvrage: TBooleanField;
        ADOTable1article: TBooleanField;
        ADOTable1memoire: TBooleanField;
        ADOTable1isbn: TWideStringField;
        ADOTable1code: TIntegerField;
        procedure FormCreate(Sender: TObject);
        procedure Barcode1Change(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        barcode1 : TAsBarcode;
        { Private declarations }
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    uses WinTypes, WinProcs, Printers, barcode2, Unit2;
    {$R *.dfm}
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    barcode1 := TAsBarcode.Create(self);
    barcode1.Top := 50;
    barcode1.Left := 30;
    barcode1.Typ := bcCodePostNet;
    barcode1.Modul := 2;
    barcode1.Ratio := 2.0;
    barcode1.Height := 50;
    barcode1.OnChange := Self.Barcode1Change;
    end;
     
    procedure TForm1.Barcode1Change(Sender: TObject);
    begin
    quickReport2.QRImage1.Picture := nil;
    Barcode1.DrawBarcode(QuickReport2.QRImage1.Canvas);
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    barcode1.Typ:= TBarcodeType(14); //bccodeEAN13
    barcode1.ShowText:=TBarcodeOption(1);
    QuickReport2.ADOTable1.first;
    while not QuickReport2.adotable1.Eof do begin
    Barcode1.Text := QuickReport2.adotable1.Fields[0].AsString;
    QuickReport2.adotable1.Next;
    end;
     
    QuickReport2.preview;
    end;
     
    end.

    il y'a un affchage des codes selon le nombre des enregistrement (par exemple si j'ai 20 enregistrement il m'affiche 20 codes) mais le probléme c'est que tous les codes afficher sont celle du dernier enregistrement et j'ai toute essayer mais toujour même probléme
    merci

  8. #28
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Bonjour,

    Il te faut afficher le code barre dans le canvas au moment de l'impression de chaque bande.
    La tu dessines dans le vides sur tes 20 enreg, mais avant le Preview.
    Du coup, au moment de l'édition (ou preview), c'est le dernier dessin qui est pris, sur tes 20 enregs...

    Essaye de mettre ta mise à jour dans le 'BeforePrint' de ta bande, par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure MonReport.MaBandeBeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean);
    begin
      Barcode1.Text := QuickReport2.adotable1.Fields[0].AsString;
    end;
    D'ailleurs tu pourrais très bien dessiner dans le canvas dans le beforeprint de la bande directement, au lieu de passer par l'évt du compo codebarre, mais si ca marche...
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  9. #29
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    478
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2005
    Messages : 478
    Points : 89
    Points
    89
    Par défaut
    bonjour
    j'ai bien essayer dans le before print du qreport et ausssi du qsubdetail mais il ne fonctionne plus car il me faut un boucle pour lire les réferences dans la base (il peuvent dépasser les milles enregistrements), et si je fais le boucle (que se soit dans le beforeprint du quickreport ou du qrsubdetail)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ADOTable1.first;
    while not adotable1.Eof do begin
    Barcode1.Text := adotable1.Fields[0].AsString;
    adotable1.Next;
    end;
    il ne fonctionne plus, car parfois je dois imprimer en stocks par exemple si je veux imprimer une centaines de codes j'aurais le même probléme dans le beforeprint et si vous voyez d'autres solution je serais bien à l'écoute.
    merci

  10. #30
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    je crois qu'il te faut revoir comment fonctionne Quickreport !!!
    dans le cas simple d'une édition d'un fichier pour des etiquettes code barre tu as besoin d'une bande détail (séparées en colonne si nécessaire) et c'est tout .
    dans ta bande détail tu place ton composant code-barre (il n'est pas liable avec la bdd ?? genre TDBCodeBarre ?) . Dans ton cas dans l'évènement OnBeforePrint de la bande détail tu indique le texte du composant c'est tout .

    Je n'ai pas tout suivi mais je ne comprends pas ces histoires de boucles , si quickreport est bien renseigné (dataset) il fait ça tout seul , comme un grand
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  11. #31
    Membre confirmé
    Profil pro
    Développeur indépendant
    Inscrit en
    Août 2004
    Messages
    373
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur indépendant
    Secteur : Transports

    Informations forums :
    Inscription : Août 2004
    Messages : 373
    Points : 512
    Points
    512
    Par défaut lecture code barre par douchette
    salut!
    je me permets de mettre mon grain de sel dans la discussion, ayant déja dû traiter ce problême.
    je suis arrivé à la solution suivante.
    l'interface clavier n'est pas vraiment utilisable pour un logiciel avec une interface de saisie, c'est un pis aller qui alourdit l'utilisation de l'interface, donc je suis parti sur une douchette en usb gérée comme un port com. (usb et com, série, c'est la meme chose pour la communication)

    l'avantage, c'est qu'on peut mettre un process qui va faire la lecture et mettre à disposition du programme le code barre lu. un flag de disponibilité ou de derniere lecture permet de recuperer la valeur lue.
    une excellente routine de controle du port série permettant d'arriver à ce résultat a été postée par farscape dans la faq Visual c++.
    http://cpp.developpez.com/faq/vc/ind...WithSerialPort
    il faut seulement s'assure que le matériel sera configuré pour fonctionner en communication série par port com.

    pour l'impression des codes barres, j'ai repris le probléme à la base, devant aussi bien gerer des impressions sur matricielles epson que sur des imprimantes thermiques zebra ou des lasers.
    pour les thermiques, le langage epl2 supporte parfaitement l'impression des codes barres et de tout ce qu'on peut avoir besoin d'imprimer.donc no problem.

    pour les matricielles, je parle directement à l'imprimante en langage ESC/P2, ca marche trés bien. mais j'ai du creer une surcouche de gestion de scripts d'impression, mais bon, c'est plutot dédié comme solution, mais ca a l'avantage d'être trés fonctionnnel.

    pour les lasers ou jet d'encre, j'ai carrement choisi l'option de recoder les systémes de géneration de codes barre en les dessinant via les mfc.
    au moins, je suis complétement sûr de ce qui fonctionne ou pas.
    et ca me permet aussi de les manipuler exactement comme je le veux.

    j'ai trouvé une trés bonne documentation sur les codes barres ici.
    http://grandzebu.net/informatique/codbar/codbar.htm
    le gros avantage, c'est que cette methode fonctionne vraiment trés bien.
    vala..

    je cherche actuellement à pouvoir lire un code barre présent dans une image scannée. comme j'ai jamais fait de traitement d'image, je sais pas trop ou commencer, donc les pistes de dev interressantes seront les bienvenues.!

  12. #32
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    478
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2005
    Messages : 478
    Points : 89
    Points
    89
    Par défaut
    salut
    tout d'abord je m'excuse pour le retard et l'abscence, bon je dois expliquer mon probléme pour être claire, donc pour la lecture et l'impression d'un seul code à barre je n'ai aucun probléme c'est bien réaliser mais le probléme c'est lors de l'impression d'un ensemble de codes à barres, c'est dans une page ou plusieur pages je dois imprimer plusieurs codes à barres ou une selection de plusieurs codes selectionner par l'utilisateur:

    feuille:
    _______________________________________________________________

    code1 .......................................................................code2

    code3 .......................................................................code4

    code5........................................................................code6

    code7.......................................................................code8
    _______________________________________________________________


    mais evec les qreport je n'ai trouver aucune solution et j'ai bien essayer beaucoup de solutions mais pour afficher ou impromer plusieur codes dans une même page ou plusieurs pages je n'arrivais plus car j'ai une base ou il y'a des milliers de codes de livres et par exemple si l'utilisateur veut imprimer une ensemble de codes sur une/des feuilles puis la couper en des etiquettes et les coller sur les livre, pour moi je n'arrive plus à réaliser ca mais pour un seul code c'est faisable mais pour plus d'un codes pas de solution et il y'a
    si-dessus les codes que j'ai utilisé
    merci

  13. #33
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    Citation Envoyé par dj_techno Voir le message
    mais evec les qreport je n'ai trouver aucune solution et j'ai bien essayer beaucoup de solutions mais pour afficher ou impromer plusieur codes dans une même page ou plusieurs pages je n'arrivais plus car j'ai une base ou il y'a des milliers de codes de livres et par exemple si l'utilisateur veut imprimer une ensemble de codes sur une/des feuilles
    surement c'est faisable, comment tu fait toi?
    Citation Envoyé par dj_techno Voir le message
    si l'utilisateur veut imprimer une ensemble de codes sur une/des feuilles puis la couper en des etiquettes et les coller sur les livre
    qui a la Patience et le courage de faire sa ,
    pourquoi en a fabriqué des imprimante à code à barre alors???
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

Discussions similaires

  1. [WD14] Comment réaliser une application client/serveur
    Par noviceman1 dans le forum WinDev
    Réponses: 13
    Dernier message: 26/09/2013, 10h20
  2. Réponses: 0
    Dernier message: 20/05/2008, 17h09
  3. Réponses: 9
    Dernier message: 11/05/2008, 00h22
  4. Réponses: 13
    Dernier message: 01/04/2008, 09h43
  5. Réponses: 12
    Dernier message: 23/01/2008, 09h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo