Maxi te reenvio las respuestas...
Bueno finalmente lo solucione.
Show quoted text 25 lines
Expongo el codigo completo de la solucion...
procedure TfrmPesaje.olePuertoRxData(Sender: TObject);
var
llTramaGenerada:boolean;
lcLecturaReal:string;
begin
llTramaGenerada:=loDrvW180T.llTramaGenerada;
if llTramaGenerada=True then
begin
loDrvW180T.analizarTrama;
if loDrvW180T.llTramaValida then
MostrarPeso;
sleep(1000); <== Si esta linea no esta se presenta el mismo error
que tenia
loDrvW180T.limpiarTrama;
end
else
begin
lcLecturaReal:= olePuerto.ReadData;
loDrvW180T.armarTrama(lcLecturaReal);
end
end;
El sleep, detiene en cierta forma la recepcion y permite que se refresquen
los controles. Tanto a la rutina como a mi se ve que nos faltaba sue�o :D
Muchisimas gracias a todos por los aportes.
Daniel,
Show quoted text 11 lines
El objeto que uso para leer el puerto es LazSerial, y ese objeto no
permite regular la frecuencia con la que se lee el puerto, lo que si, el
sleep lo baje de 1000 a 200 milisegundos, y creo que si lo bajo un poco mas
va a funcionar, pero 200 milisegundos ya es un tiempo razonable y no tuve
que agregarle un timer.
Asi que me gusto mucho como quedo.
Ahora estoy haciendo clases y subclases para separar las funcionalidades
ya que el sistema trabaja con 4 modelos distintos de balanza seriales.
Por otra parte lo bueno de LazSerial es que funciona muy bien en Windows y
en Ubuntu, en ambos es muy rapido, solo habia que dar en la tecla de cual
era el inconveniente.
Saludos y gracias,
Pancho
C�rdoba
Argentina
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20150814/23fdc0cf/attachment.html>
