Willie Solano
/
CardReader_Basico
CardReader_Basico
Revision 0:fe7857738499, committed 2019-06-04
- Comitter:
- williequesada
- Date:
- Tue Jun 04 18:10:44 2019 +0000
- Commit message:
- pablo
Changed in this revision
diff -r 000000000000 -r fe7857738499 CardReader.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CardReader.lib Tue Jun 04 18:10:44 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/williequesada/code/CardReader/#e5dbf1e75384
diff -r 000000000000 -r fe7857738499 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Jun 04 18:10:44 2019 +0000 @@ -0,0 +1,269 @@ +#include "mbed.h" + +// Conector ZHR-6 de JST http://www.jst.com/ +// _ _ _ _ _ _ +// ! ! ! ! ! ! ! 1->CTS 2->TXD 3->DTR +// 6 5 4 3 2 1 4->RXD 5->GND 6->PWR + + +RawSerial Computer(USBTX, USBRX); // tx, rx +RawSerial CardReader(PC_12,PD_2,9600); + +const char SOH=1; +const char EOT=4; +const char ESP=33; +const char ADDR=0; +const char LEN=0; +const char CARD_POSITION='8'; +const char CARD_LOCK='{'; +const char CARD_UNLOCK='}'; +const char DEV_STATUS='$'; +const char DEV_RESET=127; +const char ARM_MODE='P'; +const char ARM_DEBUG='p'; +const char ARM_ABORT=27; +const char SIG_START='?'; +const char FCT_READ='R'; +const char MAG_CUSTOM_T1='U'; +const char MAG_CUSTOM_T2='V'; +const char MAG_CUSTOM_T3='W'; +const char MAG_ISO_T1='Q'; +const char MAG_ISO_T2='R'; +const char MAG_ISO_T3='S'; +const char MAG_CUSTOM_F='4'; +const char BBCA='='; +const char BBCB='~'; +const char BBCC='x'; +const char BBCD='!'; +const char BBCE='U'; +const char BBCF='u'; +const char BBCG=30; +const char BBCH='d'; +const char BBCI='z'; +const char BBCJ='T'; +const char BBCK='W'; +const char BBCL='V'; +const char BBCM=10; +const char R_ACTION='^'; +const char R_ERROR='*'; +const char R_INVALID='!'; +const char R_NO_DATA='+'; +const char R_COMAND_ERROR='?'; +const char R_START=':'; +const char R_POSITION1='q'; +const char R_POSITION2='s'; +const char R_NO_MAG_CARD='>'; +const char R_MAG_DETECT_ON='('; +const char R_MAG_DETECT_OFF=')'; +char inByte; +char Comando=' '; +char command[9]; + +uint8_t rx_buffer[255]; + +int Contador=0; + +PwmOut led(LED1); +DigitalOut CardReaderPower(PF_3); +DigitalOut Max232(PC_8); + + +void Interrupt_CardReader() +{ + rx_buffer[Contador]=CardReader.getc(); + Contador++; +} + +int main() +{ + CardReader.attach(&Interrupt_CardReader); + + Computer.printf("\n--------------------------"); + Computer.printf("\n a--> On"); + Computer.printf("\n A--> Card Position"); + Computer.printf("\n B--> Card Lock"); + Computer.printf("\n C--> Card Unlock"); + Computer.printf("\n D--> Device Status"); + Computer.printf("\n E--> Arm Mode"); + Computer.printf("\n F--> Arm Debug"); + Computer.printf("\n G--> Arm Abort"); + Computer.printf("\n H--> Get Custom"); + Computer.printf("\n I--> Reset"); + Computer.printf("\n J--> Get Iso T1"); + Computer.printf("\n K--> Get Iso T2"); + Computer.printf("\n L--> Get Iso T3"); + Computer.printf("\n--------------------------"); + CardReaderPower=0; + Max232=0; + + while(1) { + if (Computer.readable()) { + Comando=Computer.getc(); + Contador=0; + if(Comando=='a') { + Computer.printf("\n a--> On"); + CardReaderPower=1; + Max232=1; // 00111101 --> XOR bytes anteriores + } + if(Comando=='b') { + Computer.printf("\n a--> off max"); + Max232=0; // 00111101 --> XOR bytes anteriores + } + if(Comando=='c') { + Computer.printf("\n a--> off card"); + CardReaderPower=0; // 00111101 --> XOR bytes anteriores + } + if(Comando=='A') { + Computer.printf("\n A--> Card Position");// ENVIO S2 S1 S1 + CardReader.putc(SOH); // 00000001 00000001 00000001 + CardReader.putc(ADDR); // 00000000 00000000 00000000 + CardReader.putc(LEN); // 00000000 00000000 00000000 + CardReader.putc(LEN); // 00000000 00000001 00000001 + CardReader.putc(CARD_POSITION); // 00111000 01110011 01110001 + CardReader.putc(EOT); // 00000100 s q + CardReader.putc(BBCA); // 00111101 01110011 01110001 + } + if(Comando=='B') { + Computer.printf("\n B--> Card Lock"); // ENVIO EXITO FALLO + CardReader.putc(SOH); // 00000001 00000001 00000001 + CardReader.putc(ADDR); // 00000000 00000000 00000000 + CardReader.putc(LEN); // 00000000 00000000 00000000 + CardReader.putc(LEN); // 00000000 00000001 00000001 + CardReader.putc(CARD_LOCK); // 01111011 01011110 + CardReader.putc(EOT); // 00000100 ^ + CardReader.putc(BBCB); // 01111110 01011110 + } + if(Comando=='C') { + Computer.printf("\n C--> Card Unlock"); // ENVIO EXITO FALLO + CardReader.putc(SOH); // 00000001 00000001 00000001 + CardReader.putc(ADDR); // 00000000 00000000 00000000 + CardReader.putc(LEN); // 00000000 00000000 00000000 + CardReader.putc(LEN); // 00000000 00000001 00000001 + CardReader.putc(CARD_UNLOCK); // 01111101 01011110 + CardReader.putc(EOT); // 00000100 ^ + CardReader.putc(BBCC); // 01111000 01011110 + } + if(Comando=='D') { + Computer.printf("\n D--> Device Status");// ENVIO + CardReader.putc(SOH); // 00000001 + CardReader.putc(ADDR); // 00000000 + CardReader.putc(LEN); // 00000000 + CardReader.putc(LEN); // 00000000 + CardReader.putc(DEV_STATUS); // 00100100 + CardReader.putc(EOT); // 00000100 + CardReader.putc(BBCD); // 00100001 + } + if(Comando=='E') { + Computer.printf("\n E--> Arm Mode"); // ENVIO ACTIVADO ERROR + CardReader.putc(SOH); // 00000001 00000001 00000001 + CardReader.putc(ADDR); // 00000000 00000000 00000000 + CardReader.putc(LEN); // 00000000 00000000 00000000 + CardReader.putc(LEN); // 00000000 00000001 00000001 + CardReader.putc(ARM_MODE); // 01010000 01011110 00100001 + CardReader.putc(EOT); // 00000100 + CardReader.putc(BBCE); // 01010101 01011110 00100001 + } + if(Comando=='F') { + Computer.printf("\n F--> Arm Debug"); // ENVIO EXITO NO_MAG_C DET_ON DET_OFF + CardReader.putc(SOH); // 00000001 00000001 00000001 00000001 00000001 + CardReader.putc(ADDR); // 00000000 00000000 00000000 00000000 00000000 + CardReader.putc(LEN); // 00000000 00000000 00000000 00000000 00000000 + CardReader.putc(LEN); // 00000000 00000001 00000001 00000001 00000001 + CardReader.putc(ARM_DEBUG); // 01110000 01011110 00111110 00101000 00101001 + CardReader.putc(EOT); // 00000100 ^ > ( ) + CardReader.putc(BBCF); // 01110101 01011110 00111110 00101000 00101001 + } + if(Comando=='G') { + Computer.printf("\n G--> Arm Abort"); // ENVIO EXITO ERROR + CardReader.putc(SOH); // 00000001 00000001 00000001 + CardReader.putc(ADDR); // 00000000 00000000 00000000 + CardReader.putc(LEN); // 00000000 00000000 00000000 + CardReader.putc(LEN); // 00000000 00000001 00000001 + CardReader.putc(ARM_ABORT); // 00011010 01011110 01011110 + CardReader.putc(EOT); // 00000100 ^ * + CardReader.putc(BBCG); // 00011111 01011110 00101010 + } + if(Comando=='H') { + Computer.printf("\n H--> Get Custom"); + CardReader.putc(SOH); // 00000001 + CardReader.putc(ADDR); // 00000000 + CardReader.putc(LEN); // 00000000 + CardReader.putc(LEN); // 00000000 + CardReader.putc(MAG_CUSTOM_T1); // 01010101 + CardReader.putc(MAG_CUSTOM_F); // 00110100 + CardReader.putc(EOT); // 00000100 + CardReader.putc(BBCH); // 01100100 --> XOR bytes anteriores + } + if(Comando=='I') { + Computer.printf("\n I--> Reset"); + CardReader.putc(SOH); // 00000001 + CardReader.putc(ADDR); // 00000000 + CardReader.putc(LEN); // 00000000 + CardReader.putc(LEN); // 00000000 + CardReader.putc(DEV_RESET); // 01111111 + CardReader.putc(EOT); // 00000100 + CardReader.putc(BBCI); // 01111010 --> XOR bytes anteriores + } + if(Comando=='J') { + Computer.printf("\n J--> Get Iso T1"); + CardReader.putc(SOH); // 00000001 + CardReader.putc(ADDR); // 00000000 + CardReader.putc(LEN); // 00000000 + CardReader.putc(LEN); // 00000000 + CardReader.putc(MAG_ISO_T1); // 01010001 + CardReader.putc(EOT); // 00000100 + CardReader.putc(BBCJ); // 01010100 --> XOR bytes anteriores + } + if(Comando=='K') { + Computer.printf("\n K--> Get Iso T2"); + CardReader.putc(SOH); // 00000001 + CardReader.putc(ADDR); // 00000000 + CardReader.putc(LEN); // 00000000 + CardReader.putc(LEN); // 00000000 + CardReader.putc(MAG_ISO_T2); // 01010010 + CardReader.putc(EOT); // 00000100 + CardReader.putc(BBCK); // 01010111 --> XOR bytes anteriores + } + if(Comando=='L') { + Computer.printf("\n L--> Get Iso T3"); + CardReader.putc(SOH); // 00000001 + CardReader.putc(ADDR); // 00000000 + CardReader.putc(LEN); // 00000000 + CardReader.putc(LEN); // 00000000 + CardReader.putc(MAG_ISO_T3); // 01010011 + CardReader.putc(EOT); // 00000100 + CardReader.putc(BBCL); // 01010110 --> XOR bytes anteriores + } + + Computer.printf("\n--------------------------"); + Computer.printf("\n a--> On"); + Computer.printf("\n A--> Card Position"); + Computer.printf("\n B--> Card Lock"); + Computer.printf("\n C--> Card Unlock"); + Computer.printf("\n D--> Device Status"); + Computer.printf("\n E--> Arm Mode"); + Computer.printf("\n F--> Arm Debug"); + Computer.printf("\n G--> Arm Abort"); + Computer.printf("\n H--> Get Custom"); + Computer.printf("\n I--> Reset"); + Computer.printf("\n J--> Get Iso T1"); + Computer.printf("\n K--> Get Iso T2"); + Computer.printf("\n L--> Get Iso T3"); + Computer.printf("\n--------------------------"); + wait(5); + } + + if(Contador!=0) { + for(int i=0; i<=Contador; i++) { + Computer.printf("-%#X-",rx_buffer[i]); + } + Computer.printf("--C--%i \n",Contador); + for(int i=0; i<=Contador; i++) { + Computer.printf("-%c-",rx_buffer[i]); + } + Computer.printf("--C--%i",Contador); + Contador=0; + } + } +} +
diff -r 000000000000 -r fe7857738499 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Jun 04 18:10:44 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/5aab5a7997ee \ No newline at end of file