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:
Fri Nov 06 20:15:54 2015 +0000
Revision:
36:9ecb98d7c2cd
Parent:
33:19d1d8bc5891
Child:
37:befd2fe96ee3
Final release. Waiting for some adds

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