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:
Sun Sep 06 23:06:14 2015 +0000
Revision:
27:b8d7f2ede945
Parent:
25:5e93e62a319e
Child:
28:f7a59cee5f0d
Attivata seriale in ingresso. Da sviluppare

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