Funzioni di IO varie con seriale asincrona

Dependents:   Nucleo_AsyncSerialIO

Fork of IOFuncLib by Max Scordamaglia

Committer:
MaxScorda
Date:
Sun May 31 22:00:17 2015 +0000
Revision:
3:6c6446382bb2
Parent:
2:8e723d99838e
Child:
4:eae942db86db
Nuove funzioni stringa e conversione

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MaxScorda 2:8e723d99838e 1 #include "config.h"
MaxScorda 0:f401aa69861a 2 #include "IOFuncLib.h"
MaxScorda 0:f401aa69861a 3 #include "mbed.h"
MaxScorda 0:f401aa69861a 4
MaxScorda 1:58f3784ad68e 5 // FLASHER
MaxScorda 0:f401aa69861a 6 Flasher::Flasher(PinName pin) : _pin(pin)
MaxScorda 0:f401aa69861a 7 {
MaxScorda 0:f401aa69861a 8 _pin = 0;
MaxScorda 0:f401aa69861a 9 }
MaxScorda 0:f401aa69861a 10
MaxScorda 0:f401aa69861a 11 void Flasher::flash(int n)
MaxScorda 0:f401aa69861a 12 {
MaxScorda 0:f401aa69861a 13 for(int i=0; i<n*2; i++) {
MaxScorda 0:f401aa69861a 14 _pin = !_pin;
MaxScorda 0:f401aa69861a 15 wait_ms(50);
MaxScorda 0:f401aa69861a 16 }
MaxScorda 0:f401aa69861a 17 }
MaxScorda 0:f401aa69861a 18
MaxScorda 0:f401aa69861a 19 void Flasher::onOff(bool n)
MaxScorda 0:f401aa69861a 20 {
MaxScorda 0:f401aa69861a 21 _pin=n;
MaxScorda 0:f401aa69861a 22 }
MaxScorda 0:f401aa69861a 23
MaxScorda 0:f401aa69861a 24 void Flasher::notPin()
MaxScorda 0:f401aa69861a 25 {
MaxScorda 0:f401aa69861a 26 _pin = !_pin;
MaxScorda 1:58f3784ad68e 27 }
MaxScorda 1:58f3784ad68e 28
MaxScorda 1:58f3784ad68e 29 // Screen
MaxScorda 1:58f3784ad68e 30 Screen::Screen(Serial* ps)
MaxScorda 1:58f3784ad68e 31 {
MaxScorda 1:58f3784ad68e 32 _ps=ps;
MaxScorda 1:58f3784ad68e 33 }
MaxScorda 1:58f3784ad68e 34
MaxScorda 1:58f3784ad68e 35 void Screen::banner()
MaxScorda 1:58f3784ad68e 36 {
MaxScorda 2:8e723d99838e 37 // _ps->printf("\f");
MaxScorda 3:6c6446382bb2 38
MaxScorda 2:8e723d99838e 39 writeScreen("----- Boot screen -----\n",1,1);
MaxScorda 2:8e723d99838e 40 writeScreen("--- Nucleo Scorda IO Test ---\n",1,2);
MaxScorda 2:8e723d99838e 41 commitScreen();
MaxScorda 1:58f3784ad68e 42 }
MaxScorda 1:58f3784ad68e 43
MaxScorda 1:58f3784ad68e 44 void Screen::pressed()
MaxScorda 1:58f3784ad68e 45 {
MaxScorda 2:8e723d99838e 46 //_ps->printf("\f");
MaxScorda 2:8e723d99838e 47 // _ps->printf("*** Reset Screen ***\n\r\n");
MaxScorda 2:8e723d99838e 48 writeScreen("*** Reset Screen ***\n",1,1);
MaxScorda 2:8e723d99838e 49 commitScreen();
MaxScorda 2:8e723d99838e 50 }
MaxScorda 2:8e723d99838e 51
MaxScorda 2:8e723d99838e 52 void Screen::commitScreen()
MaxScorda 2:8e723d99838e 53 {
MaxScorda 1:58f3784ad68e 54 _ps->printf("\f");
MaxScorda 2:8e723d99838e 55 for (int j = 0; j < screenRow-2; j++) {
MaxScorda 2:8e723d99838e 56 for (int i = 0; i < screenColumn; i++) {
MaxScorda 2:8e723d99838e 57 _ps->printf("%c",svec[i][j]);
MaxScorda 2:8e723d99838e 58 }
MaxScorda 2:8e723d99838e 59 _ps->printf("\n\r");
MaxScorda 2:8e723d99838e 60 }
MaxScorda 2:8e723d99838e 61 }
MaxScorda 2:8e723d99838e 62
MaxScorda 2:8e723d99838e 63 void Screen::writeScreen(char sstr[], char xx, char yy)
MaxScorda 2:8e723d99838e 64 {
MaxScorda 2:8e723d99838e 65 char i=0;
MaxScorda 3:6c6446382bb2 66 while ((sstr[i]!='\n') && (i<(screenColumn-xx+1))) {
MaxScorda 2:8e723d99838e 67 // _ps->printf((char*) sstr[i]);
MaxScorda 2:8e723d99838e 68 svec[xx+i][yy]=sstr[i];
MaxScorda 2:8e723d99838e 69 i++;
MaxScorda 2:8e723d99838e 70 }
MaxScorda 2:8e723d99838e 71
MaxScorda 1:58f3784ad68e 72 }
MaxScorda 2:8e723d99838e 73
MaxScorda 2:8e723d99838e 74 void Screen::emptyFrame()
MaxScorda 2:8e723d99838e 75 {
MaxScorda 2:8e723d99838e 76 char car;
MaxScorda 2:8e723d99838e 77 for (int j = 0; j < screenRow-2; j++) {
MaxScorda 2:8e723d99838e 78 if ((j==0) || (j==screenRow-3)) car='-';
MaxScorda 2:8e723d99838e 79 else car=' ';
MaxScorda 2:8e723d99838e 80 for (int i = 1; i < screenColumn-1; i++) {
MaxScorda 2:8e723d99838e 81 svec[i][j]=car;
MaxScorda 2:8e723d99838e 82 }
MaxScorda 2:8e723d99838e 83 svec[0][j]='|';
MaxScorda 2:8e723d99838e 84 svec[screenColumn-1][j]='|';
MaxScorda 2:8e723d99838e 85 }
MaxScorda 2:8e723d99838e 86 }
MaxScorda 2:8e723d99838e 87
MaxScorda 2:8e723d99838e 88 void Screen::clearScreen(char upperx, char uppery, char loverx, char lowery)
MaxScorda 2:8e723d99838e 89 {
MaxScorda 2:8e723d99838e 90 //controllare margini
MaxScorda 3:6c6446382bb2 91
MaxScorda 2:8e723d99838e 92 for (int j = uppery; j <= lowery; j++) {
MaxScorda 2:8e723d99838e 93 for (int i = upperx; i <= loverx; i++) {
MaxScorda 2:8e723d99838e 94 svec[i][j]=' ' ;
MaxScorda 2:8e723d99838e 95 }
MaxScorda 2:8e723d99838e 96 }
MaxScorda 3:6c6446382bb2 97 }
MaxScorda 3:6c6446382bb2 98
MaxScorda 3:6c6446382bb2 99 // general
MaxScorda 3:6c6446382bb2 100
MaxScorda 3:6c6446382bb2 101 char* genFunctions::xsubstr(char* arr, int begin, int len)
MaxScorda 3:6c6446382bb2 102 {
MaxScorda 3:6c6446382bb2 103 char* res = new char[len];
MaxScorda 3:6c6446382bb2 104 for (int i = 0; i < len; i++)
MaxScorda 3:6c6446382bb2 105 res[i] = *(arr + begin + i);
MaxScorda 3:6c6446382bb2 106 res[len] = 0;
MaxScorda 3:6c6446382bb2 107 return res;
MaxScorda 3:6c6446382bb2 108 }
MaxScorda 3:6c6446382bb2 109
MaxScorda 3:6c6446382bb2 110 string genFunctions::addEOS(string sttde)
MaxScorda 3:6c6446382bb2 111 {
MaxScorda 3:6c6446382bb2 112 string ret=sttde;
MaxScorda 3:6c6446382bb2 113 if (sttde.substr(sttde.size()-1,1) != "\n") ret=sttde+"\n";
MaxScorda 3:6c6446382bb2 114 return ret;
MaxScorda 3:6c6446382bb2 115 }
MaxScorda 3:6c6446382bb2 116
MaxScorda 3:6c6446382bb2 117 string genFunctions::subEOS(string sttde)
MaxScorda 3:6c6446382bb2 118 {
MaxScorda 3:6c6446382bb2 119 string ret=sttde;
MaxScorda 3:6c6446382bb2 120 if (sttde.substr(sttde.size()-1,1) == "\n") ret=sttde.substr(0,sttde.size()-2);
MaxScorda 3:6c6446382bb2 121 return ret;
MaxScorda 3:6c6446382bb2 122 }
MaxScorda 3:6c6446382bb2 123
MaxScorda 3:6c6446382bb2 124 char* genFunctions::string2char(string sttde)
MaxScorda 3:6c6446382bb2 125 {
MaxScorda 3:6c6446382bb2 126 //ora aggiunge comunque l'EOS. Decidere se parametrizzare
MaxScorda 3:6c6446382bb2 127 sttde=addEOS(sttde);
MaxScorda 3:6c6446382bb2 128 char *cstr = new char[sttde.length() + 1];
MaxScorda 3:6c6446382bb2 129 strcpy(cstr, sttde.c_str());
MaxScorda 3:6c6446382bb2 130 delete [] cstr;
MaxScorda 3:6c6446382bb2 131 return cstr;
MaxScorda 2:8e723d99838e 132 }