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!!!