Use display to show serial message Only for test
Dependencies: EFM32_SegmentLCD IOFuncLib mbed
Functions.h@1:08217ba7f63c, 2015-07-19 (annotated)
- Committer:
- MaxScorda
- Date:
- Sun Jul 19 00:26:13 2015 +0000
- Revision:
- 1:08217ba7f63c
- Parent:
- 0:c0d5dcd1de43
Correct serial implementation; String=7 or "X"; Time
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| MaxScorda | 0:c0d5dcd1de43 | 1 | #include <string> |
| MaxScorda | 0:c0d5dcd1de43 | 2 | genFunctions fnz; |
| MaxScorda | 0:c0d5dcd1de43 | 3 | |
| MaxScorda | 0:c0d5dcd1de43 | 4 | |
| MaxScorda | 0:c0d5dcd1de43 | 5 | /* |
| MaxScorda | 0:c0d5dcd1de43 | 6 | * Callback for 1 second timebase |
| MaxScorda | 0:c0d5dcd1de43 | 7 | */ |
| MaxScorda | 0:c0d5dcd1de43 | 8 | void tickerCallback(void) |
| MaxScorda | 0:c0d5dcd1de43 | 9 | { |
| MaxScorda | 0:c0d5dcd1de43 | 10 | seconds++; |
| MaxScorda | 0:c0d5dcd1de43 | 11 | uint32_t clockValue = ((seconds / 60) % 60) * 100 + (seconds % 60); |
| MaxScorda | 0:c0d5dcd1de43 | 12 | segmentDisplay.Number(clockValue); |
| MaxScorda | 0:c0d5dcd1de43 | 13 | segmentDisplay.Symbol(LCD_SYMBOL_COL10, seconds & 0x1); |
| MaxScorda | 0:c0d5dcd1de43 | 14 | } |
| MaxScorda | 0:c0d5dcd1de43 | 15 | |
| MaxScorda | 0:c0d5dcd1de43 | 16 | void blink(void) |
| MaxScorda | 0:c0d5dcd1de43 | 17 | { |
| MaxScorda | 0:c0d5dcd1de43 | 18 | //sarebbe bene evitare questa funzione ma il notPin non funziona direttamente dentro blinker.attach(blink, TOGGLE_RATE); |
| MaxScorda | 0:c0d5dcd1de43 | 19 | led.notPin(); |
| MaxScorda | 0:c0d5dcd1de43 | 20 | } |
| MaxScorda | 0:c0d5dcd1de43 | 21 | |
| MaxScorda | 0:c0d5dcd1de43 | 22 | |
| MaxScorda | 0:c0d5dcd1de43 | 23 | void serialCb(int events) |
| MaxScorda | 0:c0d5dcd1de43 | 24 | { |
| MaxScorda | 1:08217ba7f63c | 25 | /* Something triggered the callback, either buffer is full or '\n' is received */ |
| MaxScorda | 0:c0d5dcd1de43 | 26 | unsigned char i; |
| MaxScorda | 0:c0d5dcd1de43 | 27 | string stringout; |
| MaxScorda | 0:c0d5dcd1de43 | 28 | |
| MaxScorda | 0:c0d5dcd1de43 | 29 | if(events & SERIAL_EVENT_RX_CHARACTER_MATCH) { |
| MaxScorda | 0:c0d5dcd1de43 | 30 | //Received 'S', check for buffer length |
| MaxScorda | 0:c0d5dcd1de43 | 31 | for(i = 0; i < BUFF_LENGTH; i++) { |
| MaxScorda | 0:c0d5dcd1de43 | 32 | //Found the length! |
| MaxScorda | 0:c0d5dcd1de43 | 33 | stringout=stringout+fnz.char2string(rx_buf[i]); |
| MaxScorda | 1:08217ba7f63c | 34 | if ((rx_buf[i] == '\n') || (rx_buf[i] == 'X')) break; |
| MaxScorda | 0:c0d5dcd1de43 | 35 | } |
| MaxScorda | 0:c0d5dcd1de43 | 36 | |
| MaxScorda | 0:c0d5dcd1de43 | 37 | // Toggle blinking |
| MaxScorda | 0:c0d5dcd1de43 | 38 | if(blinking) { |
| MaxScorda | 0:c0d5dcd1de43 | 39 | blinker.detach(); |
| MaxScorda | 0:c0d5dcd1de43 | 40 | blinking = false; |
| MaxScorda | 0:c0d5dcd1de43 | 41 | } else { |
| MaxScorda | 0:c0d5dcd1de43 | 42 | blinker.attach(blink, TOGGLE_RATE); |
| MaxScorda | 0:c0d5dcd1de43 | 43 | blinking = true; |
| MaxScorda | 0:c0d5dcd1de43 | 44 | } |
| MaxScorda | 0:c0d5dcd1de43 | 45 | } else if (events & SERIAL_EVENT_RX_COMPLETE) { |
| MaxScorda | 0:c0d5dcd1de43 | 46 | i = BUFF_LENGTH - 1; |
| MaxScorda | 0:c0d5dcd1de43 | 47 | } else { |
| MaxScorda | 0:c0d5dcd1de43 | 48 | rx_buf[0] = 'E'; |
| MaxScorda | 0:c0d5dcd1de43 | 49 | rx_buf[1] = 'R'; |
| MaxScorda | 0:c0d5dcd1de43 | 50 | rx_buf[2] = 'R'; |
| MaxScorda | 0:c0d5dcd1de43 | 51 | rx_buf[3] = '!'; |
| MaxScorda | 0:c0d5dcd1de43 | 52 | rx_buf[4] = 0; |
| MaxScorda | 0:c0d5dcd1de43 | 53 | i = 3; |
| MaxScorda | 0:c0d5dcd1de43 | 54 | } |
| MaxScorda | 0:c0d5dcd1de43 | 55 | |
| MaxScorda | 1:08217ba7f63c | 56 | segmentDisplay.Write((char *)rx_buf); |
| MaxScorda | 1:08217ba7f63c | 57 | //oppure |
| MaxScorda | 1:08217ba7f63c | 58 | // segmentDisplay.Write((char *) stringout.c_str()); |
| MaxScorda | 1:08217ba7f63c | 59 | |
| MaxScorda | 0:c0d5dcd1de43 | 60 | // Echo string, no callback |
| MaxScorda | 0:c0d5dcd1de43 | 61 | test_connection.write(rx_buf, i+1, 0, 0); |
| MaxScorda | 0:c0d5dcd1de43 | 62 | |
| MaxScorda | 0:c0d5dcd1de43 | 63 | |
| MaxScorda | 0:c0d5dcd1de43 | 64 | // Reset serial reception |
| MaxScorda | 1:08217ba7f63c | 65 | test_connection.read(rx_buf, BUFF_LENGTH, serialEventCb, SERIAL_EVENT_RX_ALL, 'X'); |
| MaxScorda | 0:c0d5dcd1de43 | 66 | } |
| MaxScorda | 0:c0d5dcd1de43 | 67 | |
| MaxScorda | 0:c0d5dcd1de43 | 68 | void tickerCallback(void); |