Configuración de MSComm en vb6 para la recepción de datos asíncrona

Me podrías ayudar a saber que estoy haciendo mal en mi programa, lo que quiero es recibir datos de un equipo el cual los envía de manera asíncrona a través del puerto COM que tiene pero necesita un acuse de recibo cada a lo mucho cada 10 segundos. Lo e probado leyendo el puerto cada determinado tiempo y lo hace correctamente. Pero necesito que se lea el puerto cada que el equipo mande los datos no cada determinado tiempo para mostrarlo en un textbox o en un label y que se almacenen en un bloc de notas.

Solo me hace falta leer el puerto cada que el equipo mande esos datos y almacenarlos.

1 respuesta

Respuesta
1

Revisa los parametros RThreshold, SThreshold

Estas dos propiedades especifican el número de caracteres que deben estar presentes en los Buffers de Recepción y Transmisión respectivamente, para que se produzca el evento OnComm relativo a recepción y transmisión de caracteres. (Eventos EvReceive y EvSend) Si el valor de una de estas propiedades está a 0, no se produce el evento OnComm correspondiente.
El valor que se debe dar a estas dos propiedades depende de la aplicación y del tiempo que queramos que la aplicación está atendiendo al puerto de comunicaciones. Concretamente para la propiedad RThreshold debemos pensar muy bien el valor que se le pone. Si ponemos un valor corto (1 es el mínimo), cada vez que reciba un carácter se producirá el evento OnComm. (Vea la descripción de eventos mas adelante). Al producirse este evento, ejecutará el procedimiento asociado a él, lo que hará perder tiempo a la aplicación, impidiéndole realizar otras funciones. Si se pone un valor muy alto, el puerto no avisará que tiene caracteres recibidos hasta que reciba un número igual al programado en esta propiedad, por lo que no podremos procesar los datos recibidos hasta que el buffer tenga ese número de caracteres en su interior. En número adecuado dependerá del tipo de aplicación que vayamos a realizar. En cualquier caso, este número será inferior al número programado para la longitud del buffer, (InBufferSize)

muchísimas gracias, tu respuesta me ayudo mucho. y si primero use la propiedad de inbuffercount para saber de que tamaño me estaban llegando los datos y ya después de saberlo metí ese dato en en la propiedad RThreshold y ya funciona correctamente.

Pero ahora tengo un detalle con guardar los datos, lo estaba haciendo creando una hoja de calculo en excel, el detalle es que en mi programa hice que guardara la hoja al salirse de la aplicación y quiero poder ver la hoja de excel mientras mi programa esta recibiendo los datos aunque tenga que cerrar el programa para que se actualice, podrías ayudarme con este problema. Ah y ademas de guardarlo en excel también hice que los mostrara en un textbox pero reemplaza el dato anterior ¿se puede desplazar esos datos hacia abajo conforme lleguen?..

Gracias por la ayuda

OK gracias por tu ayuda

Eso es otra pregunta distinta a la pregunta inicial, favor evaluar y cerrar la respuesta a la pregunta original

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas