|
URGENT !!! TPE INGENICO ENVOI DE MONTANT !! LRC ? |
Débuté par jer_mest, 19 aoû. 2004 19:45 - 3 réponses |
| |
| | | |
|
| |
Posté le 19 août 2004 - 19:45 |
Bonjour,
J'aimerais envoyer un montant sur le TPE, le dialogue se fait bien avec le TPE je lui envoie le ENQ, je recois le ACK mais ensuite quand je lui envoi le message + une LRC tout bete ca ne marche pas ...
Code //
//------- Initialisation du Tableau qui sera remplie du montant à valider ! Tabn est un tableau de 12 entiers sur 1 octet Tabn[1]=0 Tabn[2]=1 Tabn[3]=0 Tabn[4]=0 Tabn[5]=0 Tabn[6]=0 Tabn[7]=0 Tabn[8]=5 Tabn[9]=0 Tabn[10]=0 Tabn[11]=Null Tabn[12]=3 //------------------------------------
// Calcul de la LRC (Octet de contrôle du message) LRC=0 LRC=OuExclusifBinaire(Tabn[1],Tabn[2]) POUR i=3 A 12 LRC = OuExclusifBinaire(LRC,Tabn[i]) FIN Info("LRC = "+LRC)
// Ouverture du port spécifié SI PAS sOuvre(1, 5000, 5000) ALORS Erreur("Erreur ouverture port Com")
// Initialise les paramètres du port série SI PAS sFixeParamètre(... 1, ... // Port 1200, ... // Taux 1, ... // Parité : 0=aucune, 1=paire, 2=impaire 7, ... // Nb bit de données 0) ALORS//, ... // Nb bit de stop // 0=1 bit de stop, 1=1,5 bits de stop, 2=2 bits de stop Erreur("Erreur a la fixation des parametres !", ErreurInfo(errInfo)) FIN
// Envoi d'un message au buffer de sortie de COM1 // Envoie ENQ = 05 sEcrit(1,Caract(NumériqueVersChaine(5, "X"))) // Pause Multitache(6)
// Lit Réponse ACK ou NAK MessageLu=sLit(1, 1) SI Asc(MessageLu)<>06 ALORS Erreur("Erreur Transmission de données au TPE : ","Réponse du TPE : "+Asc(MessageLu)) sFerme(1) RETOUR FIN
// Pause Multitache(6)
// Envoi d'un message au buffer de sortie de COM1 // Envoie STX = 02 sEcrit(1,Caract(NumériqueVersChaine(2, "X")))
// Pause Multitache(6)
// Envoie Message Type Caisse Normal (ECR#+MNT+IND) //resultat = sEcrit(1,Caract(NumériqueVersChaine(Tabn[1], "X"))) //resultat = sEcrit(1,Caract(NumériqueVersChaine(Tabn[2], "X"))) //resultat = sEcrit(1,Caract(NumériqueVersChaine(Tabn[3], "X"))) //resultat = sEcrit(1,Caract(NumériqueVersChaine(Tabn[4], "X"))) //resultat = sEcrit(1,Caract(NumériqueVersChaine(Tabn[5], "X"))) //resultat = sEcrit(1,Caract(NumériqueVersChaine(Tabn[6], "X"))) //resultat = sEcrit(1,Caract(NumériqueVersChaine(Tabn[7], "X"))) //resultat = sEcrit(1,Caract(NumériqueVersChaine(Tabn[8], "X"))) //resultat = sEcrit(1,Caract(NumériqueVersChaine(Tabn[9], "X"))) //resultat = sEcrit(1,Caract(NumériqueVersChaine(Tabn[10], "X"))) //resultat = sEcrit(1,Caract(NumériqueVersChaine(Tabn[11], "X"))) // Si = 1 le TPE renvoi N° Carte Bancaire
// ECR# resultat=sEcrit(1,Caract(48)+Caract(49)) Multitache(6) // Pause Info(resultat) // Message resultat=sEcrit(1,Caract(48)+Caract(48)+Caract(48)+Caract(48)+Caract(48)+Caract(53)+Caract(48)+Caract(48)) Multitache(6) // Pause Info(resultat)
// Envoi ETX (End of Text) = 03 resultat=sEcrit(1,Caract(NumériqueVersChaine(3, "X"))) Multitache(6) // Pause
// Envoi LRC (OuExclusif tt les Octects du message) resultat=sEcrit(1,LRC) Multitache(6) // Pause
// Lit Réponse ACK ou NACK MessageLu=sLit(1, 1) SI Asc(MessageLu)<>06 ALORS Erreur("Erreur Transmission de données au TPE : ","Réponse du TPE : "+Asc(MessageLu)) sFerme(1) RETOUR FIN
// Fermeture du port spécifié sFerme(1)
Si quelqu'un peut m'envoyer un bout de code avec un nombre et une LRC correcte pour que je vérifie si mon calcule est faux !
MERCI D'AVANCE .. Cordialement JM ! |
| |
| |
| | | |
|
| | |
| |
Posté le 20 août 2004 - 09:51 |
J'emploie cette fonction depuis longtemps, si ça peut t'aider.
PROCEDURE PRIVÉ SmartNet::CalculLRC(trame) MonLRC est un entier sur 2 octets i est un entier MonLRC = Asc( trame[[ 1 ]] ) POUR i = 2 A Taille(trame) MonLRC = OuExclusifBinaire( MonLRC, Asc( trame[[ i ]] )) FIN RENVOYER MonLRC
"Jérémie" <jer_mest@hotmail.com> a écrit dans le message de news: 4124cb20$1@news.pcsoft.fr...
Bonjour,
J'aimerais envoyer un montant sur le TPE, le dialogue se fait bien avec le TPE je lui envoie le ENQ, je recois le ACK mais ensuite quand je lui envoi le message + une LRC tout bete ca ne marche pas ...
Code //
//------- Initialisation du Tableau qui sera remplie du montant à valider ! Tabn est un tableau de 12 entiers sur 1 octet Tabn[1]=0 Tabn[2]=1 Tabn[3]=0 Tabn[4]=0 Tabn[5]=0 Tabn[6]=0 Tabn[7]=0 Tabn[8]=5 Tabn[9]=0 Tabn[10]=0 Tabn[11]=Null Tabn[12]=3 //------------------------------------
// Calcul de la LRC (Octet de contrôle du message) LRC=0 LRC=OuExclusifBinaire(Tabn[1],Tabn[2]) POUR i=3 A 12 LRC = OuExclusifBinaire(LRC,Tabn[i]) FIN Info("LRC = "+LRC)
// Ouverture du port spécifié SI PAS sOuvre(1, 5000, 5000) ALORS Erreur("Erreur ouverture port Com")
// Initialise les paramètres du port série SI PAS sFixeParamètre(... 1, ... // Port 1200, ... // Taux 1, ... // Parité : 0=aucune, 1=paire, 2=impaire 7, ... // Nb bit de données 0) ALORS//, ... // Nb bit de stop // 0=1 bit de stop, 1=1,5 bits de stop, 2=2 bits de stop Erreur("Erreur a la fixation des parametres !", ErreurInfo(errInfo)) FIN
// Envoi d'un message au buffer de sortie de COM1 // Envoie ENQ = 05 sEcrit(1,Caract(NumériqueVersChaine(5, "X"))) // Pause Multitache(6)
// Lit Réponse ACK ou NAK MessageLu=sLit(1, 1) SI Asc(MessageLu)<>06 ALORS Erreur("Erreur Transmission de données au TPE : ","Réponse du TPE :
"+Asc(MessageLu))
sFerme(1) RETOUR FIN
// Pause Multitache(6)
// Envoi d'un message au buffer de sortie de COM1 // Envoie STX = 02 sEcrit(1,Caract(NumériqueVersChaine(2, "X")))
// Pause Multitache(6)
// Envoie Message Type Caisse Normal (ECR#+MNT+IND) //resultat = sEcrit(1,Caract(NumériqueVersChaine(Tabn[1], "X"))) //resultat = sEcrit(1,Caract(NumériqueVersChaine(Tabn[2], "X"))) //resultat = sEcrit(1,Caract(NumériqueVersChaine(Tabn[3], "X"))) //resultat = sEcrit(1,Caract(NumériqueVersChaine(Tabn[4], "X"))) //resultat = sEcrit(1,Caract(NumériqueVersChaine(Tabn[5], "X"))) //resultat = sEcrit(1,Caract(NumériqueVersChaine(Tabn[6], "X"))) //resultat = sEcrit(1,Caract(NumériqueVersChaine(Tabn[7], "X"))) //resultat = sEcrit(1,Caract(NumériqueVersChaine(Tabn[8], "X"))) //resultat = sEcrit(1,Caract(NumériqueVersChaine(Tabn[9], "X"))) //resultat = sEcrit(1,Caract(NumériqueVersChaine(Tabn[10], "X"))) //resultat = sEcrit(1,Caract(NumériqueVersChaine(Tabn[11], "X"))) // Si = 1 le TPE renvoi N° Carte Bancaire
// ECR# resultat=sEcrit(1,Caract(48)+Caract(49)) Multitache(6) // Pause Info(resultat) // Message
resultat=sEcrit(1,Caract(48)+Caract(48)+Caract(48)+Caract(48)+Caract(48)+Car act(53)+Caract(48)+Caract(48))
Multitache(6) // Pause Info(resultat)
// Envoi ETX (End of Text) = 03 resultat=sEcrit(1,Caract(NumériqueVersChaine(3, "X"))) Multitache(6) // Pause
// Envoi LRC (OuExclusif tt les Octects du message) resultat=sEcrit(1,LRC) Multitache(6) // Pause
// Lit Réponse ACK ou NACK MessageLu=sLit(1, 1) SI Asc(MessageLu)<>06 ALORS Erreur("Erreur Transmission de données au TPE : ","Réponse du TPE : "+Asc(MessageLu))
sFerme(1) RETOUR FIN
// Fermeture du port spécifié sFerme(1)
Si quelqu'un peut m'envoyer un bout de code avec un nombre et une LRC correcte
pour que je vérifie si mon calcule est faux !
MERCI D'AVANCE .. Cordialement JM !
|
| |
| |
| | | |
|
| | |
| |
Posté le 20 août 2004 - 11:46 |
Je ne comprends pas trop, trame est en ASCII ? Comment dois je employer cette fonction merci ! |
| |
| |
| | | |
|
| | |
| |
Posté le 20 août 2004 - 18:31 |
'Trame' est la chaine de caractères sur laquelle doit s'appliquer le LRC.
"Jérémie" <jer_mest@hotmail.com> a écrit dans le message de news: 4125ac58$1@news.pcsoft.fr...
Je ne comprends pas trop, trame est en ASCII ? Comment dois je employer
cette
fonction merci !
|
| |
| |
| | | |
|
| | | | |
| | |
|