hola tengo el sigueinte problema :
- con una aplicacion en VB6 mando por rs232 un 2 que tendria que encender un led y retornar por rs232 "Comando 2", cuando leeo lo que el pc recivio lo que encuentra es la respuesta de la instruccion anterior.
el siguiente es el codigo:
#include <16F84A.h>
#use delay(clock=4000000)
#fuses XT
#nolist
#byte port_A=05
#byte port_b=06
#use fixed_io(A_OUTPUTS=PIN_A0,PIN_A1,PIN_A2,PIN_A3,PIN_A4)
#use fixed_io(B_OUTPUTS=PIN_B0,PIN_B2,PIN_B3,PIN_B4,PIN_B5,PIN_B6)
#use rs232(baud=9600,xmit=PIN_B6,rcv=PIN_B7,invert)
unsigned int opcion;
envia_ok()
{
printf("
Comando %c
",opcion);
}
apaga_led()
{
output_low(pin_a0);
}
prende_led()
{
output_high(pin_a0);
}
apaga_led1()
{
output_low(pin_a1);
}
prende_led1()
{
output_high(pin_a1);
}
void main() {
setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
port_a=0;
port_b=0;
while(1)
{
opcion=getc();
envia_ok();
switch(opcion)
{
case "1": apaga_led();
break;
case "2": prende_led();
break;
case "3": apaga_led1();
break;
case "4": prende_led1();
break;
}
}
}
- el programa en VB6 es el siguiente:
Private Sub Command1_Click()
MSComm1.Output = "2"
leer = True
End Sub
Private Sub Command2_Click()
MSComm1.Output = "1"
leer = True
End Sub
Private Sub Command3_Click()
MSComm1.Output = "3"
leer = True
End Sub
Private Sub Command4_Click()
MSComm1.Output = "4"
leer = True
End Sub
Private Sub Form_Load()
MSComm1.PortOpen = True
MSComm1.RThreshold = 1
MSComm1.InputLen = 50
End Sub
Private Sub leer()
Label1.Caption = MSComm1.Input
End Sub
- el problema que tengo que la respuesta del pic la pc la lee atrasada en una respuesta.