Manchester receiver demo.
Dependencies: Manchester mbed CRC16 ManchesterMsg
main.cpp
- Committer:
- hudakz
- Date:
- 2017-05-18
- Revision:
- 2:1cb83aa7b99a
- Parent:
- 1:2ce05484e526
- Child:
- 3:0c6680f77855
File content as of revision 2:1cb83aa7b99a:
#include "mbed.h" #include "Manchester.h" #include "CRC16.h" DigitalOut led(LED1); int main(void) { Manchester man(p11, p12, 9600); // Tx pin, Rx pin, speed [bps] ManchesterMsg msg(100); // Message container (max bytes) char str[50]; // Array of char uint32_t val; CRC16 crc16; unsigned short msgCRC16; unsigned short calcCRC16; //pc.baud(9600); while(1) { if(man.receive(msg)) { // Receive message // Print data length and raw data bytes printf("\r\n----------------------\r\n"); printf("Length = %d\r\n", msg.len); printf("Raw data :\r\n"); for(size_t i = 0; i < msg.len; i++) { if((i + 1) % 10 == 0) printf(" %.2x\r\n", msg.data[i]); else printf(" %.2x", msg.data[i]); } printf("\r\n"); calcCRC16 = crc16.calc(msg.data, msg.len - 2); // exclude CRC bytes from calculation // Extract data from message msg >> str >> val >> msgCRC16; printf("msgCRC16 = %d\r\n", msgCRC16); printf("calcCRC16 = %d\r\n", calcCRC16); if( calcCRC16 != msgCRC16) { printf("CRC error\r\n"); } else { printf("Extracted data :\r\n"); printf(" str = %s\r\n", str); printf(" val = 0x%x\r\n", val); } } else printf("Error\r\n"); led = !led; } }