COMPOSANT DE COMMUNICATION LECTEUR CB OU CHÉQUE

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 2 oct. 2007 à 16:16
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 - 16 déc. 2012 à 10:58
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/44263-composant-de-communication-lecteur-cb-ou-cheque

Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
16 déc. 2012 à 10:58
Sur quel version de lazarus êtes vous car ce code est fait pour lazarus 0.9.22. C'est une ancienne version car ce composant n'est plus mis à jour depuis longtemps. Il faudra donc adapter le code pour la version actuelle de lazarus qui a énormément évolué depuis. Je suis désolé mais je n'ai pas le temps de faire ce travail sur ce projet.

Cordialement
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
14 déc. 2012 à 19:10
J'ai récupéré le même pour Lazarus
http://sourceforge.net/projects/cportlaz/?source=directory
mais au moment de l'installer il y'a plein d'erreurs dans le code ?
du genre type inconnu, manque fonction etc ?
Merci
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
14 déc. 2012 à 14:37
Bonjour,
Attention, il faut récupérer le TComport pour lazarus qui se trouve sur sourceforge :
http://sourceforge.net/projects/cportlaz/
Il n'y a que celui là qui va fonctionner....

Cordialement
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
12 déc. 2012 à 21:30
Bonsoir
je suis pas du tout adepte de Delphi vu que je programme sous VB et C#
J'ai donc téléchargé Lazarus et téléchargé la v3.1 de TCOMPORT mais la ou je coince, comment ont installe se composant sous lazarus vu qu'il y'a pas de lpk ?
Merci
Utilisateur anonyme
13 août 2010 à 02:31
Bonjour à tous,

J'ai besoin de connecter mon sagem eftsmart à mon pc et je vois que certain d'entre vous on réussi grace à ce composant, je l'ai donc téléchargé mais je ne connais rien à la programmation et je ne sais comprend pas du tout comment l'utiliser
Quelqu'un pourrait il m'aider? voir meme si quelqu'un qui habite près de Lille peut me vendre ses services, ferreiradavid@live.fr
Merci d'avance
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
24 juil. 2010 à 22:34
Bonjour,
il est possible d'utiliser deux cordon USB->RS232 + un cable nul modem et un seul PC. Ensuite, il faut configurer les fichier .ini des deux logiciels.
cs_bibigne Messages postés 4 Date d'inscription mardi 17 août 2004 Statut Membre Dernière intervention 22 juillet 2010
22 juil. 2010 à 17:18
Merci. J'ai un portable sans port série et un fixe avec. Avec un cable convertisseurr USB->RS232 + un cable null modem RS232, je devrais m'en tirer.
ssc974 Messages postés 25 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 7 avril 2015
22 juil. 2010 à 14:27
Bonjour,

Moi j'ai résolu mon problème. J'ai branché mon TPE en USB avec mon PC. Il faut chercher le driver TELIUM USB. Ce driver va installer votre SAGEM EFT Smart comme s'il était en SERIE tout simplement donc si vous avez l'occasion passer en USB moi sa a réglé tout mes problèmes.
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
22 juil. 2010 à 13:58
Bonjour,

Je ne sais pas car il faut voir s'il existe un driver permettant de simuler le port RS232 par un cable usb et deux PC.
Sinon, il faut acheter deux cables interfaces USB-RS232 et les relier ensemble.

Cordialement
cs_bibigne Messages postés 4 Date d'inscription mardi 17 août 2004 Statut Membre Dernière intervention 22 juillet 2010
22 juil. 2010 à 07:38
Bonjour,
Merci pour ta réponse. A ton avis, est-ce-qu'on peut aussi relier les PC par les ports USB (avec un cable de transfert USB) ?
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
20 juil. 2010 à 19:01
Bonjour,

il faut pour cela 2 PC relié par port série car le programme paiement permet de communiquer avec un vrai TPE et simul_TPE permet de tester sont programmme de gestion si on n'a pas de TPE sous la main.

Cordialement
cs_bibigne Messages postés 4 Date d'inscription mardi 17 août 2004 Statut Membre Dernière intervention 22 juillet 2010
20 juil. 2010 à 16:11
Bonjour,
Je voudrais être sûr de comprendre, en ce qui concerne les exemples situés dans le zip: le projet "paiement" gère les échanges avec un TPE, le projet "simul TPE" permet de simuler le comportement d'un TPE - ils osont donc susceptibles de dialoguer entre eux ? Si oui, par quel canal ?
Merci de m'éclairer
ssc974 Messages postés 25 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 7 avril 2015
13 juil. 2010 à 14:01
Voici le code que j'ai ecrit, ce n'est pas du DELPHI mais je pourrais essayé d'adapter ce que d'autres on fait :

xMontantCB est un numérique(10,4) = 159.67

cSTX,cETX,cECR#,cMNT,cMODE,cTYPE,cDEV,cPRIV,cIND,cMSGTPE sont des chaînes=""
sCLecture est une chaîne=""

eLRC, eInd,eTailleCh sont des entiers=0

cSTX = Caract(2) //Start Of Text
cECR# = "01" //Code Caisse
cMNT = Complète(NumériqueVersChaîne(xMontantCB*100,"08d"),8)//Montant en centimes
cIND = "0" //Si le TPE renvoie le numéro de carte
cMODE = "1" //Mode de transaction
cTYPE = "0" //Type de transaction (Débit, Crédit, Annulation)
cDEV = "978" //Devise 978 pour EUR
cPRIV = Complète(cPRIV,10,"0") //Complément à vide
cETX = Caract(3) //End Of Text

cMSGTPE = cECR#+cMNT+cIND+cMODE+cTYPE+cDEV+cPRIV+cETX

eTailleCh= Taille(cMSGTPE)
POUR eInd=1 A eTailleCh
eLRC = OUExclusifBinaire(eLRC,Asc(cMSGTPE[[eInd]]))
FIN

SI sOuvre(pSerieTPE,2000,2000) ALORS
sFixeParamètre(pSerieTPE,1200,1,7,0)

sEcrit(pSerieTPE,Caract(5))
Multitâche(50)

SI sDansFileEntrée(pSerieTPE)>0 ALORS Trace("Lecture : "+sLit(pSerieTPE,sDansFileEntrée(pSerieTPE)))
Multitâche(20)

cMSGTPE = Caract(2)+cMSGTPE+Caract(eLRC)
sEcrit(pSerieTPE,cMSGTPE)
Multitâche(50)

SI sDansFileEntrée(pSerieTPE)>0 ALORS Trace("Lecture : "+sLit(pSerieTPE,sDansFileEntrée(pSerieTPE)))
Multitâche(20)

sEcrit(pSerieTPE,Caract(4))
Multitâche(50)

sFerme(pSerieTPE)
FIN
ssc974 Messages postés 25 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 7 avril 2015
13 juil. 2010 à 13:55
Bonjour, je commencais à desespérer. J'ai développé un programme de caisse pour des magasins agro-alimentaires. En fin 2008, ils ont investi dans des Ingenico 9100 et m'ont demandé de relier les PC au TPE est que mon programme envoie automatiquement le montant au TPE pour éviter les erreurs de saisies. Tout à bien fonctionner. Cependant vers mi 2009 la société qui nous fournit les INGENICO ont mise à jour les microprogrammes de leur TPE et depuis mon transfert de montant ne fonctionne plus. Je suis pourtant le protocole fournit mais aucun signe. Est-ce que quelqu'un qui a réussit ne serait-ce que envoyer le montant pourrait m'aider SVP?

MERCI d'avance a tous
asoulard Messages postés 2 Date d'inscription jeudi 25 mars 2010 Statut Membre Dernière intervention 25 mars 2010
25 mars 2010 à 19:11
j'ai oublié de communiquer mon @ email : asoulardprogi@gmail.com

merci d'avance à tous
asoulard Messages postés 2 Date d'inscription jeudi 25 mars 2010 Statut Membre Dernière intervention 25 mars 2010
25 mars 2010 à 18:23
Bonjour,
Tout d'abord merci pour ce code qui est très utile pour la compréhension de ce protocole de dialogue avec TPE. je cherche comment dialoguer avec le tpe directement via le port série. Cependant je n'arrive qu'à lui transmettre le montant mais je ne vois pas comment récupérer la réponse du tpe. Doit-on faire quelque chose sur le TPE mis à part paramétrer la connexion caisse et la vitesse de transmission ?
Je n'arrive pas non plus à mettre la main sur la documentation du protocole concert. Elle me serait utile pour étoffer ma compréhension sur ce sujet.Si quelqu'un peu m'aider svp, ce serait très gentil...
doumworld Messages postés 1 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 novembre 2009
2 nov. 2009 à 19:09
Bonjour,

Il est disponible ici : http://www.distrimed.biz/pi/drivers/sagem_xp3.zip
jessegaron Messages postés 1 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 18 septembre 2009
18 sept. 2009 à 09:54
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.
tptpe Messages postés 4 Date d'inscription samedi 1 août 2009 Statut Membre Dernière intervention 4 août 2009
4 août 2009 à 23:46
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
chtitfred Messages postés 13 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 2 août 2009
2 août 2009 à 13:52
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
tptpe Messages postés 4 Date d'inscription samedi 1 août 2009 Statut Membre Dernière intervention 4 août 2009
2 août 2009 à 03:04
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,
tptpe Messages postés 4 Date d'inscription samedi 1 août 2009 Statut Membre Dernière intervention 4 août 2009
2 août 2009 à 02:38
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).
chtitfred Messages postés 13 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 2 août 2009
1 août 2009 à 20:28
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
tptpe Messages postés 4 Date d'inscription samedi 1 août 2009 Statut Membre Dernière intervention 4 août 2009
1 août 2009 à 20:02
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)
cs_fastflood Messages postés 8 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 17 juillet 2009
17 juil. 2009 à 13:26
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...
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
17 juil. 2009 à 11:11
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 ???
cs_fastflood Messages postés 8 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 17 juillet 2009
16 juil. 2009 à 14:31
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
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
15 juil. 2009 à 21:11
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.
cs_fastflood Messages postés 8 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 17 juillet 2009
15 juil. 2009 à 19:57
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").
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
15 juil. 2009 à 17:42
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.
cs_fastflood Messages postés 8 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 17 juillet 2009
15 juil. 2009 à 15:37
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 ;-).
chtitfred Messages postés 13 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 2 août 2009
14 juil. 2009 à 19:10
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 !
cs_fastflood Messages postés 8 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 17 juillet 2009
14 juil. 2009 à 19:09
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 !
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
14 juil. 2009 à 18:31
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
cs_fastflood Messages postés 8 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 17 juillet 2009
14 juil. 2009 à 17:14
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
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
11 mai 2009 à 11:50
Le protocole n'est disponible que par les constructeurs de lecteur CB. Demande leurs, il te fourniront toute la documentation.
chtitfred Messages postés 13 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 2 août 2009
11 mai 2009 à 11:24
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
phillchina Messages postés 1 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 15 avril 2009
15 avril 2009 à 11:10
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
cs_adamis Messages postés 7 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 26 décembre 2008
26 déc. 2008 à 13:48
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 !!
callistan Messages postés 3 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 24 décembre 2008
24 déc. 2008 à 14:04
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
cs_adamis Messages postés 7 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 26 décembre 2008
24 déc. 2008 à 13:57
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....
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
24 déc. 2008 à 12:15
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 ?
callistan Messages postés 3 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 24 décembre 2008
23 déc. 2008 à 09:24
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.
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
22 déc. 2008 à 20:18
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.
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
22 déc. 2008 à 20: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
cs_adamis Messages postés 7 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 26 décembre 2008
22 déc. 2008 à 18:01
Oui j'ai essayé, ça n'a pas l'air de l'impressionner plus que ça, rien ne se passe ...
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
22 déc. 2008 à 17:47
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.
cs_adamis Messages postés 7 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 26 décembre 2008
22 déc. 2008 à 14:19
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.
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
21 déc. 2008 à 19:50
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é
cs_adamis Messages postés 7 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 26 décembre 2008
21 déc. 2008 à 18:30
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.
cs_adamis Messages postés 7 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 26 décembre 2008
10 déc. 2008 à 16:50
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
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
10 déc. 2008 à 13:48
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
cs_adamis Messages postés 7 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 26 décembre 2008
10 déc. 2008 à 08:22
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
walawa Messages postés 5 Date d'inscription dimanche 19 février 2006 Statut Membre Dernière intervention 9 décembre 2008
9 déc. 2008 à 14:33
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 !!!!!
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
9 déc. 2008 à 13:19
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
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
9 déc. 2008 à 13:15
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
walawa Messages postés 5 Date d'inscription dimanche 19 février 2006 Statut Membre Dernière intervention 9 décembre 2008
9 déc. 2008 à 11:48
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!!!
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
9 déc. 2008 à 07:58
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.
walawa Messages postés 5 Date d'inscription dimanche 19 février 2006 Statut Membre Dernière intervention 9 décembre 2008
8 déc. 2008 à 18:15
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".
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
6 déc. 2008 à 18:23
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.
walawa Messages postés 5 Date d'inscription dimanche 19 février 2006 Statut Membre Dernière intervention 9 décembre 2008
6 déc. 2008 à 10:08
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 !!!!
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
6 déc. 2008 à 09:55
Pourquoi tu ne lui écris pas plutôt que de poster un message sans rapport :(
walawa Messages postés 5 Date d'inscription dimanche 19 février 2006 Statut Membre Dernière intervention 9 décembre 2008
5 déc. 2008 à 23:02
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 !!!
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
3 déc. 2008 à 14:13
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
facdaar Messages postés 64 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 23 février 2009
3 déc. 2008 à 14:06
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...
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
14 nov. 2008 à 16:22
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.
fkerbourch Messages postés 7 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 14 novembre 2008
14 nov. 2008 à 10:07
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
callistan Messages postés 3 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 24 décembre 2008
6 nov. 2008 à 11:51
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.
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
13 avril 2008 à 16:27
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
ericvernet Messages postés 1 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 11 avril 2008
11 avril 2008 à 18:43
Ce composant fonctionne sous delphi 5 svp ??
Merci
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
15 oct. 2007 à 12:53
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.
pinzolo Messages postés 6 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 15 octobre 2007 3
15 oct. 2007 à 12:18
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
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
15 oct. 2007 à 12:04
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.
pinzolo Messages postés 6 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 15 octobre 2007 3
15 oct. 2007 à 10:39
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.
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
13 oct. 2007 à 09:40
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.
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
12 oct. 2007 à 16:38
Je vais chercher de mon coté. Mais que veux tu faire avec ca ?
pinzolo Messages postés 6 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 15 octobre 2007 3
12 oct. 2007 à 12:27
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)
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
12 oct. 2007 à 11:54
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
pinzolo Messages postés 6 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 15 octobre 2007 3
12 oct. 2007 à 10:24
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
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
4 oct. 2007 à 18:31
Bonjour,

Merci beaucoup foxi pour cette fonction, c'est vraiment sympa.
Il n'y a plus qu'a la mettre dans mon composant.
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
4 oct. 2007 à 14:00
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;
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
2 oct. 2007 à 18:36
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.
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
2 oct. 2007 à 16:16
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...
Rejoignez-nous