Re: Terminal CB Ingenico ? |
Sujet: Re: Terminal CB Ingenico ? par Anonyme sur 13/5/2006 13:08:35 voila une procedure qui permet d'envoyer la somme au terminal bancaire sagem ( fct tres bien) le protocol etant standard cela doit marché pour l'ingenico attention, il faut entrer dans le menu de l'appareil pour regle vitesse .... PROCEDURE ProcDialogueCarte(ParamMontant) ii,jj,LRC est un entier Donnees est une chaîne ACK,ENQ,STX,ETX sont des chaînes Reponse sont des chaînes MontantCentime est un réel=Arrondi( ParamMontant*100) STX=Caract(2);ETX=Caract(3);ENQ=Caract(5);ACK=Caract(6) // Si pas d'imprimante alors on retour NumSerie est un entier=1 // doit etre modifiable // Ferme le port serie sFerme(NumSerie) SI sOuvre(NumSerie, 2000, 2000) ALORS // Paramétrage de COM1 sFixeParamètre(NumSerie, 9600, 0, 8, 1) SINON Erreur("Erreur d'ouverture du port série "+NumSerie+" pour l'e terminal bancaire") RETOUR FIN // Vide le port Serie SI sDansFileEntrée(NumSerie) > 0 ALORS Reponse=sLit(NumSerie,sDansFileEntrée(NumSerie)) FIN // Format le message Donnees="01"+NumériqueVersChaîne(MontantCentime,"08d")+ETX // Calcul LRC LRC=0 POUR ii = 1 A Taille(Donnees) LRC=OUExclusifBinaire (LRC,Asc(Donnees[[ii]])) FIN Donnees=STX+Donnees+Caract(LRC) SI PAS sEcrit(NumSerie,ENQ) ALORS Erreur("Impossible d'envoyer l'ENQ") sFerme(NumSerie) Ferme FIN SI PAS sEcrit(NumSerie,Donnees) ALORS Erreur("Impossible d'envoyer les données au terminal") sFerme(NumSerie) Ferme FIN // Attend réponse Multitâche(10) SI sDansFileEntrée(NumSerie) > 0 ALORS Reponse=sLit(NumSerie,sDansFileEntrée(NumSerie)) SI Position(Reponse,ACK)>0 ALORS Resultat=Vrai FIN SINON Resultat=Faux FIN sFerme(NumSerie) |