Saludos estimado amigo:
En el botón deberías aplicar lo siguiente:
If .portopen = .F. then
.portopen = .T.
Endif
Te recomiendo que no uses un loop para esperar la respuesta, es mas estable usar un timer.
Bendiciones.
Carlos Alfaro
Saludos estimado amigo:
En el botón deberías aplicar lo siguiente:
If .portopen = .F. then
.portopen = .T.
Endif
Te recomiendo que no uses un loop para esperar la respuesta, es mas estable usar un timer.
En el botón pesar, despues de:
.output ="W"+CHR(13)
Thisform.timer.interval = 500 && esta valor lo podes ajustar, si el string no llega completo, el valor debe ser mayor.
En el la propiedad timer del objeto timer espera el string y lo procesa:
If oCom.inbuffercount > 0 then
This.interval = 0
el_peso = oCom.input
el_peso = RIGHT( el_peso, LEN( el_peso) - 1)
el_peso = VAL( LEFT( el_peso, 7))
If ¡Empty(el_peso)
Thisform.text1.Value = el_peso
thisform.text1.Refresh()
ENDIF
Endif
Bendiciones.
Carlos Alfaro
From: publice...@googlegroups.com [mailto:publice...@googlegroups.com] On Behalf Of Jaime Barrientos
Sent: jueves, 12 de marzo de 2015 02:27 p.m.
To: publice...@googlegroups.com
Subject: [vfp] Abrir puerto al iniciar form o aplicación
Muy buenas tardes, en una oportunidad acudí a este foro y fue de gran ayuda ya que me dieron solución a un problema que tenía para conectar un form a una balanza. En esta ocasión acudo a este grupo nuevamente por el siguiente inconveniente:
Estimado amigo Daniel:
Es importante mencionar que para que OnComm se active debe estar las siguientes propiedades seteadas asi:
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. 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)
Bendiciones.
Carlos Alfaro

