![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
app4
Dependencies: mbed-rtos mbed CRC16
Fork of S5info_APP2 by
uart.h
- Committer:
- ericbisson
- Date:
- 2017-03-07
- Revision:
- 25:d0c348c3c85d
- Parent:
- 10:8b066285c2e0
File content as of revision 25:d0c348c3c85d:
#include <vector> #include "mbed.h" #include "CRC16.h" using std::vector; #define RETURN_EMPTYVECTOR(x) return vector<x>(); const char PREAMBULE = 0b01010101; const char START = 0b01111110; const char END = 0b01111110; const char FLAGS = 0x00; const char MAX_LENGTH = 80; CRC16 mycrc16; vector<char> uart_read(Serial& COM) { vector<char> result; while (COM.readable()) { result.push_back(COM.getc()); wait_ms(1); // 9600 bits/secondes, donc ~0.1ms par bit } if (result.size() > 7) { // Validations de base if (result[0] != PREAMBULE || result[1] != START || result[2] != result.size() - 7 || result.back() != END) { RETURN_EMPTYVECTOR(char); } // Calcul du CRC unsigned short currentCRC = result[result.size()-2] + result[result.size()-3]<<8; vector<char> charge_utile(&result[4], &result[result.size()-4]); if (currentCRC != mycrc16.calculateCRC16(&charge_utile[0], charge_utile.size())) { RETURN_EMPTYVECTOR(char); } return charge_utile; } RETURN_EMPTYVECTOR(char); }