Use display to show serial message Only for test

Dependencies:   EFM32_SegmentLCD IOFuncLib mbed

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?

UserRevisionLine numberNew 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);