begin process at 2010 02 10 05:12:10
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Composants

 > COMPOSANT DE COMMUNICATION LECTEUR CB OU CHÉQUE

COMPOSANT DE COMMUNICATION LECTEUR CB OU CHÉQUE


 Information sur la source

Note :
Aucune note
Catégorie :Composants Classé sous :lecteur, CB, carte bleu, TPE Niveau :Débutant Date de création :02/10/2007 Date de mise à jour :15/09/2008 17:05:07 Vu / téléchargé :11 124 / 824

Auteur : Oniria

Ecrire un message privé
Commentaire sur cette source (67)
Ajouter un commentaire et/ou une note

 Description

Ce composant gére le protocole concert entre le lecteur de carte bleu ou lecteur de chéque et la caisse enregistreuse.
Il vous permet donc de rajouter l'option dans un programme de gestion commerciale du pilotage du terminal de paiement électronique par votre soft.

Il permet également à partir d'une simple variable de choisir si on veut être en mode caisse ou en mode TPE (Utile pour les simulations).

Ce projet a été conçu pour être compatible avec lazarus et delphi (il y a beaucoup de close de compilation).

Deux exemple sont fournit et vous permettrons de comprendre le fonctionnement.

Il fonctionne avec le composant TComport a été installé.

Pour les amateurs de documentations sur ce protocole, je les invite à contacter les constructeurs suivant : INGENICO et SAGEM pour obtenir la documentation. Celle d'INGENICO est très simple et explique simplement les étape de la transmission, celle de SAGEM est beaucoup plus détaillé, mais plus difficilement compréhensible. Je suis ouvert à toute communication pour aider quelqu'un sans aucun soucis, mais je ne suis pas une bibliothèque. Ne me demandez pas la documentation, je ne la transmettrais pas...


 Conclusion

Il y a une chose que j'aimerais faire évoluer :

- Mettre le même icone que sous lazarus dans la palette graphique. J'ai essayé en mettant plusieurs nom au .DCR et ça n'a rien changé, delphi ne prend pas mon icône.

Je suis vraiment preneur de toutes vos remarques.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • cbcard.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier36 639 octets
  • cbcardreg.lrsTélécharger ce fichier [Réservé aux membres club]6 709 octets
  • cbcardreg.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier287 octets
  • Protocole.dpkTélécharger ce fichier [Réservé aux membres club]547 octets
  • protocole_rs232.lpkTélécharger ce fichier [Réservé aux membres club]1 283 octets
  • protocole_rs232.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier394 octets
  • TLecteurCB.xpmTélécharger ce fichier [Réservé aux membres club]4 379 octets
  •   backup
    • cbcard.pas.bakTélécharger ce fichier [Réservé aux membres club]36 600 octets
    • cbcardreg.pas.bakTélécharger ce fichier [Réservé aux membres club]113 octets
    • protocole_rs232.lpk.bakTélécharger ce fichier [Réservé aux membres club]1 397 octets
    • protocole_rs232.pas.bakTélécharger ce fichier [Réservé aux membres club]394 octets
  •   Exemple
    •   Payement_TlecteurCB
      • main.dfmTélécharger ce fichier [Réservé aux membres club]10 108 octets
      • main.lfmTélécharger ce fichier [Réservé aux membres club]10 250 octets
      • main.lrsTélécharger ce fichier [Réservé aux membres club]9 569 octets
      • main.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier9 740 octets
      • payement.dprTélécharger ce fichier [Réservé aux membres club]Voir ce fichier186 octets
      • payement.identcacheTélécharger ce fichier [Réservé aux membres club]202 octets
      • payement.lpiTélécharger ce fichier [Réservé aux membres club]6 063 octets
      • payement.lprTélécharger ce fichier [Réservé aux membres club]374 octets
    •   Simul TPE _TLecteurCB
      • Main.dfmTélécharger ce fichier [Réservé aux membres club]6 497 octets
      • main.lfmTélécharger ce fichier [Réservé aux membres club]12 027 octets
      • main.lrsTélécharger ce fichier [Réservé aux membres club]11 234 octets
      • main.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier7 907 octets
      • Simul_CB.compiledTélécharger ce fichier [Réservé aux membres club]535 octets
      • Simul_CB.dprTélécharger ce fichier [Réservé aux membres club]Voir ce fichier186 octets
      • Simul_CB.lpiTélécharger ce fichier [Réservé aux membres club]3 886 octets
      • Simul_CB.lprTélécharger ce fichier [Réservé aux membres club]386 octets
  •   lib
    •   i386-win32
      • CBCard.oTélécharger ce fichier [Réservé aux membres club]88 316 octets
      • CBCard.ppuTélécharger ce fichier [Réservé aux membres club]10 959 octets
      • cbcardreg.oTélécharger ce fichier [Réservé aux membres club]4 478 octets
      • cbcardreg.ppuTélécharger ce fichier [Réservé aux membres club]1 034 octets
      • protocole_rs232.compiledTélécharger ce fichier [Réservé aux membres club]487 octets
      • protocole_rs232.oTélécharger ce fichier [Réservé aux membres club]1 703 octets
      • protocole_rs232.ppuTélécharger ce fichier [Réservé aux membres club]951 octets

Télécharger le zip


 Historique

03 octobre 2007 08:59:08 :
Ca y est, j'ai compris pourquoi le composant créé un bug dans l'inspecteur d'object. Donc maintenant, sur la fiche, il faut ajouter un composant TComport et mon composant TLecteurCB.
03 octobre 2007 09:02:03 :
La mise à jour concerne le référencement extérieur au composant TComport. On peut ainsi utiliser toutes les fonction s du TComport. J'ai enfin trouvé pourquoi l'inspecteur d'object plantait.
15 novembre 2007 12:58:11 :
Le 15/11/2007 - La mise à jour concerne les champs ECR et MNT (le numéro de caisse et le montant). Suite à des essais avec un vrai TPE, je me suis appercu que la documentation INGENICO, SAGEM était incompléte. Le champ ECR et le champ Montant sont padés avec des '0' et non des espaces comme j'avais cru. Maintenant, ca marche niquel.
19 novembre 2007 09:15:46 :
le 19/11/2007 - Pour une raison inconnu, le ZIP téléchargé sur le site ne s'ouvrait pas. J'ai donc supprimé certain fichiers inutile et je reposte cette version.
04 mars 2008 13:02:37 :
J'ai préciser où trouver les documentations nécessaires à la compréhension du protocole car c'est usant de répondre à beaucoup de personne qui ne font même pas l'effort de chercher un peu ou d'essayer de lire le source pour apprendre.
15 septembre 2008 17:05:08 :
Suite à un message, je me suis apercu que l'exemple paiement avait les combobox vides. Il ne pouvait pas fonctionner correctement.

 Sources du même auteur

Source avec Zip Source avec une capture LOGICIEL DE DIAGNOSTIC AUTOMOBILE KWP2000
Source avec Zip Source avec une capture CARTOGRAPHIE
Source avec Zip Source avec une capture CALCULATRICE DE CHAINES MATHÉMATIQUES
CALCULATEUR ARGUS AUTOMOBILE
Source avec Zip EDITEUR HEXADÉCIMAL

 Sources de la même categorie

Source avec Zip Source avec une capture TQGRID UN STRINGGRID AMÉLIORER. par yanb
Source avec Zip DYNAMIC LIBRARY LOADER CLASS: GAGNEZ DU TEMPS POUR CHARGER L... par f0xi
Source avec Zip Source avec une capture COMPOSANTS NDSOFT par diglas
Source avec Zip Source avec une capture GESTION DES "CRASHS D'APPLICATION" par Bacterius
Source avec Zip COMPOSANT TTHRESCOLLECTION par ThWilliam

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture INTERFACE QUI : OUVRE LE LECTEUR CD LE REFERME,LIGNE DE COMM... par Chyokyka
Source avec Zip LECTEUR AUDIO / VIDÉO par Pienso
Source avec Zip Source avec une capture LECTEUR MP3 A L'AIDE DE L'OUTIL MPLAYER par kamalz
Source avec Zip Source avec une capture LECTEUR FG AVEC PLAYLIST EN COURS. par Spawnrider
Source avec Zip Source avec une capture LECTEUR MP3 DEZAMP par Dezouille

Commentaires et avis

Commentaire de f0xi le 02/10/2007 16:16:12 administrateur CS

const
  _HexChr : array[$0..$F] of char = '0123456789ABCDEF';

function DecToHex(const Value: integer): string;
var pR : PChar;
    N  : integer;
    B  : byte;
begin
  SetLength(result, 8);
  pR := PChar(Result);
  for N := 3 downto 0 do
  begin
    B := byte(Value shr (N shl 3));
    pR[0] := _HexChr[B shr 4];
    pR[1] := _HexChr[B and $f];
    inc(Pr, 2);
  end;
end;


ça serat deja plus rapide, j'ai pas eu le courage de tout regarder ...
mais ça semble manquer d'optimisation, de correction etc...

Commentaire de Oniria le 02/10/2007 18:36:27

Bonjour,

Je suis d'accord avec toi foxi, mais justement, ce que j'aime en programmation c'est que l'on apprend tout le temps. La fonction dectohex n'est peut-être pas optimisée mais elle fonctionne comme il faut.
Je suis content que tu m'ais montré cette solution car je la trouve sympa, un peu compliquée au premier abord mais sympa.
Ta fonction décode sur 4 octets tout le temps alors que la mienne décode l'hexa en 1, 2, 4 octets suivant la valeur décimale (on aurra FF ou FFFF ou FFFFFFFF), c'est aussi pour ca que cette fonction est un peu grosse. De plus cette fonction a été développée pour être universelle (d'ou le décodage pour 1,2,4 octets).
Dans le cas de ce composant, elle n'a ,à décoder, que des octets, elle peut donc être réduite encore plus car Value pourrait être du type Byte.

Je pense que je vais faire un mélange du fonctionnement global de ma fonction avec l'optimisation de la tienne.

En tout cas Merci beaucoup.

Commentaire de f0xi le 04/10/2007 14:00:44 administrateur CS

la version universelle de cette fonction n'est pas trés differente et a peine moins performante qu'une version dédié, puisque sur la version dediée on ajoute des instruction pour la selection de l'octet a lire :
B := byte(Value shr (N shl 3));
alors que sur la version universelle on a juste quelques instruction pour incrementer et decrementer le pointeur sur le buffer en entrée. :)

voici la version universelle :
const
  _HexChr : array[$0..$F] of char = '0123456789ABCDEF';

function AllToHex(const Buffer; const BufferLen: integer): string;
var pR : PChar;
    pB : ^byte;
    N  : integer;
begin
  SetLength(result, BufferLen shl 1);
  pR := PChar(Result);
  pB := @Buffer;
  inc(pB, BufferLen-1); // et oui faut lire a l'envers sinon c'est inversé :)
  for N := 0 to BufferLen-1 do
  begin
    pR[0] := _HexChr[pB^ shr 4];
    pR[1] := _HexChr[pB^ and $f];
    inc(Pr, 2);
    dec(pB); // d'ou la decrementation au lieu de l'incrementation sont mechant les ^byte
  end;
end;

Commentaire de Oniria le 04/10/2007 18:31:42

Bonjour,

Merci beaucoup foxi pour cette fonction, c'est vraiment sympa.
Il n'y a plus qu'a la mettre dans mon composant.

Commentaire de pinzolo le 12/10/2007 10:24:41

Bonjour à tous
J'ai un probléme car je cherche à faire communiquer mon TPE avec un protocole de carte bancaire notamment (la norme CB2A) est ce que kelkun pourra m'aider.
Bien evidement en lisant la source sur le protocole Concert j'ai trouvé celle ci superbe
Mais néanmoins moi j'ai pas une caisse enregistreuse.
Cordialement

Commentaire de Oniria le 12/10/2007 11:54:27

Bonjour,

C'est quoi cette norme CB2A ??? Si tu m'envois la doc sur oniriabot@yahoo.fr, je regarderais si par hazard, ce n'est pas le même. Sinon, mon composant sert à la fois pour créer une caisse enregistreuse (On veux communiquer avec un TPE), soit créer un TPE (On communique avec une caisse réelle). Il fonctionne dans les deux sens.

Bonne Journée

Commentaire de pinzolo le 12/10/2007 12:27:07

Je n'ai vrament pas une doc qui explique son mode de fonctionnement , ce ke je sais kil est propriétaire. "Le protocole CB2A est un protocole conforme aux spécifications EMV et permet d'acheminer vers l'émetteur les données requises pour le traitement des transactions effectuées par des cartes à puce".
Je vais t'envoyer une doc sur les serveurs de TPE
Sincèrement j'ai pas une doc sur ce protocole (sauf sur la norme ISO 8583 pr les transactions de la monétique)

Commentaire de Oniria le 12/10/2007 16:38:47

Je vais chercher de mon coté. Mais que veux tu faire avec ca ?

Commentaire de Oniria le 13/10/2007 09:40:10

Je viens de faire quelque recherche et si j'ai bien compris, le protocole CB2A est le protocole entre le TPE et le serveur de TPE qui se trouve ........dans la banque. Ce que tu essayes de faire ne dois pas être autorisé il me semble. Et je pense que tu auras du mal à trouver la norme. La norme que j'ai utilisée pour communiquer avec le TPE se trouve entre la caisse enregistreuse et le TPE, le client de CB n'est en aucun cas piraté car c'est le TPE qui fait la transaction.

Essayes de demander au fabricant de TPE s'il veulent te donner la norme.
Mais pour ma part, je ne suis pas interressé par le piratage des transaction entre le TPE et la banque. La seule chose que je recherche maintenant est le fonctionnement des TPE par liaison USB et ceux par liaison Ethernet, ils ne sont pas nombreux mais je pense que ça va changer.

Commentaire de pinzolo le 15/10/2007 10:39:29

Loin de là ONIRIA, je travaille sur la Mise en place d'une Application de Gestion du Portefeuille Electronique + Etude sur le Serveur de TPE qui me permettra de gérer le parc des terminaux. C pas le piratage mon cher.
J'ai un terminal de paiement Moneyline P2OOO que j'ai à ma disposition et j'utilise le compilateur Watcom C++.
C mon travail de fin de formation.

Commentaire de Oniria le 15/10/2007 12:04:55

Bonjour,

Mais alors, que viens faire delphi la dedans. Delphi n'est pas Watcom C++. Mais bon, je programme également en C++. J'utilise Visual C++ pour ma part. Je peux t'aider mais à la condition que tu trouves la documentation du protocole.
C'est pour ca que tu devrais voir avec le constructeur de ton TPE s'ils veulent bien te donner le document ou l'endroit pour l'obtenir. Ainsi, tu aurras toutes les cartes en mains.

Commentaire de pinzolo le 15/10/2007 12:18:42

dac, Lorsqu'on fait des recherches sur le Net et qu'on trouve des infos importantes  l'on peut avoir une source d'inspiration, dit est ce que l'algorithme va changer ce n'est ke la syntaxe qui change.
S'agissant de la reponse sur le protocole mon Bosse à fait cette requête et j'attend la doc sur les spécifications de l'un des trois protocoles.
Merci pour ton soutien
Cordialement passe une bonne journée

Commentaire de Oniria le 15/10/2007 12:53:17

En fait, la documentation du protocole est écrite en texte clair. Elle indique les commandes et les réponses attendu. Dans le cas du protocole Concert, la doc explique les temps de time out, le role de chaque octets des trames émise et recu, les demandes de communication, tout dans le détail. C'est ma deuxiéme adaptation de protocole que j'ai fait. La première concerne le KWP2000 (le protocole de diagnostique des calculateurs de voiture).

Ce type de documentation fait complétement abstraction du langage utilisé. D'ailleurs, il n'y a aucune partie de code. Il faut tout faire soit même. Je te souhaite bon courage et si besoin, je t'aiderais bien volontier.

Commentaire de ericvernet le 11/04/2008 18:43:58

Ce composant fonctionne sous delphi 5 svp ??
Merci

Commentaire de Oniria le 13/04/2008 16:27:30

Bonjour,

La, je ne sais pas répondre car il a été développé sous delphi 7. Je ne sais pas s'il fonctionne sur d'autre version de delphi.

ERICVERNET : Pas la peine de m'envoyer un mail et 3 minutes après de me mettre un message privé. Je ne suis pas à vos ordres, je ne suis pas en permanence devant mon PC. Le simple commentaire aurait suffit.

Bon courage

Commentaire de callistan le 06/11/2008 11:51:22

bonjour Oniria,

J'ai téléchargé ton composant, et l'ai fait tourner sous Delphi 2007 sous Vista. Aucun problème... Je dispose d'un SAGEM Monetel EFTSmart. En revanche, je n'ai pas pu utiliser le port série, j'ai été obligé d'utiliser le driver USB Telium. Tout Fonctionne...

Maintenant, j'aimerai implanter un service windows qui fasse office de caisse, commandée par des clients en TCP/IP.
J'aimerai pour cela maintenir une transaction CB (simuler un mode synchrone...), et là, je rame.
Aurais-tu quelques pistes pour ne pas passer par le timer dans ton composant, et maintenir la conversation avec le terminal de paiement, jusqu'à la fin de la transaction?

merci beaucoup.  

Commentaire de fkerbourch le 14/11/2008 10:07:14

Bonjour,
J'avais un pb avec le composant TComPort version 2.64 lors de l'installation du paquet protocole.dpk, les arguments de la méthode TcomPort.write(...) ne correspondait pas.
J'ai récupérer sur SourceForge la version 4 de TComPort -> c'est pas bon non plus.
Apparemment il faut installer la version 3.1.
(téléchargeable à :
http://www.torry.net/pages.php?id=198  

fk

Commentaire de Oniria le 14/11/2008 16:22:34

Bonjour,

J'ai développé ce composant avec la version 3.1 de TCOMPORT en effet. Je ne savais même pas qu'il y en avait une autre. Merci pour l'info.

Commentaire de facdaar le 03/12/2008 14:06:36

Impossible de trouver la doc du protocole concert sur le net. Peux-tu m'envoyer les documents sur lesquels tu t'es appuyé ? Je souhaite faire un composant VB6...

Commentaire de Oniria le 03/12/2008 14:13:34

C'est normal car le protocole n'est disponible que par les constructeurs de lecteur CB. Demande leurs, il te fourniront toute la documentation. Je ne suis pas une bibliothéque

Commentaire de walawa le 05/12/2008 23:02:58

Bonjour,

Je sais que c'est probablement hors sujet, mais quelqu'un peut il m'aider à obtenir le driver USB telium  (pour mon  tpe sagem) dont callistan a parlé et que je cherche désespérément depuis des mois ?

Merci et encore pardon pour la parenthèse !!!

Commentaire de Oniria le 06/12/2008 09:55:15

Pourquoi tu ne lui écris pas plutôt que de poster un message sans rapport :(

Commentaire de walawa le 06/12/2008 10:08:37

Bonjour tout d'abord,

Holà du calme l'ami. C'est déjà fait depuis longtemps  mais callistan ne visite le site que très rarement.

Je veux juste un peu d'aide, mais si ce n'est pas possible voire mal venu de ma part, je passe mon chemin pas de problème !!!!

Commentaire de Oniria le 06/12/2008 18:23:58

Si tu lui poste un mail directement, il le recevra dans sa boite mail normale donc il aurra tout de suite ton message. Si après, il ne veux pas répondre, c'est son choix ... Mais pour ma part, je ne peux pas t'aider et avoir un tas de mails qui ne me concerne pas, n'est franchement pas cool. Je veux bien aider les personnes qui utilise ce composant, pas les autres.

Commentaire de walawa le 08/12/2008 18:15:33

BONJOUR,

Primo quand on a le minimum d'éducation requise et de politesse on répond au salut d'autrui.
Secundo, je ne t'envoie pas de mails qui ne te concernent pas.
Tertio même ceux qui utilisent ton "composant" ne sont pas aidés, vraiment pas. (J'ai des noms)
Quarto, mais pour qui tu te prends mon petit gars ?!!!

P.S. Rappel orthographique: Au mot aura il n'y a qu'un "r".

Commentaire de Oniria le 09/12/2008 07:58:21

Bonjour,

Primo, je ne vois pas ou je ne suis pas poli (je ne t'ai pas insulté, pas agressé sinon, tu peux me croire, ce n'étais pas le but).

Secundo, chaque fois que quelqu'un poste un commentaire, j'ai un mail de rappel sur ma boite perso qui m'invite à voir mon code source.

Tertio, je suis désolé pour eux, je fais ce que je peux, si tu trouves simple d'aider quelqu'un par mail interposé, moi, je ne trouve pas que ce sois facile.

Quarto, je ne me prend pas, je suis (ce que tu as envi). Pour ma part, je n'ai pas de compte à rendre ici. Si je poste des sources sur le site, ce n'est pas pour moi, mais plus par reconnaissance pour toutes les personnes qui passe du temps, quelque fois beaucoup pour aider les autres. Je ne suis pas de ces personnes qui penses que ce site est fait pour donner sans jamais recevoir. Sur ce site, il y a énormément de personnes qui viennent POMPER des connaissances mais qui n'aide absolument pas en redonnant un peu de leur savoir.

Pour finir, si tu n'ai pas content, tant pis car cela met totalement égal. Tu as pris la mouche pour des propos non agressif, juste une demande de ma part d'être un peu tranquille, surtout des question qui ne me regarde pas (sans rapport avec le composant), et des personnes qui ne cherche pas l'information par eux même (la documentation constructeur est disponible chez les constructeurs). Le site possède une zone qui s'appelle le FORUM pour y poster toute sorte de demande.

Merci pour les cours d'orthographe.

Commentaire de walawa le 09/12/2008 11:48:05

Bonjour,

De rien, de rien, mon cher c'était vraiment de bon coeur (lol)!!!!

Tiens, gratuitement je te donne un autre cours. Il ne faut pas écrire:

"Pour finir, si tu n'ai pas content, tant pis car cela met totalement égal."

Mais:

"Pour finir, si tu n'ES pas content, tant pis car cela m'EST totalement égal."

Si tu veux, je te propose même de t'aider à rédiger tes messages pour qu'il soient compréhensibles pour tous.

P.S. En cas de bug sur tes codes, vérifie quand même l'orthographe, on ne sait jamais!!!

Commentaire de Oniria le 09/12/2008 13:15:05

Bonjour,

Pas besoin de vérifier l'orthographe des codes sources, delphi le fait pour nous et lazarus aussi :)

Une chose dont je sois sur :je suis et je serais toujours nul en orthographe.

Aller, sans rancunes

Commentaire de Oniria le 09/12/2008 13:19:10

Bonjour,

Pour les personnes qui viendrait sur ce topick, je tiens juste à préciser que je ne transmet pas les documentations concernant le protocole CONCERT car je ne sais pas si elles sont librement diffusable sur le net. Je les ai obtenues en contactant différents constructeurs de TPE qui me les ont fournies gratuitement.

Bon code à tous

Commentaire de walawa le 09/12/2008 14:33:09

Rebonjour,

Waouh !!! Enfin un peu de calme et de détente sur ce topic. Ca fait du bien !!!

Aller, bye bye et sans rancune non plus !!!!!

Commentaire de adamis le 10/12/2008 08:22:06

Bonjour,
J'aimerai savoir à quoi sert le mode maitre et esclave dans tes sources ? Moi je n'ai besoin que du mode caisse et je ne sais pas s'il faut que j'implémente le mode esclave (est-ce que les 2 sont liés ?).

Merci et bravo pour tes sources.

Ben

Commentaire de Oniria le 10/12/2008 13:48:40

Bonjour,

Le mode maitre et esclave est dicté par le protocole. Le maitre est celui qui initie la communication et l'exclave, celui qui va répondre.

Dans la cas d'un logiciel de caisse, il faut implémenter le mode maitre. C'est la caisse qui initie la communication et le TPE (l'esclave) qui va répondre.

Mon composant implémente les deux pour une raison simple, je n'avais pas de TPE disponible partout (chez moi oui, mais pas au boulot) donc j'ai développé un logiciel simulant le TPE sur un PC et sur l'autre, le logiciel de caisse. J'ai pu ainsi développer une petite application qui envoi le montant à encaisser par le client au TPE, est dès que l'opération est fini, elle répond au programme de caisse que tout c'est bien passé. Je l'ai développé sous Lazarus mais je crois que je vais la porter sous delphi comme ca les gens auront directement une application universelle pour les problèmes d'encaissement.

Cordialement

Commentaire de adamis le 10/12/2008 16:50:43

Merci beaucoup pour ces infos !

J'avais une petite incertitude entre le mode caisse et le mode TPE, par rapport au mode maitre et esclave.

D'après ce que tu me dis, c'est à peu près identique.

@ bientôt

Commentaire de adamis le 21/12/2008 18:30:03

Bonjour,

Je voulais savoir comment peux-t-on savoir si un lecteur est compatible avec la norme concert ? J'utilise un SAGEM EFT 930P et lorsque je lui envoie le 1er octet A_ENQ, il n'y a rien qui se passe.... Faut-il se mettre dans un mode particulier pour que celui-ci réagisse. J'ai une appli EMV d'installer sur mon TPE...
Si tu as une idée, je suis preneur...

Merci pour ton aide.

Commentaire de Oniria le 21/12/2008 19:50:02

Bonjour,
Lorsque j'ai demandé au contructeur SAGEM, il m'a certifié que tous les TPE étaient compatible avec cette norme. Sinon, as-tu la norme ? As tu bien configuré le port série ? D'après la norme :

"Le mode de transmission est du type asynchrone utilisé en "half duplex" à la vitesse de 1200 bauds sur deux fils sans signaux de contrôle. Les caractères, codés en ASCII, sont transmis sous forme de 10 bits :
. 1 bit de start,
. 7 bits de données,
. 1 bit de parité (parité paire),
. 1 bit de stop.
"
Sinon, avec le TPE que j'avais, je n'ai jamais eu besoin de le mettre dans un état particulier pour qu'il fonctionne.

Attention, tu parles de 1e octet, j'espére que tu n'as pas envoyé une trame compléte (plusieurs octets) car le protocole est :
1e étape : le maitre envoi ENQ
2e etape : l'esclave renvoi ACQ
3e étape : le maitre envoi le message
4e étape : l'esclave renvoi ACQ (s'il a compris)
5e étape : le maitre envoi EOT (pour dire qu'il a fini)

Jespére t'avoir aidé

Commentaire de adamis le 22/12/2008 14:19:10

Merci pour ces infos, oui j'ai la doc de la norme et c'est bien ce que j'avais compris sur le fonctionnement du protocole. Par contre, je ne peux paramétrer mon TPE en 1200, c'est 2400 le minumum mais le problème ne doit pas venir de là puique dans la doc ils préconisent le 9600.
Dans les docs Sagem, j'ai l'impression qu'ils disent qu'il faut télécharger un logiciel qui gère cette norme dans le TPE.... Su quel TPE as-tu testé toi ? Je dois le faire aussi sur un Ingenico 5100, j'espère que le protocole sera intégré en natif.

En fait, lorsque j'envoi le ENQ, l'écran clignote une fois, donc il doit bien recevoir la donnée, mais ensuite, aucune réponse rien.. pas de ACK en retour, pas de message d'erreur...

Je suis en train de me renseigner auprès d'Ingenico pour en savoir un peu plus.

Merci pour ton aide.

Commentaire de Oniria le 22/12/2008 17:47:38

As tu essayer de lui envoyer après le ENQ, le message ? Moi, j'ai essayé sur un Moneyline S3000 (c'est pas récent) et je n'ai eu aucun problème de communication.

Commentaire de adamis le 22/12/2008 18:01:40

Oui j'ai essayé, ça n'a pas l'air de l'impressionner plus que ça, rien ne se passe ...

Commentaire de Oniria le 22/12/2008 20:15:15

Bonjour,

J'ai mis un ZIP avec le programme qui permet à ma suite de gestion de donner un ordre de paiement au TPE. Il est compilé avec Lazarus (il est gratuit). A l'intérieur, il y a l'executable que l'on peut lancer pour tester le TPE directement.
Le programme est disponible à l'adresse suivante : http://dl.free.fr/qhApX2bKC

Le programme est on ne peut plus simple : il faut régler les paramétres (on coche réponse si lorsque le paiement a été effectué, le TPE doit renvoyer un compte rendu; car la réponse n'est pas obligatoire). Puis cliquer sur le bouton paiement. Le programme se charge d'envoyer l'ordre au TPE, puis de mettre le résultat dans un fichier texte.

Si ca peut t'aider

Commentaire de Oniria le 22/12/2008 20:18:21

Ah oui, j'oubliais, les paramètres de configuration de la ligne RS232 sont dans le fichier paiement.ini
C'est ce programme qu'il faut que je convertisse en source delphi comme ca plus personne n'aura besoin de développer un logiciel particulier pour la gestion d'un TPE.

Commentaire de callistan le 23/12/2008 09:24:28

bonjour adamis,
pour ce qui concerne ton terminal qui ne réagit pas. As tu essayé en USB? Je n'avais aucune réaction sur le port série. après avoir installé les drivers USB, tout a fonctionné correctement.

Commentaire de Oniria le 24/12/2008 12:15:18

Bonjour Callistan,
Mais comment est reconnu le protocole concert par l'USB. Est-ce que le TPE est considéré comme un nouveau port série ?

Commentaire de adamis le 24/12/2008 13:57:30

Merci pou votre aide, j'ai pu avancer pas mal. On m'a envoyé d'autres docs pour Sagem et en fait, il faut avoir la bonne version du Manager (ce que je ferai dans un 2ème temps).
Cependant, j'ai eu un Ingénico 5100 et là, le protocole concert réagit directement (série ou émulation usb d'ailleurs). Mais seulement en 1200Bauds.
Maintenant mon souci concerne la trame d'émission, elle est sur 29 octets dans tes sources. Cependant, comme j'ai besoin d'une demande d'autorisation à tous les appels, il faut que je passe une trame complète de 37 octets (je dois ajouter les octets optionnels DELAI et AUTO de 4 octets chacun).

Est-ce que tu as déjà testé ce fonctionnement ? J'ai l'impression que ça dépend des versions du protocole installées sur le TPE (moi j'utilise le protocole 6 d'après ce qui est indiqué sur l'Ingenico). Mais en tout cas, ça ne marche plus, si je ne passe pas la trame sur 29 octets, pas de réponse du TPE....

Commentaire de callistan le 24/12/2008 14:04:38

bonjour adamis,
En effet, dès que tu branches le termina en usb, il y aura un nouveau port COM sous windows. il ne reste plus qu'à modifier le fichier .ini généré par le composant carte bancaire. pour le reste, le composant tCOMPORT utilise l'api windows qui peut dialoguer avec les drivers passerelle USB/RS232. pour plus d'informations :

http://nono40.developpez.com/tutoriel/delphi/2005/comport/

bon courage

Commentaire de adamis le 26/12/2008 13:48:41

Merci Callistan, mais je n'ai aucun souci sur l'USB, ça fonctionne bien. Par contre, mon problème est pour faire une demande d'autoriation à la banque à chaque transaction.
Si tu as une idée Oniria, je suis preneur...

A bientôt et bonnes fêtes de fin d'année à tous !!

Commentaire de phillchina le 15/04/2009 11:10:19

Bonjour,

A tous ceux qui travaillent sur les TPE moneyline, pouvez-vous me donner un lien pour trouver une copie de la version originale de watcom livré par Moneyline car nous avons cassé notre CD.

Merci

Philibert

Commentaire de chtitfred le 11/05/2009 11:24:39

Bonjour,

J'aimerai savoir ou trouver de la documentation sur les specs du protocole concert que vous utiliser.

J'aimerai développer un code source similaire sous Java, utilisant RXTX.

Merci

Frédéric

Commentaire de Oniria le 11/05/2009 11:50:45

Le protocole n'est disponible que par les constructeurs de lecteur CB. Demande leurs, il te fourniront toute la documentation.

Commentaire de fastflood le 14/07/2009 17:14:38

Bonjour,
Je développe une classe VB pour communiquer avec un TPE. Tout fonctionne bien, sauf que je n'arrive pas à abandonner une transaction (ex : on démarre une transaction CB par erreur et on veut annuler et remettre le TPE en mode d'attente). Je n'ai pas trouvé d'info sur cela ni dans la doc SAGEM ni dans la doc Ingenico.
Or dans ton code, j'ai vu une fonction TLecteurCB.Cancel qui semble implémenter cet abandon en envoyant EOT. Si je fais la même chose, le TPE répond ACK mais la transaction continue... Est-ce mon TPE (Ingenico 5100) qui ne gère pas l'abandon ou est-ce que j'ai mal compris l'utilité de ta fonction ?

Je précise que je n'ai pas Delphi donc ça m'est difficile de comprendre ton code dans les détails...
Merci pout ta réponse,
Olivier

Commentaire de Oniria le 14/07/2009 18:31:37

Bonjour,

Dans la documentation Ingenico p7, il est noté : "L'esclave passe à 1 après réception d'un caractère isolé (ENQ, EOT, ou autre). Les autres cas (TO ou plusieurs caractères) sont des réceptions échouées.". L'état 1 est le mode attente de l'esclave.
Si tu envois EOT et que rien ne se passe, ce doit-être ton Ingenico qui ne le gére pas ( bizarre car j'avais un Moneyline 2000 qui lui fonctionnait très bien dans se cas ). Je te conseille d'essayer avec ENQ ou autre comme ils disent...

Cordialement

Commentaire de fastflood le 14/07/2009 19:09:15

Merci pour ta réponse rapide et ta suggestion : j'ai essayé avec EOT, ENQ et tous les codes ASCII, et ce bon vieux Ingenico fait la sourde oreille !!
Mais je pense que cette phrase page 7 s'applique aux caractères inappropriés pendant la phase de transmission de données ("après ETX") : dans le cas d'abandon de transaction, ce serait plutôt "après EOT" car la communication est terminée et le TPE n'est ni maître ni esclave à cet instant.

Au moins si ça marchait sur ton TPE, ça veut dire que je trouverai sans doute une méthode !

Commentaire de chtitfred le 14/07/2009 19:10:46

Salut,

quand tu revoies un EOT, et qu'il te répond un ACK, renvoie lui un ENQ par derrière pour voir si tu arrives à reprendre la main !

Commentaire de fastflood le 15/07/2009 15:37:55

Merci chtitfred pour cette idée mais ça ne fonctionne pas non plus :
  - dans l'ordre ENQ, puis EOT : ACK et la transaction continue
  - dans l'ordre EOT, puis ENQ : pas d'ACK
Néanmoins je trouve ce comportement conforme au protocole : EOT signifiant que le maitre a fini de transmettre, le TPE n'a plus à réagir. EOT ne signifiant pas que la transaction est terminée (d'après le protocole), je pense qu'il doit y avoir une commande spécifique (mais secrète ;-).

Commentaire de Oniria le 15/07/2009 17:42:12

Bonjour,
Sinon, essaye de caractère CAN ($18) qui veut dire annulation. J'avais compris que la transmission se basait sur un échange complet (Une trame d'ordre, le TPE répond ACK, répond avec une trame de résultat lorsque le client à tapé son code) entre le maitre et l'esclave et pour finir, le maitre doit clore la transmission par EOT. Mais il si EOT ne fonctionne pas, il faut essayer avec les code ASCII < $20 qui sont les codes de controles.

Commentaire de fastflood le 15/07/2009 19:57:28

Merci Oniria pour ta suggestion : j'ai trouvé ton idée d'envoyer le caractère annulation très bonne, mais le TPE lui ne veut rien savoir :-(
J'ai essayé : ENQ puis CAN puis EOT, CAN tout seul, CAN puis ENQ, ...

Concernant la transmission, ça m'a paru aussi atypique mais le TPE et l'ordinateur s'échangent bien des messages de manière asynchrone : l'ordinateur pour demander au TPE une transaction (et espérons demander aussi de l'annuler !), le TPE pour signaler la fin de la transaction. Il n'y a pas de maintien de la communication pendant la transaction, ce qui explique que l'un comme l'autre puissent être maître ou esclave.

En tous cas, merci d'avoir publié ton composant : c'est l'occasion d'avoir un forum sur le sujet car les infos là dessus sont très rares : Ingenico m'a donné sa doc mais Sagem n'a même pas voulu ("trop compliqué, faites appel à un prestataire").

Commentaire de Oniria le 15/07/2009 21:11:39

Bonjour,

Ca m'étonne de Sagem, ils me l'ont envoyé et sans problèmes. Elle est bien moins faites que celle d'Ingénico qui explique mieux les transitions dans la communication. Leur protocole est pourris car il n'y a pas de maintient de la communication qui aurait permis de savoir si le TPE était encore présent ou n'avait pas de problèmes. Le TPE n'est pas vraiment maitre car il renvoi une trame Réponse qui est bien la réponse d'un esclave. Le TPE n'est donc jamais un maitre mais toujours un esclave.

Commentaire de fastflood le 16/07/2009 14:31:13

Bonjour,
Oui j'ai compris ce que tu voulais dire : au sens habituel du client/serveur, c'est vrai que le TPE réagit comme un esclave. Au niveau du protocole, les termes ont un sens différents ce qui prête à confusion...
Au fil des tests, j'ai compris l'intérêt de cette façon d'échanger :
  - d'une part, tu peux couper la communication (débrancher le câble ou arrêter ton programme par exemple) le TPE continue son job. Et si ton programme revient d'ici là, il peut obtenir la réponse du TPE
  - d'autre part, si la communication devait être maintenue, cela voudrait dire que le programme devrait attendre la fin du traitement sur le TPE ce qui peut être génant en programmation monothread

Commentaire de Oniria le 17/07/2009 11:11:29

Bonjour,
Mais un logiciel de caisse est obligé d'attendre que le TPE ait fini de faire sa transaction pour valider la facture dans la base de donnée. Le fonctionnement n'est donc pas vraiment possible en multitaches. Mais je pense que ton problème n'est pas là. Il y a surement une commande qui le fait annuler, mais là, mystère et boule de gomme. As tu demander à Ingenico pour t'aider ???

Commentaire de fastflood le 17/07/2009 13:26:20

Oui j'ai envoyé un mail à la personne qui m'avait donné le protocole caisse chez Ingénico : pas de réponse pour l'instant.
J'ai aussi demandé à l'association Concert comment obtenir le protocole caisse officiel (peut être la version officielle est-elle plus complète ?) : coût 158 ¤HT le pdf ! Comme j'ai peur qu'il n'y ait pas la réponse à ma question, et qu'en plus le prix serait excessif juste pour avoir une commande, je n'ai pas donné suite...

Commentaire de tptpe le 01/08/2009 20:02:20

Bonjour,

    Je suis en cours en développer une partie de  logiciel de caisse pour communiquer avec le TPE sagem Eftsmart,
Je utilise le driver usb-telium, sur le panneau de configuration , j'ai vu qu'il émule comme un com2, mais quand je tape le bouton de TPE(valider), il n'y a rien de sortie (un logiciel pour surveiller le port série),
   Pourriez vous m'aider un peu, si possible, pourriez vous me donner votre email ou msn ,

   Merci d'avance

eric  (tpeit@hotmail.fr)

Commentaire de chtitfred le 01/08/2009 20:28:41

Salut,


Ecoute, pour ma part j'ai pas très bien compris ce que tu souhaite faire. Tu veux réaliser un logiciel ? si OUI en quel langage ?

Ici, ce que nous faisons, c'est que nous n'utilisons aucun driver ou aucun logiciel, nous parlons directement au TPE à travers le port COM auqeul on se connecte en utilisant le protocole concert.

Peux-tu approfondir tes besoins ?

Amicalement,

Frédéric

Commentaire de tptpe le 02/08/2009 02:38:28

Salut chtitfred,
  
   Merci bien pour ta réponse.

   Pour moi, je utilise delphi ou vb6 pour développer une petite application pour communiquer avec le tpe(sagem eftsmart). Le driver usb-telium il peux émuler le port com. Maintenant il marche très bien (je suis en mode de connexion usb). Avec le petit logiciel de Oniria, Le tpe peux accepter le montant que j'ai envoyé par le pc.

Montant bouton=77
Montant bouton=77
Début de transaction
Etape=Connection debut
Etape=Debut transaction maitre (octet à recevoir=83)
Etape=Reception d'octet :06  - nb_octet recu=1
Etape=Attente réponse au ENQ envoyé (mode maitre)
Etape=Envoi des données
Etape=Reception d'octet :06  - nb_octet recu=1
Etape=etape N°2 (mode maitre)
Etape=Reception d'octet :05  - nb_octet recu=1
Etape=Attente ENQ (mode esclave)
Etape=Reception d'octet :02 30 31 37 30 30 30 30 37 37 30 30 31 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 39 37 38 32 30 30 31 30 30 30 30 30 34  - nb_octet recu=81
Etape=Attente STX (mode esclave)
Etape=Reception d'octet :03 05  - nb_octet recu=2
Etape=Attente de donnée (mode esclave etat 3) nb_octet à recevoir=83



Mais je ne sais pas comment envoyer le montant via mon programme.  Pourriez vous m'aider un peu, merci bien .
c'est a dire comment le programmer ( je suis notice en delphi, je préfère le faire en VB6).


  

Commentaire de tptpe le 02/08/2009 03:04:26

salut chtitfred,

  J'ai seulement le pdf de 9 pages concernant le protocole . Mais j'ai pas le protocole concert. C'est necessaire d'obtenir le protocole concert ou pas ?


  Merci,

Commentaire de chtitfred le 02/08/2009 13:52:38

Salut,

Donne moi ton email en PV et je t'envoie les doc sur le protocole concert. Je peux aussi t'envoyer une source JAVA que je n'ai pas encore posté qui discute avec tous les TPE utilisant les ports COM...

Amicalement,

Frédéric

Commentaire de tptpe le 04/08/2009 23:46:21

Bonjour,

J'ai reçu 2 ack du coté tpe, mais le monant(1,11euro) envoyé par le pc n'affiche pas dans le tpe, Pourriez vous m'aider un peu, merice d'avance.

Voici le morceau de code écrit en Visual Basic

Dim a(0) As Byte
a(0) = "&H05"
MSComm1.Output = a   ===>(1)envoie enq à tpe. (recu ACK, ok)

Dim s(0 To 28) As Byte
                s(0) = "&H02"
                s(1) = "&H30"
                s(2) = "&H31"
                s(3) = "&H37"
                s(4) = "&H30"
                s(5) = "&H30"
                s(6) = "&H30"
                s(7) = "&H30"
                s(8) = "&H30"
                s(9) = "&H31"
                s(10) = "&H31"
                s(11) = "&H31"
                s(12) = "&H31"
                s(13) = "&H39"
                s(14) = "&H37"
                s(15) = "&H38"
                s(16) = "&H20"
                s(17) = "&H20"
                s(18) = "&H20"
                s(19) = "&H20"
                s(20) = "&H20"
                s(21) = "&H20"
                s(23) = "&H20"
                s(24) = "&H20"
                s(25) = "&H20"
                s(26) = "&H20"
                s(27) = "&H03"
                s(28) = "&H32"

==>(2)envoie STX ---données --etx --lrc (recu ACK, ok)

==>(3)envoie EOT

Commentaire de jessegaron le 18/09/2009 09:54:01

Bonjour, je suis très interessé par votre projet mais je possède un tpe eftsmart mais je n'arrive déjà pas à le connecter en usb sur la machine. Il me manque le driver pour xp. J'ai appelé le service technique qui m'a vendu l'appareil mais ils sont incapable de me renseigner. J'ai vérifier je n'ai aucun cd de livré avec l'appareil. J'ai lu sur different commentaire que vous utilisiez le driver usb-telium.inf mais où puis je le télécharger? est ce que quelqu'un pourrais me dépanner de ce fichier?

Merci de votre aide.

Commentaire de doumworld le 02/11/2009 19:09:28

Bonjour,

Il est disponible ici : http://www.distrimed.biz/pi/drivers/sagem_xp3.zip

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

probleme sur tpe cb sagem gsm g950 [ par gael44 ] bonjour  j ai 2 tpe cb gsm G950 sur reseaux SFR et j ai fait les parametrage avec ma banque mais quand je me connecte a la banque pour parametrer le t Question difficile: comment créer un "serveur virtuel" pour monter sur un lecteur réseau [ par Forman ] Bonjour à tous,Voici ce que j'aimerais faire: implémenter une application serveur qui, une fois lancée, crée un serveur de fichier (ou plus simplement Création d'un lecteur music [ par sardou24 ] Bonjour, Je débute dans la création de lecteur de music, voila j'aimerais un code du style de deezer pour écouter sur mon site des musiques. Comment reconnaitre un port usb en delphi 2006 [ par castalouche5 ] Bonjour, voici mon code afin de reconnaître divers disques en delphi 2006 : function TypeLecteur(Lecteur:string) :string; begin Result :=''; lect lecteur mp3 [ par sebrs1 ] je voudrais faire un lecteur mp3 avec une pleylist mais avec le controle mediaplayer je ne peux pas savoir qd une chanson est finie.comment faire? Lecteur Video de tous types [ par MAsterC ] Je voudrais avoir le code (source) pour faire jouer tous les sorte de vidéos et avec quel composant je fais sa ???Ou envoyer moi un exemple COMPLET.Me Comment kon execute un film en passant par un lecteur video??? [ par Gysmo ] J'aimerai lancer une sequence video 'film.avi' par exemple en passant par un lecteur video (koi de plus normal...)J'ai le code pour ouvrir le lecteur Lecteur Mp3 [ par MAsterC ] Salut !Je me suis faite un lecteur Mp3 et toute marche sauf ma liste de mp3. J'ai mis un TOpenDialog (pour ouvrir les Mp3 voulu)et après j'ai un probl Je crée un lecteur mp3 et j'ai un problème [ par Youyou0214 ] Pourriez vous me dire comment marche exactement le composant media player. S'il existe une autre façon de créer un lecteur mp3 pourriez vous m'indique


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,108 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales