lnind est un entier
lnval est un entier
lnou est un entier
lnou = Asc(Gauche(pctexte,1))
POUR lnind = 1 A Taille(pctexte)
lnval=Asc(Milieu(pctexte,1))
lnou = OuExclusifBinaire(lnou,lnval)
FIN
SI lnou>127 ALORS lnou = lnou - 128
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Romain PETIT
Nathalie a exprimé avec précision :
Le TPE est connecté sur le port Serie 2 Mais nous n'arrivons pas à envoyer le montant sur le terminal et nous n'arrivons pas à récupérer les messages du terminal
Avez-vous paramétré correctement la vitesse de transmission, la parité etc... Cf sFixeParametre.
-- Romain PETIT http://cerbermail.com/?IJmancZl88 (cliquez sur le lien ci-dessus pour me contacter en privé)
Nathalie a exprimé avec précision :
Le TPE est connecté sur le port Serie 2
Mais nous n'arrivons pas à envoyer le montant sur le terminal et nous
n'arrivons pas à récupérer les messages du terminal
Avez-vous paramétré correctement la vitesse de transmission, la parité
etc...
Cf sFixeParametre.
--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Le TPE est connecté sur le port Serie 2 Mais nous n'arrivons pas à envoyer le montant sur le terminal et nous n'arrivons pas à récupérer les messages du terminal
Avez-vous paramétré correctement la vitesse de transmission, la parité etc... Cf sFixeParametre.
-- Romain PETIT http://cerbermail.com/?IJmancZl88 (cliquez sur le lien ci-dessus pour me contacter en privé)
ncollin
Nous avons modifié les paramétres en utilisant la fonction sFixeParamètre(PortTPE, 1200, 1, 7, 0)
cela ne change rien
Nous avons modifié les paramétres en utilisant la fonction
sFixeParamètre(PortTPE, 1200, 1, 7, 0)
Nous avons modifié les paramétres en utilisant la fonction sFixeParamètre(PortTPE, 1200, 1, 7, 0)
cela ne change rien
Pascal H
Le mar. 30 déc. 2003 16:29:01, dans le message news:, (Nathalie) a écrit :
Nous avons modifié les paramétres en utilisant la fonction sFixeParamètre(PortTPE, 1200, 1, 7, 0)
cela ne change rien
Bonjour,
Deux idées en passant: - n'y a-t-il pas un cache dont il faudrait forcer le vidage ? - si vous essayez d'envoyer par la suite d'autres chaînes au terminal, les premiers caractères envoyés sont-il récupérés ?
Ce problème me rappelle des soucis rencontrés il y a déjà pas mal d'années sous WD 4.1 avec une imprimante série. Si mes souvenirs sont bons, ce problème avait été résolu grâce à un des switches présents sur l'imprimante. Par contre nous utilisions des commandes iImprime et non une communication directe sur le port série...
-- Pascal
Le mar. 30 déc. 2003 16:29:01, dans le message
news:6a3705b4.0312300729.6d278df1@posting.google.com, ncollin@cecab.com
(Nathalie) a écrit :
Nous avons modifié les paramétres en utilisant la fonction
sFixeParamètre(PortTPE, 1200, 1, 7, 0)
cela ne change rien
Bonjour,
Deux idées en passant:
- n'y a-t-il pas un cache dont il faudrait forcer le vidage ?
- si vous essayez d'envoyer par la suite d'autres chaînes au terminal,
les premiers caractères envoyés sont-il récupérés ?
Ce problème me rappelle des soucis rencontrés il y a déjà pas mal
d'années sous WD 4.1 avec une imprimante série.
Si mes souvenirs sont bons, ce problème avait été résolu grâce à un des
switches présents sur l'imprimante.
Par contre nous utilisions des commandes iImprime et non une
communication directe sur le port série...
Le mar. 30 déc. 2003 16:29:01, dans le message news:, (Nathalie) a écrit :
Nous avons modifié les paramétres en utilisant la fonction sFixeParamètre(PortTPE, 1200, 1, 7, 0)
cela ne change rien
Bonjour,
Deux idées en passant: - n'y a-t-il pas un cache dont il faudrait forcer le vidage ? - si vous essayez d'envoyer par la suite d'autres chaînes au terminal, les premiers caractères envoyés sont-il récupérés ?
Ce problème me rappelle des soucis rencontrés il y a déjà pas mal d'années sous WD 4.1 avec une imprimante série. Si mes souvenirs sont bons, ce problème avait été résolu grâce à un des switches présents sur l'imprimante. Par contre nous utilisions des commandes iImprime et non une communication directe sur le port série...
-- Pascal
eric flament
Nathalie a couché sur son écran :
Bonjour,
Nous sommes en train de développer une application caisse en liaison avec un terminal TPE INGENICO.
je ne sais si le calcul du xor sur la chaine est bon, dans beaucoup d'application j'ai lnresult = calculrc(chStx+lcmontant) secrit(portPE,chStx+lcmontant+lnresult+chEtx) La verification de la chaine recue se fait sur chetx et non chstx juste une idée.
Eric
-- Ceci est une signature automatique de MesNews. Site : http://mesnews.no-ip.com
Nathalie a couché sur son écran :
Bonjour,
Nous sommes en train de développer une application caisse en liaison
avec un terminal TPE INGENICO.
je ne sais si le calcul du xor sur la chaine est bon,
dans beaucoup d'application j'ai
lnresult = calculrc(chStx+lcmontant)
secrit(portPE,chStx+lcmontant+lnresult+chEtx)
La verification de la chaine recue se fait sur chetx et non chstx
juste une idée.
Eric
--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
je ne sais si le calcul du xor sur la chaine est bon, dans beaucoup d'application j'ai lnresult = calculrc(chStx+lcmontant) secrit(portPE,chStx+lcmontant+lnresult+chEtx) La verification de la chaine recue se fait sur chetx et non chstx juste une idée.
Eric
-- Ceci est une signature automatique de MesNews. Site : http://mesnews.no-ip.com
Michel Moreno
Nathalie wrote:
Bonjour,
Nous sommes en train de développer une application caisse en liaison avec un terminal TPE INGENICO.
Le TPE est connecté sur le port Serie 2
///////////////////////////////////////////////////////////////////////////////// // // // syntaxe : TPE.EXE PortTPE Nombre Operation Montant1 ModePaiement1... // // Montant2 ModePaiement2 ... Montantn ModePaiementn // // // ///////////////////////////////////////////////////////////////////////////////// TerminalTPE est un entier long = extraitchaine(lignecommande(),1," ") NbreOperations est un entier long = extraitchaine(lignecommande(),2," ")
si TerminalTPE = 0 alors ferme si NbreOperations = 0 alors ferme
ii,jj,LRC est un entier long Donnees est une chaine ACK,ENQ,STX,ETX sont des chaines TempsInit,TempsEnCours est un entier long Reponse sont des chaines Indice est un entier long MontantTransaction est reel double TypeReglement est un entier long TimeOut est un entier long = 500 Essai est un entier Suite est un booleen wtest est un booleen = faux testCh est une chaine testii est un entier long numfic est un entier long wtest = faux si wtest alors numfic = fouvre("c:tmpresultat.txt",focreation+fotexte) global abandon est un booleen STXÊract(2) ETXÊract(3) ENQÊract(5) ACKÊract(6) abandon = faux ///////////////////////////////////////////////////////////////////////////////// // // // Ouverture du Port // // // ///////////////////////////////////////////////////////////////////////////////// sferme(TerminalTPE) si pas souvre(TerminalTPE,2000,2000,1000) alors erreur("Impossible d'ouvrir le port COM"+TerminalTPE) ferme fin si pas sfixeparametre(TerminalTPE,1200,1,7,0) alors erreur("Impossible fixer paramètres du port COM"+TerminalTPE) ferme fin
pour Indice = 0 à NbreOperations-1 MontantTransaction = extraitchaine(lignecommande(),(Indice*2)+3," ") TypeReglement = extraitchaine(lignecommande(),(Indice*2)+4," ") selon TypeReglement cas 2 // Cheque INFOS="Chèque "+sansespace(numeriqueverschaine(MontantTransaction,"15,2fS"))+caract(128)
Donnees="01"+verschaine(MontantTransaction*100,"08d")+"1C0978"+repete("X",10)+ETX autres cas // CB INFOS="Carte Bancaire "+sansespace(numeriqueverschaine(MontantTransaction,"15,2fS"))+caract(128)
Donnees="01"+verschaine(MontantTransaction*100,"08d")+"110978"+repete("X",10)+ETX fin multitache() ///////////////////////////////////////////////////////////////////////////////// // // // Calcul LRC // // // ///////////////////////////////////////////////////////////////////////////////// LRC=0 pour ii = 1 à taille(Donnees) LRC=ouexbinaire(LRC,asc(Donnees[[ii]])) FIN Donnees=STX+Donnees+caract(LRC) ///////////////////////////////////////////////////////////////////////////////// // // // Vidage des eventuels caractères polluant le COM // // // ///////////////////////////////////////////////////////////////////////////////// tantque sdansfileentree(TerminalTPE) > 0 multitache(-1) Reponse=slit(TerminalTPE,sdansfileentree(TerminalTPE)) testCh="" pour testii = 1 à taille(Reponse) testCh+=asc(Reponse[[testii]])+" " FIN si wtest alors fecritligne(NumFic,"Vidage du port com "+Reponse+" "+testCh) fin FIN Essai = 0 Suite = faux tantque pas Suite Essai++ si Essai > 3 alors erreur("pas de réponse du TPE après l'initialisation") sferme(TerminalTPE) ferme FIN si wtest alors fecritligne(NumFic,"envoi ENQ essai = "+Essai) fin si pas secrit(TerminalTPE,ENQ) alors erreur("Impossible d'envoyer l'ENQ") sferme(TerminalTPE) ferme FIN Reponse="" TempsInit=heureversentier(heuresys()) tantque pas Suite multitache(-1) TempsEnCours=heureversentier(heuresys()) si TempsEnCours-TempsInit > TimeOut alors // Pas de reponse pendant 2 secondes secrit(TerminalTPE,ENQ) si wtest alors fecritligne(NumFic,"Envoi ENQ Timeout") fin sortir fin si sdansfileentree(TerminalTPE) > 0 alors Reponse+=slit(TerminalTPE,sdansfileentree(TerminalTPE)) si wtest alors testCh="" pour testii = 1 à taille(Reponse) testCh+=asc(Reponse[[testii]])+" " FIN fecritligne(NumFic,"Lecture port com "+Reponse+" "+testCh) fin fin si taille(Reponse) > 0 alors si Reponse[[1]] <> ACK alors secrit(TerminalTPE,ENQ) si wtest alors fecritligne(NumFic,"Pas ACK renvoi ENQ") fin sortir FIN Suite = vrai fin FIN fin si wtest alors fecritligne(NumFic,"Envoi Données") fin si pas secrit(TerminalTPE,Donnees) alors erreur("Impossible d'envoyer les données au terminal") sferme(TerminalTPE) ferme FIN TempsInit=heureversentier(heuresys()) tantque sdansfileentree(TerminalTPE) = 0 si wtest alors fecritligne(NumFic,"Attente reponse apres donnees") fin multitache(-1) TempsEnCours=heureversentier(heuresys()) si TempsEnCours-TempsInit > TimeOut alors // Pas de reponse pendant 2 secondes erreur("Impossible d'envoyer les données au terminal (boucle attente)") sferme(TerminalTPE) ferme fin FIN Reponse="" TempsInit=heureversentier(heuresys()) tantque sdansfileentree(TerminalTPE) > 0 si wtest alors fecritligne(NumFic,"Acquisition reponse apres envoi données") fin multitache(-1) TempsEnCours=heureversentier(heuresys()) si TempsEnCours-TempsInit > TimeOut alors // Pas de reponse pendant 2 secondes erreur("Pas de réponse du terminal après données") sferme(TerminalTPE) ferme fin Reponse+=slit(TerminalTPE,sdansfileentree(TerminalTPE)) FIN si wtest alors testCh="" pour testii = 1 à taille(Reponse) testCh+=asc(Reponse[[testii]])+" " FIN fecritligne(NumFic,"Réponse après données "+Reponse+" "+testCh) fin si wtest alors fecritligne(NumFic,"J'envoie 1 EOT") fin si pas secrit(TerminalTPE,EOT) alors erreur("Impossible d'envoyer EOT") sferme(TerminalTPE) ferme FIN abandonúux jj=0 boucle si wtest alors fecritligne(NumFic,"J'attends le EOT final du TPE nbre recu "+jj) fin si abandon alors sortir multitache(-1) si sdansfileentree(TerminalTPE) <> 0 alors Reponse=slit(TerminalTPE,sdansfileentree(TerminalTPE)) si wtest alors testCh="" pour testii = 1 à taille(Reponse) testCh+=asc(Reponse[[testii]])+" " FIN fecritligne(NumFic,"Attente fin "+Reponse+" "+testCh) fin si position(Reponse,eot) > 0 alors si wtest alors fecritligne(NumFic,"Reception EOT Sortie") fin sortir fin si position(Reponse,ENQ) > 0 alors si wtest alors fecritligne(NumFic,"Reception ENQ -> Envoi ACK") fin secrit(TerminalTPE,ACK) FIN si position(Reponse,ETX) > 0 alors si wtest alors fecritligne(NumFic,"Reception ETX -> Envoi ACK") fin secrit(TerminalTPE,ACK) FIN fin FIN multitache(-10) fin si wtest alors fferme(NumFic) //pour ii = 1 à 3 // secrit(TerminalTPE,EOT) //FIN sferme(TerminalTPE) ferme
Nathalie wrote:
Bonjour,
Nous sommes en train de développer une application caisse en liaison
avec un terminal TPE INGENICO.
Le TPE est connecté sur le port Serie 2
/////////////////////////////////////////////////////////////////////////////////
//
//
// syntaxe : TPE.EXE PortTPE Nombre Operation Montant1
ModePaiement1... //
// Montant2 ModePaiement2 ... Montantn ModePaiementn
//
//
//
/////////////////////////////////////////////////////////////////////////////////
TerminalTPE est un entier long = extraitchaine(lignecommande(),1," ")
NbreOperations est un entier long = extraitchaine(lignecommande(),2," ")
si TerminalTPE = 0 alors ferme
si NbreOperations = 0 alors ferme
ii,jj,LRC est un entier long
Donnees est une chaine
ACK,ENQ,STX,ETX sont des chaines
TempsInit,TempsEnCours est un entier long
Reponse sont des chaines
Indice est un entier long
MontantTransaction est reel double
TypeReglement est un entier long
TimeOut est un entier long = 500
Essai est un entier
Suite est un booleen
wtest est un booleen = faux
testCh est une chaine
testii est un entier long
numfic est un entier long
wtest = faux
si wtest alors numfic = fouvre("c:tmpresultat.txt",focreation+fotexte)
global
abandon est un booleen
STXÊract(2)
ETXÊract(3)
ENQÊract(5)
ACKÊract(6)
abandon = faux
/////////////////////////////////////////////////////////////////////////////////
//
//
// Ouverture du Port
//
//
//
/////////////////////////////////////////////////////////////////////////////////
sferme(TerminalTPE)
si pas souvre(TerminalTPE,2000,2000,1000) alors
erreur("Impossible d'ouvrir le port COM"+TerminalTPE)
ferme
fin
si pas sfixeparametre(TerminalTPE,1200,1,7,0) alors
erreur("Impossible fixer paramètres du port COM"+TerminalTPE)
ferme
fin
pour Indice = 0 à NbreOperations-1
MontantTransaction = extraitchaine(lignecommande(),(Indice*2)+3," ")
TypeReglement = extraitchaine(lignecommande(),(Indice*2)+4," ")
selon TypeReglement
cas 2 // Cheque
INFOS="Chèque
"+sansespace(numeriqueverschaine(MontantTransaction,"15,2fS"))+caract(128)
Donnees="01"+verschaine(MontantTransaction*100,"08d")+"1C0978"+repete("X",10)+ETX
autres cas // CB
INFOS="Carte Bancaire
"+sansespace(numeriqueverschaine(MontantTransaction,"15,2fS"))+caract(128)
Donnees="01"+verschaine(MontantTransaction*100,"08d")+"110978"+repete("X",10)+ETX
fin
multitache()
/////////////////////////////////////////////////////////////////////////////////
//
//
// Calcul LRC
//
//
//
/////////////////////////////////////////////////////////////////////////////////
LRC=0
pour ii = 1 à taille(Donnees)
LRC=ouexbinaire(LRC,asc(Donnees[[ii]]))
FIN
Donnees=STX+Donnees+caract(LRC)
/////////////////////////////////////////////////////////////////////////////////
//
//
// Vidage des eventuels caractères polluant le COM
//
//
//
/////////////////////////////////////////////////////////////////////////////////
tantque sdansfileentree(TerminalTPE) > 0
multitache(-1)
Reponse=slit(TerminalTPE,sdansfileentree(TerminalTPE))
testCh=""
pour testii = 1 à taille(Reponse)
testCh+=asc(Reponse[[testii]])+" "
FIN
si wtest alors
fecritligne(NumFic,"Vidage du port com "+Reponse+" "+testCh)
fin
FIN
Essai = 0
Suite = faux
tantque pas Suite
Essai++
si Essai > 3 alors
erreur("pas de réponse du TPE après l'initialisation")
sferme(TerminalTPE)
ferme
FIN
si wtest alors
fecritligne(NumFic,"envoi ENQ essai = "+Essai)
fin
si pas secrit(TerminalTPE,ENQ) alors
erreur("Impossible d'envoyer l'ENQ")
sferme(TerminalTPE)
ferme
FIN
Reponse=""
TempsInit=heureversentier(heuresys())
tantque pas Suite
multitache(-1)
TempsEnCours=heureversentier(heuresys())
si TempsEnCours-TempsInit > TimeOut alors // Pas de reponse pendant 2
secondes
secrit(TerminalTPE,ENQ)
si wtest alors
fecritligne(NumFic,"Envoi ENQ Timeout")
fin
sortir
fin
si sdansfileentree(TerminalTPE) > 0 alors
Reponse+=slit(TerminalTPE,sdansfileentree(TerminalTPE))
si wtest alors
testCh=""
pour testii = 1 à taille(Reponse)
testCh+=asc(Reponse[[testii]])+" "
FIN
fecritligne(NumFic,"Lecture port com "+Reponse+" "+testCh)
fin
fin
si taille(Reponse) > 0 alors
si Reponse[[1]] <> ACK alors
secrit(TerminalTPE,ENQ)
si wtest alors
fecritligne(NumFic,"Pas ACK renvoi ENQ")
fin
sortir
FIN
Suite = vrai
fin
FIN
fin
si wtest alors
fecritligne(NumFic,"Envoi Données")
fin
si pas secrit(TerminalTPE,Donnees) alors
erreur("Impossible d'envoyer les données au terminal")
sferme(TerminalTPE)
ferme
FIN
TempsInit=heureversentier(heuresys())
tantque sdansfileentree(TerminalTPE) = 0
si wtest alors
fecritligne(NumFic,"Attente reponse apres donnees")
fin
multitache(-1)
TempsEnCours=heureversentier(heuresys())
si TempsEnCours-TempsInit > TimeOut alors // Pas de reponse pendant 2
secondes
erreur("Impossible d'envoyer les données au terminal (boucle attente)")
sferme(TerminalTPE)
ferme
fin
FIN
Reponse=""
TempsInit=heureversentier(heuresys())
tantque sdansfileentree(TerminalTPE) > 0
si wtest alors
fecritligne(NumFic,"Acquisition reponse apres envoi données")
fin
multitache(-1)
TempsEnCours=heureversentier(heuresys())
si TempsEnCours-TempsInit > TimeOut alors // Pas de reponse pendant 2
secondes
erreur("Pas de réponse du terminal après données")
sferme(TerminalTPE)
ferme
fin
Reponse+=slit(TerminalTPE,sdansfileentree(TerminalTPE))
FIN
si wtest alors
testCh=""
pour testii = 1 à taille(Reponse)
testCh+=asc(Reponse[[testii]])+" "
FIN
fecritligne(NumFic,"Réponse après données "+Reponse+" "+testCh)
fin
si wtest alors
fecritligne(NumFic,"J'envoie 1 EOT")
fin
si pas secrit(TerminalTPE,EOT) alors
erreur("Impossible d'envoyer EOT")
sferme(TerminalTPE)
ferme
FIN
abandonúux
jj=0
boucle
si wtest alors
fecritligne(NumFic,"J'attends le EOT final du TPE nbre recu "+jj)
fin
si abandon alors sortir
multitache(-1)
si sdansfileentree(TerminalTPE) <> 0 alors
Reponse=slit(TerminalTPE,sdansfileentree(TerminalTPE))
si wtest alors
testCh=""
pour testii = 1 à taille(Reponse)
testCh+=asc(Reponse[[testii]])+" "
FIN
fecritligne(NumFic,"Attente fin "+Reponse+" "+testCh)
fin
si position(Reponse,eot) > 0 alors
si wtest alors
fecritligne(NumFic,"Reception EOT Sortie")
fin
sortir
fin
si position(Reponse,ENQ) > 0 alors
si wtest alors
fecritligne(NumFic,"Reception ENQ -> Envoi ACK")
fin
secrit(TerminalTPE,ACK)
FIN
si position(Reponse,ETX) > 0 alors
si wtest alors
fecritligne(NumFic,"Reception ETX -> Envoi ACK")
fin
secrit(TerminalTPE,ACK)
FIN
fin
FIN
multitache(-10)
fin
si wtest alors fferme(NumFic)
//pour ii = 1 à 3
// secrit(TerminalTPE,EOT)
//FIN
sferme(TerminalTPE)
ferme
Nous sommes en train de développer une application caisse en liaison avec un terminal TPE INGENICO.
Le TPE est connecté sur le port Serie 2
///////////////////////////////////////////////////////////////////////////////// // // // syntaxe : TPE.EXE PortTPE Nombre Operation Montant1 ModePaiement1... // // Montant2 ModePaiement2 ... Montantn ModePaiementn // // // ///////////////////////////////////////////////////////////////////////////////// TerminalTPE est un entier long = extraitchaine(lignecommande(),1," ") NbreOperations est un entier long = extraitchaine(lignecommande(),2," ")
si TerminalTPE = 0 alors ferme si NbreOperations = 0 alors ferme
ii,jj,LRC est un entier long Donnees est une chaine ACK,ENQ,STX,ETX sont des chaines TempsInit,TempsEnCours est un entier long Reponse sont des chaines Indice est un entier long MontantTransaction est reel double TypeReglement est un entier long TimeOut est un entier long = 500 Essai est un entier Suite est un booleen wtest est un booleen = faux testCh est une chaine testii est un entier long numfic est un entier long wtest = faux si wtest alors numfic = fouvre("c:tmpresultat.txt",focreation+fotexte) global abandon est un booleen STXÊract(2) ETXÊract(3) ENQÊract(5) ACKÊract(6) abandon = faux ///////////////////////////////////////////////////////////////////////////////// // // // Ouverture du Port // // // ///////////////////////////////////////////////////////////////////////////////// sferme(TerminalTPE) si pas souvre(TerminalTPE,2000,2000,1000) alors erreur("Impossible d'ouvrir le port COM"+TerminalTPE) ferme fin si pas sfixeparametre(TerminalTPE,1200,1,7,0) alors erreur("Impossible fixer paramètres du port COM"+TerminalTPE) ferme fin
pour Indice = 0 à NbreOperations-1 MontantTransaction = extraitchaine(lignecommande(),(Indice*2)+3," ") TypeReglement = extraitchaine(lignecommande(),(Indice*2)+4," ") selon TypeReglement cas 2 // Cheque INFOS="Chèque "+sansespace(numeriqueverschaine(MontantTransaction,"15,2fS"))+caract(128)
Donnees="01"+verschaine(MontantTransaction*100,"08d")+"1C0978"+repete("X",10)+ETX autres cas // CB INFOS="Carte Bancaire "+sansespace(numeriqueverschaine(MontantTransaction,"15,2fS"))+caract(128)
Donnees="01"+verschaine(MontantTransaction*100,"08d")+"110978"+repete("X",10)+ETX fin multitache() ///////////////////////////////////////////////////////////////////////////////// // // // Calcul LRC // // // ///////////////////////////////////////////////////////////////////////////////// LRC=0 pour ii = 1 à taille(Donnees) LRC=ouexbinaire(LRC,asc(Donnees[[ii]])) FIN Donnees=STX+Donnees+caract(LRC) ///////////////////////////////////////////////////////////////////////////////// // // // Vidage des eventuels caractères polluant le COM // // // ///////////////////////////////////////////////////////////////////////////////// tantque sdansfileentree(TerminalTPE) > 0 multitache(-1) Reponse=slit(TerminalTPE,sdansfileentree(TerminalTPE)) testCh="" pour testii = 1 à taille(Reponse) testCh+=asc(Reponse[[testii]])+" " FIN si wtest alors fecritligne(NumFic,"Vidage du port com "+Reponse+" "+testCh) fin FIN Essai = 0 Suite = faux tantque pas Suite Essai++ si Essai > 3 alors erreur("pas de réponse du TPE après l'initialisation") sferme(TerminalTPE) ferme FIN si wtest alors fecritligne(NumFic,"envoi ENQ essai = "+Essai) fin si pas secrit(TerminalTPE,ENQ) alors erreur("Impossible d'envoyer l'ENQ") sferme(TerminalTPE) ferme FIN Reponse="" TempsInit=heureversentier(heuresys()) tantque pas Suite multitache(-1) TempsEnCours=heureversentier(heuresys()) si TempsEnCours-TempsInit > TimeOut alors // Pas de reponse pendant 2 secondes secrit(TerminalTPE,ENQ) si wtest alors fecritligne(NumFic,"Envoi ENQ Timeout") fin sortir fin si sdansfileentree(TerminalTPE) > 0 alors Reponse+=slit(TerminalTPE,sdansfileentree(TerminalTPE)) si wtest alors testCh="" pour testii = 1 à taille(Reponse) testCh+=asc(Reponse[[testii]])+" " FIN fecritligne(NumFic,"Lecture port com "+Reponse+" "+testCh) fin fin si taille(Reponse) > 0 alors si Reponse[[1]] <> ACK alors secrit(TerminalTPE,ENQ) si wtest alors fecritligne(NumFic,"Pas ACK renvoi ENQ") fin sortir FIN Suite = vrai fin FIN fin si wtest alors fecritligne(NumFic,"Envoi Données") fin si pas secrit(TerminalTPE,Donnees) alors erreur("Impossible d'envoyer les données au terminal") sferme(TerminalTPE) ferme FIN TempsInit=heureversentier(heuresys()) tantque sdansfileentree(TerminalTPE) = 0 si wtest alors fecritligne(NumFic,"Attente reponse apres donnees") fin multitache(-1) TempsEnCours=heureversentier(heuresys()) si TempsEnCours-TempsInit > TimeOut alors // Pas de reponse pendant 2 secondes erreur("Impossible d'envoyer les données au terminal (boucle attente)") sferme(TerminalTPE) ferme fin FIN Reponse="" TempsInit=heureversentier(heuresys()) tantque sdansfileentree(TerminalTPE) > 0 si wtest alors fecritligne(NumFic,"Acquisition reponse apres envoi données") fin multitache(-1) TempsEnCours=heureversentier(heuresys()) si TempsEnCours-TempsInit > TimeOut alors // Pas de reponse pendant 2 secondes erreur("Pas de réponse du terminal après données") sferme(TerminalTPE) ferme fin Reponse+=slit(TerminalTPE,sdansfileentree(TerminalTPE)) FIN si wtest alors testCh="" pour testii = 1 à taille(Reponse) testCh+=asc(Reponse[[testii]])+" " FIN fecritligne(NumFic,"Réponse après données "+Reponse+" "+testCh) fin si wtest alors fecritligne(NumFic,"J'envoie 1 EOT") fin si pas secrit(TerminalTPE,EOT) alors erreur("Impossible d'envoyer EOT") sferme(TerminalTPE) ferme FIN abandonúux jj=0 boucle si wtest alors fecritligne(NumFic,"J'attends le EOT final du TPE nbre recu "+jj) fin si abandon alors sortir multitache(-1) si sdansfileentree(TerminalTPE) <> 0 alors Reponse=slit(TerminalTPE,sdansfileentree(TerminalTPE)) si wtest alors testCh="" pour testii = 1 à taille(Reponse) testCh+=asc(Reponse[[testii]])+" " FIN fecritligne(NumFic,"Attente fin "+Reponse+" "+testCh) fin si position(Reponse,eot) > 0 alors si wtest alors fecritligne(NumFic,"Reception EOT Sortie") fin sortir fin si position(Reponse,ENQ) > 0 alors si wtest alors fecritligne(NumFic,"Reception ENQ -> Envoi ACK") fin secrit(TerminalTPE,ACK) FIN si position(Reponse,ETX) > 0 alors si wtest alors fecritligne(NumFic,"Reception ETX -> Envoi ACK") fin secrit(TerminalTPE,ACK) FIN fin FIN multitache(-10) fin si wtest alors fferme(NumFic) //pour ii = 1 à 3 // secrit(TerminalTPE,EOT) //FIN sferme(TerminalTPE) ferme
jeanyves34
Le mardi 30 Décembre 2003 à 11:27 par ncollin :
Bonjour,
Nous sommes en train de développer une application caisse en liaison avec un terminal TPE INGENICO.
Le TPE est connecté sur le port Serie 2
Mais nous n'arrivons pas à envoyer le montant sur le terminal et nous n'arrivons pas à récupérer les messages du terminal
Merci de votre aide
Nous avons écrit les ordres Suivant
PortTPE est une constante = 2 ChENQ = Caract(5) ChEtx = Caract(3) ChStx = Caract(2)
lnind est un entier lnval est un entier lnou est un entier
lnou = Asc(Gauche(pctexte,1)) POUR lnind = 1 A Taille(pctexte) lnval=Asc(Milieu(pctexte,1)) lnou = OuExclusifBinaire(lnou,lnval) FIN SI lnou>127 ALORS lnou = lnou - 128
RENVOYER lnou
Bonjour,
Et depuis... le temps a passé... !!! et ça donnerait quoi aujourd'hui avec un TPE en usb ou en série mais avec un Windev 17 par exemple ?? ;) {le code était aussi long que cela à l'époque ?!!!! }
Aussi, quelqu'un pourrait me donner un exemple de code pour communiquer et imprimer avec une imprimante ticket genre EPSON TM en usb (ex. TM-T20) ?? Merci pour votre réponse ! Cordialement, JY
Le mardi 30 Décembre 2003 à 11:27 par ncollin :
Bonjour,
Nous sommes en train de développer une application caisse en liaison
avec un terminal TPE INGENICO.
Le TPE est connecté sur le port Serie 2
Mais nous n'arrivons pas à envoyer le montant sur le terminal et nous
n'arrivons pas à récupérer les messages du terminal
Merci de votre aide
Nous avons écrit les ordres Suivant
PortTPE est une constante = 2
ChENQ = Caract(5)
ChEtx = Caract(3)
ChStx = Caract(2)
lnind est un entier
lnval est un entier
lnou est un entier
lnou = Asc(Gauche(pctexte,1))
POUR lnind = 1 A Taille(pctexte)
lnval=Asc(Milieu(pctexte,1))
lnou = OuExclusifBinaire(lnou,lnval)
FIN
SI lnou>127 ALORS lnou = lnou - 128
RENVOYER lnou
Bonjour,
Et depuis... le temps a passé... !!! et ça donnerait quoi aujourd'hui avec un TPE en usb ou en série mais avec un Windev 17 par exemple ?? ;)
{le code était aussi long que cela à l'époque ?!!!! }
Aussi, quelqu'un pourrait me donner un exemple de code pour communiquer et imprimer avec une imprimante ticket genre EPSON TM en usb (ex. TM-T20) ??
Merci pour votre réponse !
Cordialement, JY
lnind est un entier lnval est un entier lnou est un entier
lnou = Asc(Gauche(pctexte,1)) POUR lnind = 1 A Taille(pctexte) lnval=Asc(Milieu(pctexte,1)) lnou = OuExclusifBinaire(lnou,lnval) FIN SI lnou>127 ALORS lnou = lnou - 128
RENVOYER lnou
Bonjour,
Et depuis... le temps a passé... !!! et ça donnerait quoi aujourd'hui avec un TPE en usb ou en série mais avec un Windev 17 par exemple ?? ;) {le code était aussi long que cela à l'époque ?!!!! }
Aussi, quelqu'un pourrait me donner un exemple de code pour communiquer et imprimer avec une imprimante ticket genre EPSON TM en usb (ex. TM-T20) ?? Merci pour votre réponse ! Cordialement, JY