Autor Tema: Problemas de recepcion de datos desde pC  (Leído 1264 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Fernando4009

  • PIC10
  • *
  • Mensajes: 1
Problemas de recepcion de datos desde pC
« en: 10 de Junio de 2011, 17:32:25 »
Buenas tardes, tengo el siguiente iconveniente , intento enviar datos desde una aplicacion Visual Basic por el puerto serie y recepcionarlo en otra PC donde estoy simulando un PIC 16F877 mediante PROTEUS.
Desde VB mediante:

" Boton1"
 MsComm1.Output = "B21" & chr(13) 'Encenderia un LED'
" Boton2"
 MsComm1.Output = "B20" & chr(13) 'Apagaria el LED que encendi'

El problema es que me NO llega la cadena de caracteres que estoy enviando desde visual basic al PIC, le adjunto el codigo C que utilizo en el PIC

#INCLUDE <16F877A.H>
#DEVICE ADC=10
#USE DELAY(CLOCK=4000000)
#use standard_io(b)
#FUSES XT,NOWDT
#use rs232 (baud=9600, parity=N, xmit = PIN_C6, rcv=PIN_C7,bits=8)
#INCLUDE <stdio.h>
#include <string.h>
#include <stdlib.h>
#int_rda


float cadena;
char puerto[3];
char var1[4];
char var2[4];
char var3[4];
char sentencia[4];


void concatenar(float cadena,*puerto){
 
 if (cadena >= 0 && cadena < 9){
   printf("%s" "0000000%f\F" ,puerto,cadena);
  }
if (cadena >= 10 && cadena < 99){
   printf("%s" "000000%f\F" ,puerto,cadena);
  }
  
if (cadena >= 100 && cadena < 999){
   printf("%s" "00000%f\F" ,puerto,cadena);
  }
  
 if (cadena >= 1000 && cadena < 9999){
   printf("%s" "0000%f\F" ,puerto,cadena);
  }
 
 if (cadena >= 10000 && cadena < 99999){
   printf("%s" "000%f\F" ,puerto,cadena);
  }
  
if (cadena >= 100000 && cadena < 999999){
   printf("%s" "00%f\F" ,puerto,cadena);
  }
  
if (cadena >= 1000000 && cadena < 9999999){
   printf("%s" "0%f\F" ,puerto,cadena);
  }
 
 
 

}



void serial_isr(void){      

    gets(sentencia);
    //printf(sentencia);    
 }
                      


VOID MAIN(){

float yT0,yT1;
INT16 valor0,valor1; //Variables para lectura de ADC y señal de Control a modulo CCP
char puert[3];

strcpy(var1,"B21");
strcpy(var2,"B20");
strcpy(var3,"B11");

setup_adc_ports(all_analog); //Configurar ADC
setup_adc(adc_clock_internal);


while(1){

   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);
 

   set_adc_channel(0); //Seleccionar Canal 0 para sensor de Temperatura
   valor0=read_adc(); //Leer ADC
   yT0=5.0*valor0/1023.0;
   strcpy(puert,"A0");
   concatenar(yT0,puert);
   delay_ms(1000);

   set_adc_channel(1); //Seleccionar Canal 1 para sensor de Humedad
   valor1=read_adc(); //Leer ADC
   yT1=5.0*valor1/1023.0;
   strcpy(puert,"A1");
   concatenar(yT1,puert);
   delay_ms(1000);


serial_isr();

if(strcmp(sentencia, var1)){

  output_high(PIN_B2);
  
  
  
}

if(strcmp(sentencia, var2)){

  output_low(PIN_B2);
  printf("%s\r","VAR2");
  
  
  
}

if(strcmp(sentencia, var3)){

  output_high(PIN_B2);
  
  
  
}



   }

 }

Desde ya muchas gracias!!!










« Última modificación: 10 de Junio de 2011, 17:36:32 por Fernando4009 »


 

anything