Funzioni di IO varie con seriale asincrona
Dependents: Nucleo_AsyncSerialIO
Fork of IOFuncLib by
IOFuncLib.cpp@4:eae942db86db, 2015-06-02 (annotated)
- Committer:
- MaxScorda
- Date:
- Tue Jun 02 00:51:20 2015 +0000
- Revision:
- 4:eae942db86db
- Parent:
- 3:6c6446382bb2
- Child:
- 5:0dd768073f59
Parsing e funzioni EOS
Who changed what in which revision?
User | Revision | Line number | New 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 | 4:eae942db86db | 37 | genFunctions fA; |
MaxScorda | 4:eae942db86db | 38 | writeScreen("_____ Boot screen _____\n",25,1); |
MaxScorda | 4:eae942db86db | 39 | writeScreen("___ Nucleo Scorda IO Test ___\n",22,2); |
MaxScorda | 4:eae942db86db | 40 | writeScreen(fA.string2char(fA.padstr("-\n",78,'-')),1,5); //azzo funziona... |
MaxScorda | 4:eae942db86db | 41 | writeScreen("Parsing \n",2,5); |
MaxScorda | 4:eae942db86db | 42 | writeScreen("Funzione\n",2,7); |
MaxScorda | 4:eae942db86db | 43 | writeScreen("Numero\n",22,7); |
MaxScorda | 4:eae942db86db | 44 | writeScreen("Parametro\n",42,7); |
MaxScorda | 4:eae942db86db | 45 | writeScreen(fA.string2char(fA.padstr("-\n",78,'-')),1,11); //azzo funziona... |
MaxScorda | 4:eae942db86db | 46 | writeScreen("Status \n",2,11); |
MaxScorda | 4:eae942db86db | 47 | writeScreen("Led 1 \n",2,13); |
MaxScorda | 4:eae942db86db | 48 | writeScreen("Virtual Led \n",22,13); |
MaxScorda | 4:eae942db86db | 49 | writeScreen("Input string\n",2,19); |
MaxScorda | 4:eae942db86db | 50 | writeScreen("Result\n",42,19); |
MaxScorda | 2:8e723d99838e | 51 | commitScreen(); |
MaxScorda | 1:58f3784ad68e | 52 | } |
MaxScorda | 1:58f3784ad68e | 53 | |
MaxScorda | 1:58f3784ad68e | 54 | void Screen::pressed() |
MaxScorda | 1:58f3784ad68e | 55 | { |
MaxScorda | 2:8e723d99838e | 56 | //_ps->printf("\f"); |
MaxScorda | 2:8e723d99838e | 57 | // _ps->printf("*** Reset Screen ***\n\r\n"); |
MaxScorda | 2:8e723d99838e | 58 | writeScreen("*** Reset Screen ***\n",1,1); |
MaxScorda | 2:8e723d99838e | 59 | commitScreen(); |
MaxScorda | 2:8e723d99838e | 60 | } |
MaxScorda | 2:8e723d99838e | 61 | |
MaxScorda | 2:8e723d99838e | 62 | void Screen::commitScreen() |
MaxScorda | 2:8e723d99838e | 63 | { |
MaxScorda | 1:58f3784ad68e | 64 | _ps->printf("\f"); |
MaxScorda | 2:8e723d99838e | 65 | for (int j = 0; j < screenRow-2; j++) { |
MaxScorda | 2:8e723d99838e | 66 | for (int i = 0; i < screenColumn; i++) { |
MaxScorda | 2:8e723d99838e | 67 | _ps->printf("%c",svec[i][j]); |
MaxScorda | 2:8e723d99838e | 68 | } |
MaxScorda | 2:8e723d99838e | 69 | _ps->printf("\n\r"); |
MaxScorda | 2:8e723d99838e | 70 | } |
MaxScorda | 2:8e723d99838e | 71 | } |
MaxScorda | 2:8e723d99838e | 72 | |
MaxScorda | 4:eae942db86db | 73 | void Screen::writeScreen(char sstr[], char xx, char yy, int padb) |
MaxScorda | 2:8e723d99838e | 74 | { |
MaxScorda | 2:8e723d99838e | 75 | char i=0; |
MaxScorda | 3:6c6446382bb2 | 76 | while ((sstr[i]!='\n') && (i<(screenColumn-xx+1))) { |
MaxScorda | 2:8e723d99838e | 77 | // _ps->printf((char*) sstr[i]); |
MaxScorda | 2:8e723d99838e | 78 | svec[xx+i][yy]=sstr[i]; |
MaxScorda | 2:8e723d99838e | 79 | i++; |
MaxScorda | 2:8e723d99838e | 80 | } |
MaxScorda | 4:eae942db86db | 81 | //prosegui col pad |
MaxScorda | 4:eae942db86db | 82 | while ((padb>0) && (i<(screenColumn-xx-1))) { |
MaxScorda | 4:eae942db86db | 83 | svec[xx+i][yy]=' '; |
MaxScorda | 4:eae942db86db | 84 | i++; |
MaxScorda | 4:eae942db86db | 85 | padb--; |
MaxScorda | 4:eae942db86db | 86 | } |
MaxScorda | 2:8e723d99838e | 87 | |
MaxScorda | 1:58f3784ad68e | 88 | } |
MaxScorda | 2:8e723d99838e | 89 | |
MaxScorda | 2:8e723d99838e | 90 | void Screen::emptyFrame() |
MaxScorda | 2:8e723d99838e | 91 | { |
MaxScorda | 2:8e723d99838e | 92 | char car; |
MaxScorda | 2:8e723d99838e | 93 | for (int j = 0; j < screenRow-2; j++) { |
MaxScorda | 2:8e723d99838e | 94 | if ((j==0) || (j==screenRow-3)) car='-'; |
MaxScorda | 2:8e723d99838e | 95 | else car=' '; |
MaxScorda | 2:8e723d99838e | 96 | for (int i = 1; i < screenColumn-1; i++) { |
MaxScorda | 2:8e723d99838e | 97 | svec[i][j]=car; |
MaxScorda | 2:8e723d99838e | 98 | } |
MaxScorda | 2:8e723d99838e | 99 | svec[0][j]='|'; |
MaxScorda | 2:8e723d99838e | 100 | svec[screenColumn-1][j]='|'; |
MaxScorda | 2:8e723d99838e | 101 | } |
MaxScorda | 2:8e723d99838e | 102 | } |
MaxScorda | 2:8e723d99838e | 103 | |
MaxScorda | 2:8e723d99838e | 104 | void Screen::clearScreen(char upperx, char uppery, char loverx, char lowery) |
MaxScorda | 2:8e723d99838e | 105 | { |
MaxScorda | 2:8e723d99838e | 106 | //controllare margini |
MaxScorda | 2:8e723d99838e | 107 | for (int j = uppery; j <= lowery; j++) { |
MaxScorda | 2:8e723d99838e | 108 | for (int i = upperx; i <= loverx; i++) { |
MaxScorda | 2:8e723d99838e | 109 | svec[i][j]=' ' ; |
MaxScorda | 2:8e723d99838e | 110 | } |
MaxScorda | 2:8e723d99838e | 111 | } |
MaxScorda | 3:6c6446382bb2 | 112 | } |
MaxScorda | 3:6c6446382bb2 | 113 | |
MaxScorda | 3:6c6446382bb2 | 114 | // general |
MaxScorda | 3:6c6446382bb2 | 115 | |
MaxScorda | 4:eae942db86db | 116 | char* genFunctions::subchar(char* arr, int begin, int len) |
MaxScorda | 3:6c6446382bb2 | 117 | { |
MaxScorda | 4:eae942db86db | 118 | //non funziona |
MaxScorda | 3:6c6446382bb2 | 119 | char* res = new char[len]; |
MaxScorda | 3:6c6446382bb2 | 120 | for (int i = 0; i < len; i++) |
MaxScorda | 3:6c6446382bb2 | 121 | res[i] = *(arr + begin + i); |
MaxScorda | 3:6c6446382bb2 | 122 | res[len] = 0; |
MaxScorda | 3:6c6446382bb2 | 123 | return res; |
MaxScorda | 3:6c6446382bb2 | 124 | } |
MaxScorda | 3:6c6446382bb2 | 125 | |
MaxScorda | 4:eae942db86db | 126 | string genFunctions::padstr(string sttde, int maxlen, char fillchar) |
MaxScorda | 4:eae942db86db | 127 | { |
MaxScorda | 4:eae942db86db | 128 | bool flagEOS=false; |
MaxScorda | 4:eae942db86db | 129 | string ret=sttde; |
MaxScorda | 4:eae942db86db | 130 | if (ret.size()>0) { |
MaxScorda | 4:eae942db86db | 131 | //se ha EOS lo tolgo |
MaxScorda | 4:eae942db86db | 132 | if (ret.substr(ret.size()-1,1) == EOS) { |
MaxScorda | 4:eae942db86db | 133 | ret=ret.substr(0,ret.size()-1); |
MaxScorda | 4:eae942db86db | 134 | flagEOS=true; |
MaxScorda | 4:eae942db86db | 135 | } |
MaxScorda | 4:eae942db86db | 136 | //pad |
MaxScorda | 4:eae942db86db | 137 | if (maxlen> ret.size()) ret.insert(ret.size(), maxlen - ret.size(), fillchar); |
MaxScorda | 4:eae942db86db | 138 | //se aveva EOS, lo rimetto |
MaxScorda | 4:eae942db86db | 139 | if (flagEOS==true) ret=addEOS(ret); |
MaxScorda | 4:eae942db86db | 140 | } |
MaxScorda | 4:eae942db86db | 141 | return ret; |
MaxScorda | 4:eae942db86db | 142 | } |
MaxScorda | 4:eae942db86db | 143 | |
MaxScorda | 3:6c6446382bb2 | 144 | string genFunctions::addEOS(string sttde) |
MaxScorda | 3:6c6446382bb2 | 145 | { |
MaxScorda | 3:6c6446382bb2 | 146 | string ret=sttde; |
MaxScorda | 3:6c6446382bb2 | 147 | if (sttde.substr(sttde.size()-1,1) != "\n") ret=sttde+"\n"; |
MaxScorda | 3:6c6446382bb2 | 148 | return ret; |
MaxScorda | 3:6c6446382bb2 | 149 | } |
MaxScorda | 3:6c6446382bb2 | 150 | |
MaxScorda | 3:6c6446382bb2 | 151 | string genFunctions::subEOS(string sttde) |
MaxScorda | 3:6c6446382bb2 | 152 | { |
MaxScorda | 3:6c6446382bb2 | 153 | string ret=sttde; |
MaxScorda | 3:6c6446382bb2 | 154 | if (sttde.substr(sttde.size()-1,1) == "\n") ret=sttde.substr(0,sttde.size()-2); |
MaxScorda | 3:6c6446382bb2 | 155 | return ret; |
MaxScorda | 3:6c6446382bb2 | 156 | } |
MaxScorda | 3:6c6446382bb2 | 157 | |
MaxScorda | 3:6c6446382bb2 | 158 | char* genFunctions::string2char(string sttde) |
MaxScorda | 3:6c6446382bb2 | 159 | { |
MaxScorda | 3:6c6446382bb2 | 160 | //ora aggiunge comunque l'EOS. Decidere se parametrizzare |
MaxScorda | 3:6c6446382bb2 | 161 | sttde=addEOS(sttde); |
MaxScorda | 3:6c6446382bb2 | 162 | char *cstr = new char[sttde.length() + 1]; |
MaxScorda | 3:6c6446382bb2 | 163 | strcpy(cstr, sttde.c_str()); |
MaxScorda | 4:eae942db86db | 164 | // delete [] cstr; |
MaxScorda | 3:6c6446382bb2 | 165 | return cstr; |
MaxScorda | 4:eae942db86db | 166 | } |
MaxScorda | 4:eae942db86db | 167 | |
MaxScorda | 4:eae942db86db | 168 |