#use delay (clock=4000000) //clock=20Mhz
#USE RS232(BAUD=9600, XMIT=PIN_C6, RCV=PIN_C7, stream=radio)
#USE RS232(BAUD=9600, XMIT=PIN_G1, RCV=PIN_G2, stream=antena)
#include <string.h>
char lectura_radio=0x00,lectura_antena=0x00;
char cadena_radio[30],cadena_antena[30];
char comando_radio[30],comando_antena[30];
int incremento_radio=0;
int incremento_antena=0;
int1 procesar_radio=0;
int1 procesar_antena=0;
void proceso_antena(char b);
void proceso_radio(char a);
void borrar_cadena_radio(void);
void borrar_cadena_antena(void);
void copia_cadena_radio(void);
void copia_cadena_antena(void);
#int_RDA //interrupcion para la resepcion del master
void rda_isr()
{
//lectura_radio=0x00;
if(kbhit()) { //Esto es para que no se cuelgue el pic
lectura_radio=fGETC(radio); //guarda el valor enviado por el puerto serie
proceso_radio(lectura_radio);
}
}
#INT_RDA2
void rda2_isr()
{
lectura_antena=0x00;
//if(kbhit()) { //Esto es para que no se cuelgue el pic
lectura_antena=fGETC(antena); //guarda el valor enviado por el puerto serie
proceso_antena(lectura_antena);
// }
}
void proceso_radio (char a){
if(a==0x0D){
procesar_radio=1;
}
else{
cadena_radio[incremento_radio++]=a;
}
}
void proceso_antena (char b){
if(b==0x0D){
procesar_antena=1;
}
else{
cadena_antena[incremento_antena++]=b;
}
}
void main(){
enable_interrupts(INT_RDA); // Habilita Interrupción RDA
enable_interrupts(INT_RDA2);
enable_interrupts(GLOBAL); //todas las interrupciones activadas
fprintf(radio,"\rcomunicacion inalambrica por medio\n");
fprintf(radio,"\rdel sistema remoto de reseteo de antena\n\n
\n");
fprintf(radio,"%i",incremento_radio);
fprintf(antena,"\rcomunicacion por medio de las antenas\n");
fprintf(antena,"\rpara el reseteo de la antena\n\n
\n");
fprintf(antena,"%i",incremento_antena);
output_low(PIN_D0);
output_low(PIN_D1);
output_low(PIN_D2);
output_low(PIN_D3);
output_low(PIN_D4);
while(TRUE){
if(procesar_antena==1){
fprintf(antena,"\r\n%s %i",cadena_antena,incremento_antena);
copia_cadena_antena();
}
if(procesar_radio==1){
fprintf(radio,"\r\n%s %i",cadena_radio,incremento_radio);
copia_cadena_radio();
}
switch (comando_radio){ <----------------AQUI EL PROBLEMAAAAAAAAA
case "prender":
output_high(PIN_D0);
break;
default:
output_low(PIN_D0);
}
}}
////////////////////////////////////////////////////////////////////////////////
/******************************************************************************/
/* TRASPASO DE DATOS DE LOS BUFFER DE RECEPCION A NUEVAS CADENAS */
/******************************************************************************/
////////////////////////////////////////////////////////////////////////////////
void copia_cadena_radio(void){
strcpy(comando_radio,cadena_radio);
borrar_cadena_radio();
}
void copia_cadena_antena(void){
strcpy(comando_antena,cadena_antena);
borrar_cadena_antena();
}
////////////////////////////////////////////////////////////////////////////////
/************************************FIN***************************************/
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/******************************************************************************/
/* BORRAN BUFFER DE RECEPCION SERIAL DE LA UART 1 Y UART2 */
/******************************************************************************/
////////////////////////////////////////////////////////////////////////////////
void borrar_cadena_radio(void){
int c=0;
procesar_radio=0;
for(c=0;c<=incremento_radio;c++){
cadena_radio[c]=0;
}
incremento_radio=0;
}
void borrar_cadena_antena(void){
int e=0;
procesar_antena=0;
for(e=0;e<=incremento_antena;e++){
cadena_antena[e]=0;
}
incremento_antena=0;
}
////////////////////////////////////////////////////////////////////////////////
/************************************FIN***************************************/
////////////////////////////////////////////////////////////////////////////////1.
if (strcmp(buffer, "enciende") == 0) output_high(PIN_B1);
.........
de todas formas tengo entendido queCitar1.
if (strcmp(buffer, "enciende") == 0) output_high(PIN_B1);
no se puede hacer...... alomejor me equivoco,
.................
Japifer_22: Probá enviar solo un carácter desde la pc para que interactúe con un switch con un caracter entre comillas simples. Por ejemplo 'a' . Total a los efectos de que el pic interprete el mensaje es igual. Luego desde el case 'a' llamás s la fución.
debe funcionar porque lo que esta evaluando en el if es el strcmp, lo que no funciona es comparar directamente un string. Como dice jukinch es mejor hacerlo con un solo caracter dá lo mismo y ahorras mas