Bus CAN intégré au lecteur RFID
Dependencies: RTOS-Serial mbed-rtos mbed
main.cpp@1:b28e3aa83d61, 2017-06-03 (annotated)
- Committer:
- ValentinB
- Date:
- Sat Jun 03 14:04:01 2017 +0000
- Revision:
- 1:b28e3aa83d61
- Parent:
- 0:d2c9340b481b
Ajout du bus Can pour le lecteur RFID
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
alexis66 | 0:d2c9340b481b | 1 | #include "mbed.h" |
alexis66 | 0:d2c9340b481b | 2 | #include "rtos.h" |
alexis66 | 0:d2c9340b481b | 3 | #include "rtos_serial.h" |
alexis66 | 0:d2c9340b481b | 4 | #include "tRDM880.h" |
alexis66 | 0:d2c9340b481b | 5 | |
alexis66 | 0:d2c9340b481b | 6 | #define TXD p28 |
alexis66 | 0:d2c9340b481b | 7 | #define RXD p27 |
alexis66 | 0:d2c9340b481b | 8 | |
ValentinB | 1:b28e3aa83d61 | 9 | #define ID 0x222 |
ValentinB | 1:b28e3aa83d61 | 10 | |
ValentinB | 1:b28e3aa83d61 | 11 | CAN CanPort(p30, p29); |
ValentinB | 1:b28e3aa83d61 | 12 | CANMessage MessageTx; |
ValentinB | 1:b28e3aa83d61 | 13 | |
alexis66 | 0:d2c9340b481b | 14 | int main() |
alexis66 | 0:d2c9340b481b | 15 | { |
alexis66 | 0:d2c9340b481b | 16 | unsigned char Data[100]; |
alexis66 | 0:d2c9340b481b | 17 | int Res; |
alexis66 | 0:d2c9340b481b | 18 | tCSN CardNumber; |
alexis66 | 0:d2c9340b481b | 19 | unsigned char Status; |
alexis66 | 0:d2c9340b481b | 20 | |
alexis66 | 0:d2c9340b481b | 21 | RTOS_Serial Uart(TXD, RXD); |
alexis66 | 0:d2c9340b481b | 22 | tRdm880 Reader(&Uart); |
alexis66 | 0:d2c9340b481b | 23 | |
ValentinB | 1:b28e3aa83d61 | 24 | while(1){ |
ValentinB | 1:b28e3aa83d61 | 25 | |
alexis66 | 0:d2c9340b481b | 26 | Reader.SendGetID(); |
alexis66 | 0:d2c9340b481b | 27 | Res = Reader.GetResponse(Data); |
alexis66 | 0:d2c9340b481b | 28 | |
alexis66 | 0:d2c9340b481b | 29 | Status = Reader.getStatus(Data); |
alexis66 | 0:d2c9340b481b | 30 | |
ValentinB | 1:b28e3aa83d61 | 31 | if (Status == CMD_OK){ |
alexis66 | 0:d2c9340b481b | 32 | |
alexis66 | 0:d2c9340b481b | 33 | Res = Reader.getCardSerialNumber(Data,&CardNumber); |
alexis66 | 0:d2c9340b481b | 34 | |
ValentinB | 1:b28e3aa83d61 | 35 | if (Res == 0){ |
ValentinB | 1:b28e3aa83d61 | 36 | printf("CARD ID = %04X %08X %08X\n",CardNumber.VeryHigh16b,CardNumber.High32b,CardNumber.Low32b); |
ValentinB | 1:b28e3aa83d61 | 37 | |
ValentinB | 1:b28e3aa83d61 | 38 | MessageTx.data[0] = CardNumber.High32b >> 24; |
ValentinB | 1:b28e3aa83d61 | 39 | MessageTx.data[1] = CardNumber.High32b >> 16; |
ValentinB | 1:b28e3aa83d61 | 40 | MessageTx.data[2] = CardNumber.High32b >> 8; |
ValentinB | 1:b28e3aa83d61 | 41 | MessageTx.data[3] = CardNumber.High32b; |
ValentinB | 1:b28e3aa83d61 | 42 | |
ValentinB | 1:b28e3aa83d61 | 43 | MessageTx.data[4] = CardNumber.Low32b >> 24; |
ValentinB | 1:b28e3aa83d61 | 44 | MessageTx.data[5] = CardNumber.Low32b >> 16; |
ValentinB | 1:b28e3aa83d61 | 45 | MessageTx.data[6] = CardNumber.Low32b >> 8; |
ValentinB | 1:b28e3aa83d61 | 46 | MessageTx.data[7] = CardNumber.Low32b; |
ValentinB | 1:b28e3aa83d61 | 47 | |
ValentinB | 1:b28e3aa83d61 | 48 | MessageTx.id=ID; |
ValentinB | 1:b28e3aa83d61 | 49 | CanPort.write(MessageTx);//on envoi 8 octets |
ValentinB | 1:b28e3aa83d61 | 50 | |
ValentinB | 1:b28e3aa83d61 | 51 | } else { |
alexis66 | 0:d2c9340b481b | 52 | printf("ID ERROR\n"); |
ValentinB | 1:b28e3aa83d61 | 53 | } |
alexis66 | 0:d2c9340b481b | 54 | |
ValentinB | 1:b28e3aa83d61 | 55 | }else { |
ValentinB | 1:b28e3aa83d61 | 56 | printf("NO CARD\n"); |
ValentinB | 1:b28e3aa83d61 | 57 | } |
alexis66 | 0:d2c9340b481b | 58 | |
alexis66 | 0:d2c9340b481b | 59 | |
alexis66 | 0:d2c9340b481b | 60 | |
alexis66 | 0:d2c9340b481b | 61 | |
alexis66 | 0:d2c9340b481b | 62 | wait(0.5); |
alexis66 | 0:d2c9340b481b | 63 | } |
alexis66 | 0:d2c9340b481b | 64 | } |
alexis66 | 0:d2c9340b481b | 65 | |
alexis66 | 0:d2c9340b481b | 66 |