La Web del Programador: Comunidad de Programadores
 
    Pregunta:  48524 - MSCOMM - PROBLEMAS DE COMUNICACIóN POR EL PUERTO SERIE
Autor:  Emilio Dubois
El cliente quiere que el mismo sistema funcione para tres tipos de balanzas electronicas que se comunican mediante el puerto serie. Dos son iguales, trabajan a 1200 baudios, 8 bits de datos, sin paridad, y uno de parada. El tema es que la tercera balanza, trabaja a 9600. Probe, y pareciera no haber problemas en cambiar la velocidad en tiempo de ejecucion y comunicacion activa, aunque me gustaria que alguien mas me lo confirme.
Tengo otro problema tambien, en los datos de la balanza, dice que trabaja a 9600 baudios, 8 bits, 1 de parada, sin paridad, es decir, lo unico q cambiaria es la velocidad. Pero resulta ser que cuando seteo la velocidad asi, mi aplicacion en VB, levanta del buffer de a 8 caracteres, aun con la propiedad ".RThreshold = 1". Lo que hice para solucionar esto, es usar ".InputLen = 1". No entiendo porque la aplciacion se comporta de esta forma, ya que segun entendi, seteando ".RThreshold = 1" le digo que por cada caracter que llegue, dispare el "oncomm()" y ahi leo el buffer, y tambien tengo entendido que cuando lo leo, este se vacia...

  Respuesta:  Guillermo Beyer
Estimado.
Referente a la primera parte de tu enunciado no hay ningún problema en setear distintas configuraciones para el puerto serie en tiempo de ejecución pero siempre acordarse de cerrar el puerto antes y a veces es necesario meter una rutina de retardo con Do Events incorporado en la misma otras veces no es necesario esto tiene que ver con la velocidad de la pc, pero quizás antes que nada fijate en el manual de la balanza si no hay la posibilidad de configurar la misma configuración que las restantes y asi evitar tiempos de reconfiguración en tiempos de ejecución, derespecto al segundo estamos tambien con el tema de la velocidad propia de la pc con respecto al caracter leido a pesar de tu configuración Windows es tan lerdo que cuando el On Comm te avisda de un caracter recibido el bufer ya se lleno con todos los restantes enviados por la balanza, la única solución es programar una rutina dentro del evento On Comm que al dispararse con el primer caracter recibido vaya cargando de a uno el caracter del bufer acumulandolos en una misma variable algo asi como.
While MsCounter<> 0
Recepción = Recepción + InputComm
Whend
Esto es a groso modo una forma de muchas otras.
Espero te sirva de ayuda.Cualquier duda escribeme ([email protected])