DIISWAG / Mbed 2 deprecated CAN_Database

Dependencies:   mbed mbed-rtos

Committer:
dedounet
Date:
Sat Jun 03 14:59:00 2017 +0000
Revision:
7:5ad5ce91831f
Parent:
6:2c713a0187dd
Child:
8:2edddda41050
manque traitBuzz

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dedounet 0:bcbc14441ee8 1 #include "mbed.h"
Taliarte 1:6f8bf5bdc70f 2 #include "rtos.h"
Taliarte 5:e7fa92a21eff 3 #include <vector>
Taliarte 1:6f8bf5bdc70f 4 #define SIG_RX_CAN 0x01
Taliarte 1:6f8bf5bdc70f 5
Taliarte 5:e7fa92a21eff 6 using namespace std;
Taliarte 1:6f8bf5bdc70f 7
Taliarte 1:6f8bf5bdc70f 8 DigitalOut led1(LED1);
Taliarte 1:6f8bf5bdc70f 9 DigitalOut led2(LED2);
dedounet 0:bcbc14441ee8 10
Taliarte 1:6f8bf5bdc70f 11 Thread threadA;
Taliarte 1:6f8bf5bdc70f 12 Thread threadB;
dedounet 3:35151308f847 13 Thread threadC;
Taliarte 1:6f8bf5bdc70f 14
dedounet 6:2c713a0187dd 15 char * BDD[8];
Taliarte 1:6f8bf5bdc70f 16
Taliarte 1:6f8bf5bdc70f 17 CAN CanPort(p30, p29);
Taliarte 1:6f8bf5bdc70f 18 CANMessage MessageRx;
Taliarte 1:6f8bf5bdc70f 19 CANMessage MessageTx;
Taliarte 1:6f8bf5bdc70f 20
Taliarte 2:654aafc318bf 21 CANMessage MessageBuzzer;
Taliarte 2:654aafc318bf 22
dedounet 7:5ad5ce91831f 23 bool send_Buzz=false; // Envoyer tramme au buzzer
Taliarte 2:654aafc318bf 24
Taliarte 1:6f8bf5bdc70f 25 unsigned int Id;
dedounet 0:bcbc14441ee8 26
Taliarte 5:e7fa92a21eff 27 bool rechercheID(char * ID) // recherche d'un ID dans la base de données
Taliarte 5:e7fa92a21eff 28 {
Taliarte 5:e7fa92a21eff 29 bool retour = false;
Taliarte 5:e7fa92a21eff 30 for( int i= 0; i< sizeof(BDD); i++)
Taliarte 5:e7fa92a21eff 31 {
Taliarte 5:e7fa92a21eff 32 if (BDD[i]==ID) retour= true ;
Taliarte 5:e7fa92a21eff 33 }
Taliarte 5:e7fa92a21eff 34 return retour;
Taliarte 5:e7fa92a21eff 35 }
Taliarte 5:e7fa92a21eff 36
Taliarte 1:6f8bf5bdc70f 37 void canReader(void)
Taliarte 1:6f8bf5bdc70f 38 {
Taliarte 1:6f8bf5bdc70f 39
Taliarte 1:6f8bf5bdc70f 40
Taliarte 1:6f8bf5bdc70f 41 if (CanPort.read(MessageRx))
Taliarte 1:6f8bf5bdc70f 42 {
Taliarte 1:6f8bf5bdc70f 43 led1 = !led1;
dedounet 3:35151308f847 44 switch(MessageRx.id){
dedounet 3:35151308f847 45 case 0x111 :
dedounet 3:35151308f847 46 threadA.signal_set(SIG_RX_CAN);
dedounet 3:35151308f847 47 break;
dedounet 3:35151308f847 48
dedounet 3:35151308f847 49 case 0x222 :
dedounet 3:35151308f847 50 threadC.signal_set(SIG_RX_CAN);
dedounet 3:35151308f847 51 break;
dedounet 3:35151308f847 52
dedounet 3:35151308f847 53
dedounet 3:35151308f847 54 default:
dedounet 3:35151308f847 55 printf("Id error = %X\n\r",MessageRx.id) ;
dedounet 3:35151308f847 56 }
dedounet 3:35151308f847 57
Taliarte 1:6f8bf5bdc70f 58 }
Taliarte 1:6f8bf5bdc70f 59
Taliarte 1:6f8bf5bdc70f 60 }
Taliarte 1:6f8bf5bdc70f 61
dedounet 3:35151308f847 62 void traitRFID()
Taliarte 1:6f8bf5bdc70f 63 {
dedounet 3:35151308f847 64 int i=0;
dedounet 7:5ad5ce91831f 65 char* ID;
Taliarte 1:6f8bf5bdc70f 66 while(true)
Taliarte 1:6f8bf5bdc70f 67 {
Taliarte 1:6f8bf5bdc70f 68 Thread::signal_wait(SIG_RX_CAN);
Taliarte 1:6f8bf5bdc70f 69 led2 = !led2;
dedounet 3:35151308f847 70 for(i=0; i<8;i++){
dedounet 3:35151308f847 71 printf("Numero de carte = %X\n\r",MessageRx.data[i]);
dedounet 7:5ad5ce91831f 72 ID[i] << MessageRx.data[i];
dedounet 7:5ad5ce91831f 73 }
dedounet 7:5ad5ce91831f 74 send_Buzz=rechercheID( ID);
dedounet 7:5ad5ce91831f 75 //si buzz ok, on trait Buzz par un signal
Taliarte 1:6f8bf5bdc70f 76
dedounet 0:bcbc14441ee8 77 }
dedounet 0:bcbc14441ee8 78 }
dedounet 3:35151308f847 79
dedounet 3:35151308f847 80 void thA()
dedounet 3:35151308f847 81 {
dedounet 3:35151308f847 82 int i=0;
dedounet 3:35151308f847 83 while(true)
dedounet 3:35151308f847 84 {
dedounet 3:35151308f847 85 Thread::signal_wait(SIG_RX_CAN);
dedounet 3:35151308f847 86 led2 = !led2;
dedounet 3:35151308f847 87 if(MessageRx.data[0]==0x01){
dedounet 3:35151308f847 88 printf("RX ID = %X \t\n\r",MessageRx.id);
dedounet 3:35151308f847 89 for (i=0;i<8;i++){
dedounet 3:35151308f847 90 printf(" DATA = %X \n\r",MessageRx.data[i]);
dedounet 3:35151308f847 91 }
dedounet 3:35151308f847 92 }
dedounet 3:35151308f847 93 }
dedounet 3:35151308f847 94 }
Taliarte 1:6f8bf5bdc70f 95
dedounet 7:5ad5ce91831f 96 void traitBuzz()
Taliarte 1:6f8bf5bdc70f 97 {
Taliarte 2:654aafc318bf 98 while(true)
Taliarte 1:6f8bf5bdc70f 99 {
Taliarte 1:6f8bf5bdc70f 100 led1 = !led1;
Taliarte 1:6f8bf5bdc70f 101 printf("TIC3s\n\r");
Taliarte 2:654aafc318bf 102 MessageBuzzer.id=Id;
Taliarte 2:654aafc318bf 103 CanPort.write(MessageBuzzer);
Taliarte 2:654aafc318bf 104 /*if (Id < 0x3FF) Id++;
Taliarte 2:654aafc318bf 105 else Id = 0x000;*/
Taliarte 1:6f8bf5bdc70f 106
Taliarte 1:6f8bf5bdc70f 107 wait(3);
Taliarte 1:6f8bf5bdc70f 108 }
Taliarte 1:6f8bf5bdc70f 109 }
Taliarte 1:6f8bf5bdc70f 110
Taliarte 1:6f8bf5bdc70f 111 int main()
Taliarte 1:6f8bf5bdc70f 112 {
Taliarte 5:e7fa92a21eff 113 char c[8] ={0x00,0x00,0x00,0x00,0x3E,0xC1,0xF5,0x8A};
Taliarte 2:654aafc318bf 114
Taliarte 1:6f8bf5bdc70f 115 CanPort.frequency(20000);
Taliarte 1:6f8bf5bdc70f 116
Taliarte 2:654aafc318bf 117 Id = 0x222;
Taliarte 2:654aafc318bf 118 MessageBuzzer.len=1;
Taliarte 2:654aafc318bf 119 MessageBuzzer.data[0] = 0x01;
Taliarte 2:654aafc318bf 120 //MessageTx.data[1] = 0xAA;
Taliarte 1:6f8bf5bdc70f 121
Taliarte 1:6f8bf5bdc70f 122 MessageTx.format = CANStandard;
Taliarte 1:6f8bf5bdc70f 123 //MessageTx.format = CANExtended;
Taliarte 1:6f8bf5bdc70f 124
Taliarte 1:6f8bf5bdc70f 125 MessageTx.type = CANData;
Taliarte 1:6f8bf5bdc70f 126 //MessageTx.type = CANRemote;
Taliarte 1:6f8bf5bdc70f 127
Taliarte 1:6f8bf5bdc70f 128 CanPort.attach(canReader,CAN::RxIrq);
Taliarte 1:6f8bf5bdc70f 129
Taliarte 1:6f8bf5bdc70f 130 threadA.start(thA);
dedounet 7:5ad5ce91831f 131 threadB.start(traitBuzz);
dedounet 3:35151308f847 132 threadC.start(traitRFID);
Taliarte 1:6f8bf5bdc70f 133
Taliarte 1:6f8bf5bdc70f 134 led1 = 0;
dedounet 3:35151308f847 135 led2 =0 ;
Taliarte 1:6f8bf5bdc70f 136 printf("Start OK\n\r");
dedounet 4:4051a72a22f7 137
Taliarte 1:6f8bf5bdc70f 138
dedounet 4:4051a72a22f7 139
Taliarte 1:6f8bf5bdc70f 140 while (true)
Taliarte 1:6f8bf5bdc70f 141 {
Taliarte 1:6f8bf5bdc70f 142
Taliarte 1:6f8bf5bdc70f 143 }
Taliarte 1:6f8bf5bdc70f 144 }