Bonjour,
Malgré l'aide de certaines personnes, je n'arrive toujours pas à envoyer le montant au TPE, toujours NACK en réponse apres l'envoi du message. Je ne c pas d'ou peut venir le probleme, dois je envoyer le message en chaine, en numerique je ne c pas ... AIDEZ MOI ENVOYE MOI UN BOUT DE CODE QUI FONCTIONNE !!!!
Code //
Nombre est un entier MessageLu est une chaîne resultat est un entier LRC est un entier n est un entier sur 1 octet i est un entier
//------- //n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12 sont des entier sur 1 octet
//------- 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=SmartNet(Caract(48)+Caract(49)+Caract(48)+Caract(48)+Caract(48)+Caract(48)+Caract(48)+caract(53)+Caract(48)+Caract(48)) LRC=SmartNet("0100000500") Info("LRC = "+LRC)
// Pause avant de commencer à dialoguer Multitache(60)
// 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)<>6 ALORS Erreur("Erreur Réception ACK apres ENQ : ","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
// Message resultat=sEcrit(1,Caract(48)+Caract(49)+Caract(48)+Caract(48)+Caract(48)+Caract(48)+Caract(48)+Caract(53)+Caract(48)+Caract(48)) Multitache(6) // Pause Info("Message écrit #ECR+MNT : "+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) TANTQUE Asc(MessageLu)=0 MessageLu=sLit(1,1) FIN
SI Asc(MessageLu)<>6 ALORS Erreur("Erreur Réception ACK apres LRC : ","Réponse du TPE : "+Asc(MessageLu)) sFerme(1) RETOUR FIN
// Fermeture du port spécifié sFerme(1) |