Autor Tema: No recibo todos los caracteres en Visual Basic  (Leído 3206 veces)

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

Desconectado eccdreded

  • PIC10
  • *
  • Mensajes: 29
No recibo todos los caracteres en Visual Basic
« en: 24 de Noviembre de 2006, 09:19:32 »
Hola amigos, que tal les va??

Estoy intentando hacer un programa muy sencillo que consiste en recibir un string de caracteres procedente desde mi pic, pero no hay manera de visualizarlos todos en un text de visual basic. Por ejemplo:

en el pic:

printf("carahuevo");

en el text de visual basic aparece:

aauvo

Les comento que la comunicación esta a 9600,N,18,1      Rthreshold=1         Inputlen=1   InbufferSize=1024
Por cierto que estos ultimos comandos no los entiendo muy bien, asi que si me los podeis explicar brevemente estaría genial.

Bueno un saludo pa todos y a darle duro a vuestros proyectos!!! :D

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: No recibo todos los caracteres en Visual Basic
« Respuesta #1 en: 24 de Noviembre de 2006, 10:24:38 »
El inputlen determina la cantidad de datos a ser leidos cuando suceda el evento de arribo de datos. Si pones 1 se leera 1 byte por evento.
El Rthteshold es el que produce el evento cuando la cantidad de bytes recibidos es igual al valor asignado al mismo.
si Rthreshold= 1 significa que el evento on_comm se producira cada vez que arribe un byte.
El inbuffersize es el tamaño maximo reservado para almacenar temporalmente los bytes recibidos. si es 1024 entonces puede guardar hasta 1024 bytes temporalmente.

En definitiva:

Si RthresHold=1
inputlen=1
Inbuffersize=1024
significa que cada vez que recibas un byte habra  1 byte en el buffer de entrada. Como 1 coincide con la cantidad del Rthreshold se produce el evento on_comm. Cuando leas, leeras 1 byte por vez, debido a que inputlen=1.

No deberia estar mal lo que haces, pero todo depende de tu programa.

En el evento MSComm1_OnComm debes interceptar el MSComm1.CommEvent = comEvReceive. El resto es para otras cosas.
Si miras en este subforo podras ver ejemplos de todos los tipos de eventos que genera el On_Comm y como seleccionar entre cada uno...

Para visualizar lo que llega no deberia ser necesario mas que:

Dim Tmp as string

Private Sub MSComm1_OnComm()
     
   Select Case MSComm1.CommEvent
   Case comEvReceive
  tmp=MsComm1.Input
  Text1.Text= text1.text & Tmp
   End Select
end sub

Asegurate que coincida el baudaje, cantidad de bits, paridad,etc en ambas partes.

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado eccdreded

  • PIC10
  • *
  • Mensajes: 29
Re: No recibo todos los caracteres en Visual Basic
« Respuesta #2 en: 24 de Noviembre de 2006, 11:36:02 »
Muchas gracias amigo. Magnifica explicación. Yo debía tener algún error en el codigo que he utilizado tambien. He puesto el que me has dejado y la verdad es que todo bien. Gracias una vez mas.

Salud!