Console Serial IO con display OLED e seriale asincrona

Dependencies:   mbed BufferedSerial AserialIOFuncLib SSD1306 TerminalPlusV2

Fork of SerialIO by Max Scordamaglia

Console Serial IO con display OLED e seriale asincrona

Committer:
MaxScorda
Date:
Tue Aug 18 21:55:23 2015 +0000
Revision:
20:fc0a3050c5d1
Parent:
19:8a436200d76c
Child:
21:a867c9454f21
New input function, real extra serial output

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MaxScorda 0:dd5e64dd6caf 1 #include "mbed.h"
MaxScorda 1:e17894b4be01 2 #include "config.h"
MaxScorda 4:aa08e8d5ac27 3 #include "IOFuncLib.h"
MaxScorda 1:e17894b4be01 4
MaxScorda 7:f57abb3f0d3f 5
MaxScorda 4:aa08e8d5ac27 6 //init standard
MaxScorda 0:dd5e64dd6caf 7 InterruptIn mybutton(USER_BUTTON);
MaxScorda 0:dd5e64dd6caf 8 Serial pc(SERIAL_TX, SERIAL_RX); //Apertura della seriale 2
MaxScorda 3:2f32e34d820c 9 Serial ardser(PA_11, PA_12); //Apertura della seriale 1 *opzionale vedi sotto
MaxScorda 4:aa08e8d5ac27 10 //init funzioni personal lib
MaxScorda 4:aa08e8d5ac27 11 Flasher led(LED1);
MaxScorda 5:4d547f4c1278 12 Screen sc(&pc);
MaxScorda 7:f57abb3f0d3f 13 genFunctions fnz;
MaxScorda 7:f57abb3f0d3f 14
MaxScorda 4:aa08e8d5ac27 15 //var
MaxScorda 13:92303a41947a 16 int cont=0;
MaxScorda 12:78f6112c900f 17 int dispType=0; //0:oled 1:lcd
MaxScorda 20:fc0a3050c5d1 18 bool realExtraSerial=true; //se true manda fuori solo le info reali senno demo
MaxScorda 20:fc0a3050c5d1 19
MaxScorda 1:e17894b4be01 20
MaxScorda 4:aa08e8d5ac27 21 //------------ Funzioni -------------
MaxScorda 12:78f6112c900f 22 #include "macroDisp.h"
MaxScorda 7:f57abb3f0d3f 23 #include "Functions.h"
MaxScorda 3:2f32e34d820c 24
MaxScorda 0:dd5e64dd6caf 25 int main()
MaxScorda 0:dd5e64dd6caf 26 {
MaxScorda 19:8a436200d76c 27 // Seriale Principale
MaxScorda 0:dd5e64dd6caf 28 char c; // variabile che contiene il carattere appena ricevuto
MaxScorda 0:dd5e64dd6caf 29 char buffer[128]; // buffer di accumulo dei caratteri in sequenza
MaxScorda 0:dd5e64dd6caf 30 char i=0; // variabile di comodo per il conteggio dei caratteri
MaxScorda 19:8a436200d76c 31 // Seriale esterna Arduino
MaxScorda 19:8a436200d76c 32 char ce; // variabile che contiene il carattere appena ricevuto
MaxScorda 19:8a436200d76c 33 char buffere[128]; // buffer di accumulo dei caratteri in sequenza
MaxScorda 19:8a436200d76c 34 char ie=0; // variabile di comodo per il conteggio dei caratteri
MaxScorda 1:e17894b4be01 35 //Serial config
MaxScorda 1:e17894b4be01 36 pc.baud(SERIAL1BAUD);
MaxScorda 1:e17894b4be01 37 ardser.baud(SERIALARDBAUD);
MaxScorda 4:aa08e8d5ac27 38 //pc.format(int bits=8, Parity parity=SerialBase::None, int stop_bits=1)
MaxScorda 3:2f32e34d820c 39
MaxScorda 0:dd5e64dd6caf 40 mybutton.fall(&pressed);
MaxScorda 6:f8865b6d592a 41 sc.emptyFrame();
MaxScorda 19:8a436200d76c 42 sc.banner();
MaxScorda 18:dbe0172cca20 43 //ardser
MaxScorda 18:dbe0172cca20 44 ardser.printf("Connected\r");
MaxScorda 13:92303a41947a 45 // display
MaxScorda 13:92303a41947a 46 initDisp(dispType);
MaxScorda 13:92303a41947a 47 setFontDisp(dispType,'N');
MaxScorda 17:7c8c37fbec9f 48 bannerDisp(dispType);
MaxScorda 0:dd5e64dd6caf 49
MaxScorda 0:dd5e64dd6caf 50 while(1) {
MaxScorda 3:2f32e34d820c 51 ardser.attach(&callback);
MaxScorda 19:8a436200d76c 52 //seriale interna
MaxScorda 0:dd5e64dd6caf 53 c=pc.getc(); //legge un carattere dalla seriale
MaxScorda 0:dd5e64dd6caf 54 if (c != 13) {
MaxScorda 0:dd5e64dd6caf 55 buffer[i]=c; // se il carattere è diverso da CarriageReturn (ASCII 13) lo memorizza nel buffer
MaxScorda 0:dd5e64dd6caf 56 i++; // incrementa il puntatore al buffer
MaxScorda 4:aa08e8d5ac27 57 led.flash(2);
MaxScorda 0:dd5e64dd6caf 58 } else {
MaxScorda 0:dd5e64dd6caf 59 pc.printf("\n\r");
MaxScorda 0:dd5e64dd6caf 60 buffer[i]=0; //se è un CR inserisci un carattere nullo nel buffer per delimitare la stringa
MaxScorda 8:3f1d8c55b3a0 61 //controlla di non mandare solo un CR
MaxScorda 8:3f1d8c55b3a0 62 if (i>0) {
MaxScorda 20:fc0a3050c5d1 63 if (realExtraSerial==false) ardser.printf("\ncmd Ready\n\r");
MaxScorda 8:3f1d8c55b3a0 64 parser(buffer);
MaxScorda 10:5c406bde1edf 65 } else sc.commitScreen();
MaxScorda 0:dd5e64dd6caf 66 i=0; //azzera la posizione del puntatore del buffer pronto per la ricezione di una nuova stringa
MaxScorda 19:8a436200d76c 67 }
MaxScorda 20:fc0a3050c5d1 68 /*
MaxScorda 19:8a436200d76c 69 //seriale esterna
MaxScorda 19:8a436200d76c 70 ce=ardser.getc(); //legge un carattere dalla seriale
MaxScorda 19:8a436200d76c 71 if (ce != 13) {
MaxScorda 19:8a436200d76c 72 buffere[i]=ce; // se il carattere è diverso da CarriageReturn (ASCII 13) lo memorizza nel buffer
MaxScorda 19:8a436200d76c 73 ie++; // incrementa il puntatore al buffer
MaxScorda 19:8a436200d76c 74 led.flash(2);
MaxScorda 19:8a436200d76c 75 } else {
MaxScorda 19:8a436200d76c 76 ////? pc.printf("\n\r");
MaxScorda 19:8a436200d76c 77 buffere[i]=0; //se è un CR inserisci un carattere nullo nel buffer per delimitare la stringa
MaxScorda 19:8a436200d76c 78 //controlla di non mandare solo un CR
MaxScorda 19:8a436200d76c 79 if (ie>0) {
MaxScorda 19:8a436200d76c 80 ////? ardser.printf("\ncmd Ready\n\r");
MaxScorda 19:8a436200d76c 81 ////? parser(buffere);
MaxScorda 19:8a436200d76c 82 } else sc.commitScreen();
MaxScorda 19:8a436200d76c 83 ie=0; //azzera la posizione del puntatore del buffer pronto per la ricezione di una nuova stringa
MaxScorda 0:dd5e64dd6caf 84 }
MaxScorda 20:fc0a3050c5d1 85 */
MaxScorda 0:dd5e64dd6caf 86 }
MaxScorda 0:dd5e64dd6caf 87 }
MaxScorda 6:f8865b6d592a 88
MaxScorda 6:f8865b6d592a 89
MaxScorda 20:fc0a3050c5d1 90