Funzioni di IO varie con seriale asincrona
Dependents: Nucleo_AsyncSerialIO
Fork of IOFuncLib by
IOFuncLib.cpp@3:6c6446382bb2, 2015-05-31 (annotated)
- 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?
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 | 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 | } |