programme RFID anthony coudret-risso

Dependencies:   mbed

main.cpp

Committer:
notBED
Date:
2018-05-23
Revision:
1:290a357d0da0
Parent:
0:a8c7cc9e26fb

File content as of revision 1:290a357d0da0:

#include "stdio.h"
#include "mbed.h"
#include <Serial.h>

DigitalIn CTS(p8);
DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);
DigitalOut ledmanu(p18);

Serial pc(USBTX, USBRX);
Serial rfid1(p9, NC);
Serial rfid2(NC, p10);

int egal1 = 0;
int egal2 = 0;
int egal3 = 0;
int egal4 = 0;
int egal5 = 0;
int tag1[4]= {0xAE,0xFB,0x63,0x10};
int tag2[4]= {0x25,0x02,0x64,0x10};
int tag3[4]= {0x3F,0xFC,0x63,0x10};
int tag4[4]= {0xCE,0xEE,0x63,0x10};
int tag5[4]= {0xD6,0xD9,0x63,0x10};
int tag[4]= {0x00,0x00,0x00,0x00};
int reponse_rfid[5];
int reponse_rfid1[255];
int lireuid[8]= {0x52,0x00};
//int trame_rfid[8]={0x7A};
//int tag_rfid[8]={0x76,0x01};
//int uid[8]={0x55};

void HandShake();
void Antenna();
void field();

int main()
{
    egal1=0;
    egal2=0;
    egal3=0;
    egal4=0;
    egal5=0;

    while(1) {

        if (CTS == 0) {
            // pc.printf("- [CTS = 0] -");
            // pc.printf("\n\r");
            //HandShake();
            for (int i=0; i<2; i++) {
                rfid2.putc(lireuid[i]);
            }
            wait_ms(25);
            for (int e=0; e<1; e++) {
                reponse_rfid1[e]=(rfid1.getc());
                led1=1;
            }
            if (reponse_rfid1[0] == 0xD6) {
                for (int i=0; i<2; i++) {
                    rfid2.putc(lireuid[i]);
                    led2=1;
                }
                wait_ms(50);
                for (int e=1; e<5; e++) {
                    reponse_rfid[e]=(rfid1.getc());
                    led3=1;
                }
                /*for(int i=0;i<5;i++){
                  tag[i] = {0};
                }*/
                pc.printf("---------------------------------------");
                pc.printf("\n\r");
                pc.printf("Trame de reponse du PCB en hexa : ");
                for (int i=0; i<2; i++) pc.printf("%X ",lireuid[i]);
                pc.printf("\n\r");
                pc.printf("Status = %X\n\r",reponse_rfid1[0]);
                pc.printf("UID = ");
                for (int i=1; i<5; i++) pc.printf("%X ",reponse_rfid[i]);
                pc.printf("\n\r");
                pc.printf("---------------------------------------");
                pc.printf("\n\r");
            } else if (reponse_rfid1[0] == 0xC0) {
                field();
            }
            if (reponse_rfid1[0] == 0xE0) {
                Antenna();
            }
            //reponse_rfid[1]=0x00;
            
            for(int i=1; i<5; i++) {
                tag[i-1] = reponse_rfid[i];
            }
            if(tag[0] != 0x00) {
                pc.printf("\n\r");
                pc.printf("tableau de 0: %X", tag[0]);
                pc.printf("\n\r");
                
                for(int i=0; i<4; i++) {
                    if(tag[i] == tag1[i]) {
                        egal1 = 1;
                        pc.printf("Tag1 - OK ");
                        pc.printf("\n\r");
                        ledmanu = 1;
                        break;
                        //pc.printf(tag[i]);
                    } else if(tag[i] != tag1[i]) {
                        pc.printf("Tag1 - NOK ");
                        pc.printf("\n\r");
                        egal1 = 0;
                        break;
                        //pc.printf(tag[i]);
                    }
                }
                for(int i=0; i<4; i++) {
                    if(tag[i] == tag2[i]) {
                        egal2 = 1;
                        pc.printf("Tag2 - OK ");
                        pc.printf("\n\r");
                        break;
                        //pc.printf(tag[i]);
                    } else if(tag[i] != tag2[i]) {
                        pc.printf("Tag2 - NOK ");
                        pc.printf("\n\r");
                        egal2 = 0;
                        break;
                        //pc.printf(tag[i]);
                    }
                }
                for(int i=0; i<4; i++) {
                    if(tag[i] == tag3[i]) {
                        egal3 = 1;
                        pc.printf("Tag3 - OK ");
                        pc.printf("\n\r");
                        break;
                        //pc.printf(tag[i]);
                    } else if(tag[i] != tag3[i]) {
                        pc.printf("Tag3 - NOK ");
                        pc.printf("\n\r");
                        egal3 = 0;
                        break;
                        //pc.printf(tag[i]);
                    }
                }
                for(int i=0; i<4; i++) {
                    if(tag[i] == tag4[i]) {
                        egal4 = 1;
                        pc.printf("Tag4 - OK ");
                        pc.printf("\n\r");
                        break;
                        //pc.printf(tag[i]);
                    } else if(tag[i] != tag4[i]) {
                        pc.printf("Tag4 - NOK ");
                        pc.printf("\n\r");
                        egal4 = 0;
                        break;
                        //pc.printf(tag[i]);
                    }
                }
                for(int i=0; i<4; i++) {
                    if(tag[i] == tag5[i]) {
                        egal5 = 1;
                        pc.printf("Tag5 - OK ");
                        pc.printf("\n\r");
                        break;
                        //pc.printf(tag[i]);
                    } else if(tag[i] != tag5[i]) {
                        pc.printf("Tag5 - NOK ");
                        pc.printf("\n\r");
                        egal5 = 0;
                        break;
                        //pc.printf(tag[i]);
                   }
                }
            reponse_rfid[1]=0x00;
            }

            led1=0;
            led2=0;
            led3=0;

            wait_ms(850);
        }
        ledmanu = 0;
    }
}

/*void HandShake(){
  pc.printf("\n\r");
  pc.printf("CTS IS TO 0");
  pc.printf("\n\r");
}*/

void Antenna()
{
    pc.printf("\n\r");
    pc.printf("ANTENNA NOT DETECTED");
    pc.printf("\n\r");
}

void field()
{
    pc.printf("\n\r");
    pc.printf("NOT TAG IN FIELD");
    pc.printf("\n\r");
}