Que tal! Llevo tiempo con el mismo problema y espero alguien de ustedes pueda ayudarme.
Estoy realizando un proyecto en el cual tengo que realizar la comunicación de un microcontrolador (PIC16F877A) con un celular Android mediante un cliente y un servidor TCP.
Estoy conectando un modulo de comunicación wifi ESP8266 y lo configuro desde el microcontrolador mediante comunicación serial y comandos AT, el problema que tengo es que al momento en que el modulo wifi me responde, no puedo almacenar de forma correcta la respuesta que este me manda porque es como si solo mandara correctamente el comando 3 veces, y despues de esas 3 veces pareciera que el programa saliera del ciclo infinito en el que esta, por lo tanto no puedo almacenar la informacion que el PIC recibe una vez que algun cliente se conecta al servidor que se configura mediante el PIC, lo raro es que el programa que tengo grabado en el PIC funciona correctamente cuando lo pruebo comunicandolo con la PC, recibo los comandos enviados por el PIC en mi Terminal, el programa que uso es el Termite v.3.1., tambien desde este le respondo al PIC y lo que le llegue de respuesta lo muestra en un lcd correctamente.
Les adjunto el codigo que estoy manejando, es muy simple, he tratado de varias maneras y estoy con el mismo problema, espero alguien pueda hacerme alguna observación o algo que no este tomando el cuenta. De ante mano muchas gracias!
#include <16F877A.h>
#fuses NOWDT, XT, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay (clock = 4M)
#use RS232(BAUD = 9600, BITS = 8, PARITY = N, STOP = 1, XMIT = PIN_C6, RCV = PIN_C7, STREAM = COM)
#include <lcd.c>
void Led(){ output_high(pin_d3); delay_ms(150); output_low(pin_d3); }
void main ()
{
char datoE[10];
Led();
lcd_init();
SendAT:
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc("Enviando AT");
delay_ms(1000);
puts("AT");
while(true)
{
if (kbhit())
{
gets(datoE);
lcd_putc("\f");
lcd_gotoxy(1,1);
printf(lcd_putc,"%s",datoE);
break;
}
}
Led();
delay_ms(3000);
goto SendAT;
}
Como observacion, les comento que este programa solamente envia "AT" y el modulo ESP8266 respondera con un OK, asi mismo con la mayoria de los comandos, y sonando redundante, pero para que quede claro por si no me explique lo suficientemente bien, con la PC lo hace correctamente, tanto el envio como la recepcion, mientras que con el modulo ESP envia correctamente el comando AT 3 veces, pero las 3 veces, recibe como respuesta el mismo AT que envie en lugar de recibir OK.