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

Delphi Discussion :

Lecteur de code barre COGNEX Dataman 8050


Sujet :

Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 114
    Points : 70
    Points
    70
    Par défaut Lecteur de code barre COGNEX Dataman 8050
    Bonjour,

    Un client nous demande d'intégrer la lecture de codes barre à notre application.
    Le lecteur utilisé est le COGNEX DataMan 8050.

    Est-ce que quelqu'un a déjà fait un développement avec ce lecteur ?
    Afin de me donner quelques indications.

    D'avance merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    avec ce lecteur non, mais l'utilisation d'un lecteur code-barre n'est souvent qu'une simple utilisation clavier (TEdit) la seule chose à gérer étant le retour chariot (via onKeypress)
    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

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    une rapide recherche Google : https://www.cognex.com/fr-fr/product...an-8050-series

    DataMan 8050 permettent de configurer un lecteur pour répondre à des besoins spécifiques en matière de communication, qu'il s'agisse de connexions filaires RS-232, USB et Ethernet ou sans fil Bluetooth et Wi-Fi.
    Il y a différente manière de s'y interfacer
    USB sera le mode clavier mono-douchette
    Le reste c'est pour une utilisation centralisé sur un serveur
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 114
    Points : 70
    Points
    70
    Par défaut
    J'ai déjà lu la documentation et télécharger les outils COGNEX.
    J'arrive à faire fonctionner le lecteur (connecté en USB) avec leur application de configuration.

    Malheureusement, le lecteur ne se comporte pas comme un clavier, j'ai beau scanner des codes barre, rien n'est transmit à un TEdit (ni même à une application type bloc note).
    J'ai essayé de registrer certaines DLL fournies par le constructeur ou des les utiliser directement dans mon code (via un LoadLibrary), rien ne marche, je ne récupère aucune information.

  5. #5
    Membre confirmé Avatar de blonde
    Femme Profil pro
    Développeur Delphi
    Inscrit en
    Septembre 2003
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : Septembre 2003
    Messages : 278
    Points : 477
    Points
    477
    Par défaut
    Salut,

    j'ai développé une application couplée avec des lecteurs de code-barres de toutes marques, mais pas celui-là. Nous on s'en sert en USB, c'est à dire que la douchette va nous envoyer une entrée clavier. Il n'y a rien de sorcier. En général les soucis viennent plutôt de la façon dont a été configurée la douchette (tout en uppercase, un retour chariot ou pas à la fin de la lecture, ..)

    Tu sais déjà de quelle façon ton application va recevoir le code-barres scanné ?

  6. #6
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Citation Envoyé par r038tmp5 Voir le message
    J'arrive à faire fonctionner le lecteur (connecté en USB) avec leur application de configuration.
    Malheureusement, le lecteur ne se comporte pas comme un clavier, j'ai beau scanner des codes barre, rien n'est transmit à un TEdit (ni même à une application type bloc note).
    Ça ne serait pas une émulation de port COM (même si physiquement branché en USB) ?
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 114
    Points : 70
    Points
    70
    Par défaut
    @Blonde, je ne comprends pas ta question

    Tu sais déjà de quelle façon ton application va recevoir le code-barres scanné ?
    Le lecteur va surtout être utilisé pour lire des QR codes, mais le principe est le même: récupérer un identifiant.

    @Lung, Comment est-ce que je peux le voir ?
    Dans mon gestionnaire de périphérique, je vois mon lecteur dans la section "Ports (COM et LPT), et il utilise le COM3.

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Re,

    Alors il s'agit d'un "simple" problème de coordination de vitesse (bauds), nombre de bits et parités entre ton port COM et celui de la douchette.
    Mais aussi de lecture du port com. Évidemment dans ce cas là une application comme le bloc-note ne sait pas faire !

    Deux possibilités :
    Aligner la douchette selon les critères du port com 3 (il doit certainement avoir un moyen de configurer la douchette)
    ou l'inverse aligner le port en fonction des propriétés de la douchette (TComport permettra de le faire au début du programme)
    mais dans tous les cas il faut utiliser TComport ou un équivalent (à moins que COGNEX ne propose une DLL ? ) pour lire les données disponibles sur le port
    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

  9. #9
    Membre confirmé Avatar de blonde
    Femme Profil pro
    Développeur Delphi
    Inscrit en
    Septembre 2003
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : Septembre 2003
    Messages : 278
    Points : 477
    Points
    477
    Par défaut
    Citation Envoyé par r038tmp5 Voir le message
    @Blonde, je ne comprends pas ta question
    En fait tu as répondu en même temps ! Je voulais savoir si tu allais passer en port COM ou USB. Les 2 ont leurs avantages (et évidemment leurs inconvénients).

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 114
    Points : 70
    Points
    70
    Par défaut
    J'ai fais un essai avec comport, aucune réaction.
    Et oui COGNEX fournit un SDK mais pur Visual Studio.

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Cela fait un bail que je n'ai pas fait d'application utilisant de port Com !
    Je regarderai dans mes archives si je trouve quelque chose
    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

  12. #12
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Citation Envoyé par r038tmp5 Voir le message
    J'ai fais un essai avec comport, aucune réaction.
    Un extrait d'un bout de code à moi :
    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
    FComPort := TComPort.Create(nil);
    FComPort.OnRxChar := ComPortRxChar;
    SetPortCOM(ListeParametres[i].Valeur);
    SetFlux(ListeParametres[i].Valeur);
    SetParite(ListeParametres[i].Valeur);
    SetVitesse(ListeParametres[i].Valeur);
    FComPort.Open;
     
    ...
     
    procedure TLecteurCodeBarre.ComPortRxChar(Sender: TObject; Count: Integer);
    var
      sValeur: String;
    begin
      FComPort.ReadStr(sValeur, Count);
     
      // Traitement ...
      ...
    end;
    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
    procedure TLecteurCodeBarre.SetPortCOM(const sPortCOM: String);
    begin
      FComPort.Port := 'COM' + sPortCOM;
    end;
     
    procedure TLecteurCodeBarre.SetFlux(const sFlux: String);
    begin
      if LowerCase(sFlux) = LowerCase('Matériel') then
        FComPort.FlowControl.FlowControl := fcHardware
      else if LowerCase(sFlux) = LowerCase('Logiciel') then
        FComPort.FlowControl.FlowControl := fcSoftware
      else if LowerCase(sFlux) = LowerCase('Aucun') then
        FComPort.FlowControl.FlowControl := fcNone
      else if LowerCase(sFlux) = LowerCase('Personnalisé') then
        FComPort.FlowControl.FlowControl := fcCustom;
    end;
     
    procedure TLecteurCodeBarre.SetParite(const sParite: String);
    begin
      if LowerCase(sParite) = LowerCase('Aucune') then
        FComPort.Parity.Bits := prNone
      else if LowerCase(sParite) = LowerCase('Odd') then
        FComPort.Parity.Bits := prOdd
      else if LowerCase(sParite) = LowerCase('Even') then
        FComPort.Parity.Bits := prEven
      else if LowerCase(sParite) = LowerCase('Mark') then
        FComPort.Parity.Bits := prMark
      else if LowerCase(sParite) = LowerCase('Space') then
        FComPort.Parity.Bits := prSpace;
    end;
     
    procedure TLecteurCodeBarre.SetVitesse(const sVitesse: String);
    begin
      if LowerCase(sVitesse) = LowerCase('Personnalisée') then
        FComPort.BaudRate := brCustom
      else if sVitesse = '110' then
        FComPort.BaudRate := br110
      else if sVitesse = '300' then
        FComPort.BaudRate := br300
      else if sVitesse = '600' then
        FComPort.BaudRate := br600
      else if sVitesse = '1200' then
        FComPort.BaudRate := br1200
      else if sVitesse = '2400' then
        FComPort.BaudRate := br2400
      else if sVitesse = '4800' then
        FComPort.BaudRate := br4800
      else if sVitesse = '9600' then
        FComPort.BaudRate := br9600
      else if sVitesse = '14400' then
        FComPort.BaudRate := br14400
      else if sVitesse = '19200' then
        FComPort.BaudRate := br19200
      else if sVitesse = '38400' then
        FComPort.BaudRate := br38400
      else if sVitesse = '56000' then
        FComPort.BaudRate := br56000
      else if sVitesse = '57600' then
        FComPort.BaudRate := br57600
      else if sVitesse = '115200' then
        FComPort.BaudRate := br115200
      else if sVitesse = '128000' then
        FComPort.BaudRate := br128000
      else if sVitesse = '256000' then
        FComPort.BaudRate := br256000;
    end;
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  13. #13
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 114
    Points : 70
    Points
    70
    Par défaut
    Bonjour,

    Désolé, mais j'étais accaparé par d'autres problèmes...

    Voici l'état de mes recherches.
    Après mes tests avec TComport, j'ai installé 2 logiciels pour tester le port série. Et sur les deux, un seul est capable de voir que le lecteur envoi des informations.

    Je suis allé à la recherche d'autres composants qui gèrent le port série, et j'ai trouvé un TComport de la société WinSoft, qui fonctionne bien.

    Du coup je ne comprends pas trop pourquoi ça marche avec certains softs et pas d'autres, ou avec certains composants et pas d'autres.

    Connaissez-vous des composants d'accès au port série, qui soient performant ?

  14. #14
    Expert confirmé Avatar de sergio_is_back
    Homme Profil pro
    Responsable informatique, développeur tout-terrain
    Inscrit en
    Juin 2004
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Responsable informatique, développeur tout-terrain
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 084
    Points : 5 596
    Points
    5 596
    Par défaut
    Citation Envoyé par r038tmp5 Voir le message
    Bonjour,

    Désolé, mais j'étais accaparé par d'autres problèmes...

    Voici l'état de mes recherches.
    Après mes tests avec TComport, j'ai installé 2 logiciels pour tester le port série. Et sur les deux, un seul est capable de voir que le lecteur envoi des informations.

    Je suis allé à la recherche d'autres composants qui gèrent le port série, et j'ai trouvé un TComport de la société WinSoft, qui fonctionne bien.

    Du coup je ne comprends pas trop pourquoi ça marche avec certains softs et pas d'autres, ou avec certains composants et pas d'autres.

    Connaissez-vous des composants d'accès au port série, qui soient performant ?
    La librairie COMPORT développée par Dejan Crnila pour Delphi même si elle est assez ancienne fonctionne très bien avec les lecteurs de code-barre USB en émulation série (ou en mode série direct)
    Tu la trouvera ici : https://sourceforge.net/projects/comport/

    Le plus efficace est de paramétrer le lecteur de code-barre pour qu'il envoi les données suivies d'un suffixe (un CR/LF) par exemple. Du coup le déclenchement du traitement est relativement aisé en testant la présence de CR/LF dans la chaine reçue on sait que les données sont complètes par besoin de se soucier de la longueur de chaine reçue...

    Exemple :

    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
     
    procedure TWorkFrm.fComportRxChar(Sender: TObject; Count: Integer);
    var
        Buffer  :   AnsiString;
        Model   :   string;
        Size    :   string;
        Serial  :   string;
        Index   :   Integer;
    begin
        try
            fComport.ReadStr(Buffer,Count);
            fBuffer:=fBuffer+Buffer;
     
            if Pos(CRLF,fBuffer)>0 then
            begin
                // Si il y un CRLF dans la chaine on extrait le code et on laisse le reste des caractères dans le buffer
                Buffer:=Copy(fBuffer,1,Pos(CRLF,fBuffer)-1);
                fBuffer:=Copy(fBuffer,Pos(CRLF,fBuffer)+2,Length(fBuffer));
     
                // Tester la longueur 
                if Length(Buffer)=12 then
                begin
                    // Ne doit contenir que des caractères numériques
                    if IsDigital(Buffer) then
                    begin
     
                           // Ici tu traite la donnée reçue
     
                    end;
                end;
            end;
        finally
        end;
    end;

Discussions similaires

  1. [WinDev5.5b] Utiliser un lecteur de code barre
    Par sami_c dans le forum WinDev
    Réponses: 8
    Dernier message: 01/10/2006, 10h50
  2. Utilisation d'un lecteur de codes à barres
    Par banto_maxime dans le forum Access
    Réponses: 2
    Dernier message: 28/04/2006, 10h18
  3. utilisation d'un lecteur de code barre sous delphi
    Par bm10 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 19/11/2005, 20h05
  4. Programmer un lecteur de code à barre
    Par tleboukaka dans le forum Bases de données
    Réponses: 3
    Dernier message: 12/09/2005, 17h37

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