Hola. Tengo un problema.
Estoy haciendo un proyecto en el cual uso el USB del PIC para darle ordenes y desde el PIC paso letras al PC por 232, mi sorpresa es que con un programita hecho en vb me salen caracteres muy raros,
Los envios desde el micro son en codigo ASCII y en VB ni me los combierte ni nada.
Pongo el codigo de recepcion de VB y un pantallazo a ver si le veis algo.
Saludos
Private Sub Form_Load()
velocidad = Form1.velocidad
puerto = Form1.puerto
MSComm1.Settings = Str$(velocidad) + ",n,8,1" 'cargo la configuracion
MSComm1.CommPort = puerto 'cargo el puerto
MSComm1.PortOpen = True 'abro el puerto
Timer1.Enabled = False 'INICIALIZO CON EL TIMER DESHABILITADO
End Sub
Private Sub Command1_Click()
dato = Text1.Text
MSComm1.Output = dato 'envio un dato
End Sub
Private Sub Command2_Click()
datorecibido = MSComm1.Input 'Recibo un dato
Label1.Caption = datorecibido
Text2.Text = Text2.Text + datorecibido
If Option1 = True Then 'Aqui compruebo si hemos elegido Recepcion continua
Timer1.Enabled = True 'Habilito el timer para recibie cada cierto tiempo
End If
End Sub
Private Sub Command3_Click()
Timer1.Enabled = False 'deshabilito el timer
End Sub
Private Sub Command4_Click()
MSComm1.PortOpen = False 'cierro el puerto
Unload Me 'Descargo el formulario 2
Form1.Show 'Muestro el formulario 1
End Sub
Private Sub MSComm1_OnComm()
datorecibido = MSComm1.Input 'Recibo un dato
Label1.Caption = datorecibido
Text2.Text = Text2.Text + datorecibido
End Sub
Private Sub Timer1_Timer()
datorecibido = MSComm1.Input 'Recibo un dato
j = CInt(datorecibido)
i = Chr(j)
Label1.Caption = i
Text2.Text = Text2.Text + i
End Sub
Private Sub CmdSalir_Click()
MSComm1.PortOpen = False 'cierro el puerto
End
End Sub
El codigo del micro es el siguiente: solo para la transmision
#include <18f4550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=20000000)
#use standard_io(b)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#define LEDV PIN_B4
#define LEDR PIN_B5
#define LED_ON output_high
#define LED_OFF output_low
void main() {
do{
LED_OFF(LEDR);
LED_ON(LEDV); //encendemos led verde
delay_ms(1000);
putc(72);
LED_OFF(LEDV); //encendemos led rojo
LED_ON(LEDR);
delay_ms(500);
putc(79);
LED_OFF(LEDR);
LED_ON(LEDV); //encendemos led verde
delay_ms(500);
putc(76);
LED_OFF(LEDV); //encendemos led rojo
LED_ON(LEDR);
delay_ms(500);
putc(65);
LED_OFF(LEDR);
LED_ON(LEDV);
delay_ms(500);
putc(32);
LED_OFF(LEDV);
LED_ON(LEDR);
delay_ms(500)
putc(72);
LED_OFF(LEDR);
LED_ON(LEDV);
delay_ms(500);
putc(79);
LED_OFF(LEDV);
LED_ON(LEDR);
delay_ms(500);
putc(76);
LED_OFF(LEDR);
LED_ON(LEDV);
delay_ms(500);
putc(65);
LED_OFF(LEDV);
LED_ON(LEDR);
delay_ms(500);
putc(79);
LED_OFF(LEDR);
LED_ON(LEDV);
delay_ms(500);
putc(83);
LED_OFF(LEDV);
LED_ON(LEDR);
delay_ms(500);
putc(32);
LED_OFF(LEDR);
LED_ON(LEDV);
delay_ms(500);
putc(85);
LED_OFF(LEDV);
LED_ON(LEDR);
delay_ms(500);
putc(83);
LED_OFF(LEDR);
LED_ON(LEDV);
delay_ms(500);
putc(66);
LED_OFF(LEDV);
LED_ON(LEDR);
delay_ms(500);
putc(32);
LED_OFF(LEDR);
LED_ON(LEDV);
delay_ms(500);
putc(80);
LED_OFF(LEDV);
LED_ON(LEDR);
delay_ms(500);
putc(82);
LED_OFF(LEDR);
LED_ON(LEDV);
delay_ms(500);
putc(69);
LED_OFF(LEDV);
LED_ON(LEDR);
delay_ms(500);
putc(80);
LED_OFF(LEDR);
LED_ON(LEDV);
delay_ms(500);
putc(65);
LED_OFF(LEDV);
LED_ON(LEDR);
delay_ms(500);
putc(82);
LED_OFF(LEDR);
LED_ON(LEDV);
delay_ms(500);
putc(65);
LED_OFF(LEDV);
LED_ON(LEDR);
delay_ms(500);
putc(68);
LED_OFF(LEDR);
LED_ON(LEDV);
delay_ms(500);
putc(79);
LED_OFF(LEDV);
LED_ON(LEDR);
delay_ms(500);
putc(32);
LED_OFF(LEDR);
LED_ON(LEDV);
delay_ms(500);
}while(true);
}
Espero que veais el fallo
Saludos