Comunicació entre mòbil i ST-Nucleo mitjançant un HC-05

Dependencies:   mbed

Committer:
jcabello7
Date:
Wed Dec 09 15:28:56 2015 +0000
Revision:
0:629858955408
Versi? inicial (funciona)

Who changed what in which revision?

UserRevisionLine numberNew 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 }