Jose Gutierrez Cabello
/
projecte_v2
Comunicació entre mòbil i ST-Nucleo mitjançant un HC-05
main.cpp@0:629858955408, 2015-12-09 (annotated)
- Committer:
- jcabello7
- Date:
- Wed Dec 09 15:28:56 2015 +0000
- Revision:
- 0:629858955408
Versi? inicial (funciona)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jcabello7 | 0:629858955408 | 1 | #include "mbed.h" |
jcabello7 | 0:629858955408 | 2 | |
jcabello7 | 0:629858955408 | 3 | class Hc05 : public Serial |
jcabello7 | 0:629858955408 | 4 | { |
jcabello7 | 0:629858955408 | 5 | |
jcabello7 | 0:629858955408 | 6 | public: |
jcabello7 | 0:629858955408 | 7 | Timer timer; |
jcabello7 | 0:629858955408 | 8 | Hc05(PinName tx, PinName rx) : Serial(tx, rx) { |
jcabello7 | 0:629858955408 | 9 | baud(115200); |
jcabello7 | 0:629858955408 | 10 | timer.start(); |
jcabello7 | 0:629858955408 | 11 | //printf("Constructora"); |
jcabello7 | 0:629858955408 | 12 | } |
jcabello7 | 0:629858955408 | 13 | ~Hc05() { |
jcabello7 | 0:629858955408 | 14 | timer.stop(); |
jcabello7 | 0:629858955408 | 15 | //printf("Destructora"); |
jcabello7 | 0:629858955408 | 16 | } |
jcabello7 | 0:629858955408 | 17 | bool enviaString(char* str) { |
jcabello7 | 0:629858955408 | 18 | if (str[0] != '\0') |
jcabello7 | 0:629858955408 | 19 | printf("%s", str); |
jcabello7 | 0:629858955408 | 20 | return true; |
jcabello7 | 0:629858955408 | 21 | } |
jcabello7 | 0:629858955408 | 22 | |
jcabello7 | 0:629858955408 | 23 | void enviaStringAT(char* str) { |
jcabello7 | 0:629858955408 | 24 | //baud(38400); |
jcabello7 | 0:629858955408 | 25 | if (str[0] != '\0') |
jcabello7 | 0:629858955408 | 26 | printf("%s\r\n", str); |
jcabello7 | 0:629858955408 | 27 | } |
jcabello7 | 0:629858955408 | 28 | bool llegirStringAT(char* str) { |
jcabello7 | 0:629858955408 | 29 | if(readable()) { |
jcabello7 | 0:629858955408 | 30 | int i=0; |
jcabello7 | 0:629858955408 | 31 | str[i] = getc(); |
jcabello7 | 0:629858955408 | 32 | //Quan detecta un 10 o un 13 surt del bucle (en el mode AT, envia 13+10) |
jcabello7 | 0:629858955408 | 33 | while(str[i] != 10 && (i < 128)) { |
jcabello7 | 0:629858955408 | 34 | i++; |
jcabello7 | 0:629858955408 | 35 | str[i] = getc(); |
jcabello7 | 0:629858955408 | 36 | } |
jcabello7 | 0:629858955408 | 37 | str[i]='\0'; |
jcabello7 | 0:629858955408 | 38 | return true; |
jcabello7 | 0:629858955408 | 39 | } else { |
jcabello7 | 0:629858955408 | 40 | str[0] = '\0'; |
jcabello7 | 0:629858955408 | 41 | return false; |
jcabello7 | 0:629858955408 | 42 | } |
jcabello7 | 0:629858955408 | 43 | } |
jcabello7 | 0:629858955408 | 44 | |
jcabello7 | 0:629858955408 | 45 | bool llegirString(char* str) { |
jcabello7 | 0:629858955408 | 46 | if(readable()) { |
jcabello7 | 0:629858955408 | 47 | timer.reset(); |
jcabello7 | 0:629858955408 | 48 | int i=0; |
jcabello7 | 0:629858955408 | 49 | str[i] = getc(); |
jcabello7 | 0:629858955408 | 50 | if (str[i] == '@') |
jcabello7 | 0:629858955408 | 51 | return false; |
jcabello7 | 0:629858955408 | 52 | //Quan detecta un 10 o un 13 surt del bucle (en el mode AT, envia 13+10) |
jcabello7 | 0:629858955408 | 53 | while(str[i] != 13 && (i < 128)) { |
jcabello7 | 0:629858955408 | 54 | i++; |
jcabello7 | 0:629858955408 | 55 | str[i] = getc(); |
jcabello7 | 0:629858955408 | 56 | } |
jcabello7 | 0:629858955408 | 57 | str[i]='\0'; |
jcabello7 | 0:629858955408 | 58 | return true; |
jcabello7 | 0:629858955408 | 59 | } else { |
jcabello7 | 0:629858955408 | 60 | str[0] = '\0'; |
jcabello7 | 0:629858955408 | 61 | return false; |
jcabello7 | 0:629858955408 | 62 | } |
jcabello7 | 0:629858955408 | 63 | } |
jcabello7 | 0:629858955408 | 64 | |
jcabello7 | 0:629858955408 | 65 | void modeAT(bool _bool) { |
jcabello7 | 0:629858955408 | 66 | if (_bool) { |
jcabello7 | 0:629858955408 | 67 | baud(38400); |
jcabello7 | 0:629858955408 | 68 | } else { |
jcabello7 | 0:629858955408 | 69 | baud(115200); |
jcabello7 | 0:629858955408 | 70 | } |
jcabello7 | 0:629858955408 | 71 | } |
jcabello7 | 0:629858955408 | 72 | |
jcabello7 | 0:629858955408 | 73 | bool connexioOK() { |
jcabello7 | 0:629858955408 | 74 | if(timer.read_ms() > 500) |
jcabello7 | 0:629858955408 | 75 | return false; |
jcabello7 | 0:629858955408 | 76 | else |
jcabello7 | 0:629858955408 | 77 | return true; |
jcabello7 | 0:629858955408 | 78 | } |
jcabello7 | 0:629858955408 | 79 | |
jcabello7 | 0:629858955408 | 80 | void checkConn() { |
jcabello7 | 0:629858955408 | 81 | if(readable()) |
jcabello7 | 0:629858955408 | 82 | timer.reset(); |
jcabello7 | 0:629858955408 | 83 | } |
jcabello7 | 0:629858955408 | 84 | }; |
jcabello7 | 0:629858955408 | 85 | |
jcabello7 | 0:629858955408 | 86 | class Pc : public Serial |
jcabello7 | 0:629858955408 | 87 | { |
jcabello7 | 0:629858955408 | 88 | public: |
jcabello7 | 0:629858955408 | 89 | Pc(PinName tx, PinName rx) : Serial(tx, rx) { |
jcabello7 | 0:629858955408 | 90 | baud(115200); |
jcabello7 | 0:629858955408 | 91 | printf("Constructora\n"); |
jcabello7 | 0:629858955408 | 92 | } |
jcabello7 | 0:629858955408 | 93 | ~Pc() { |
jcabello7 | 0:629858955408 | 94 | printf("Destructora\n"); |
jcabello7 | 0:629858955408 | 95 | } |
jcabello7 | 0:629858955408 | 96 | bool enviaString(char* str) { |
jcabello7 | 0:629858955408 | 97 | if (str[0] != '\0') |
jcabello7 | 0:629858955408 | 98 | printf("%s\n", str); |
jcabello7 | 0:629858955408 | 99 | return true; |
jcabello7 | 0:629858955408 | 100 | } |
jcabello7 | 0:629858955408 | 101 | |
jcabello7 | 0:629858955408 | 102 | bool llegirString(char* str) { |
jcabello7 | 0:629858955408 | 103 | if(readable()) { |
jcabello7 | 0:629858955408 | 104 | int i=0; |
jcabello7 | 0:629858955408 | 105 | str[i] = getc(); |
jcabello7 | 0:629858955408 | 106 | while(str[i] != 13 && (i < 128)) { |
jcabello7 | 0:629858955408 | 107 | i++; |
jcabello7 | 0:629858955408 | 108 | str[i] = getc(); |
jcabello7 | 0:629858955408 | 109 | } |
jcabello7 | 0:629858955408 | 110 | str[i]='\0'; |
jcabello7 | 0:629858955408 | 111 | return true; |
jcabello7 | 0:629858955408 | 112 | } else { |
jcabello7 | 0:629858955408 | 113 | str[0] = '\0'; |
jcabello7 | 0:629858955408 | 114 | return false; |
jcabello7 | 0:629858955408 | 115 | } |
jcabello7 | 0:629858955408 | 116 | } |
jcabello7 | 0:629858955408 | 117 | }; |
jcabello7 | 0:629858955408 | 118 | |
jcabello7 | 0:629858955408 | 119 | Pc pc(USBTX, USBRX); |
jcabello7 | 0:629858955408 | 120 | Hc05 bt(D8, D2); |
jcabello7 | 0:629858955408 | 121 | |
jcabello7 | 0:629858955408 | 122 | int main() |
jcabello7 | 0:629858955408 | 123 | { |
jcabello7 | 0:629858955408 | 124 | |
jcabello7 | 0:629858955408 | 125 | |
jcabello7 | 0:629858955408 | 126 | char str[128]; |
jcabello7 | 0:629858955408 | 127 | while(1) { |
jcabello7 | 0:629858955408 | 128 | if(pc.llegirString(str)) |
jcabello7 | 0:629858955408 | 129 | bt.enviaString(str); |
jcabello7 | 0:629858955408 | 130 | if(bt.llegirString(str)) |
jcabello7 | 0:629858955408 | 131 | pc.enviaString(str); |
jcabello7 | 0:629858955408 | 132 | |
jcabello7 | 0:629858955408 | 133 | if(!(bt.connexioOK())) |
jcabello7 | 0:629858955408 | 134 | pc.printf("ERROR DE CONNEXIO\n"); |
jcabello7 | 0:629858955408 | 135 | } |
jcabello7 | 0:629858955408 | 136 | |
jcabello7 | 0:629858955408 | 137 | } |