Saludos, tengo un pequeño codigo que recorre una tabla y va enviando comandos a un dispositivo USB a traves del componente TComport.... el codigo que tengo me funsiona bien, ya que cada vez que envio un comando al disposivo USB hago una pausa de 10seg para esperar la respuesta del dispositivo.
el problema esque el tiempo de respuesta es variado es decir podria devolver la respuesta en 3eg o en 7seg y la manera como yo lo hago estoy perdiendo tiempo ya q espero 10seg para asegurar la respuesta q debo almacenar en una tabla
el codigo que uso es el siguiente
Código Delphi
[-]
for I := 0 to FrmPrincipal.Tabla.RecordCount - 1 do
begin
FrmPrincipal.ComPort.WriteStr('ENVIO EL COMANDO A DISPOSITIVO USB');
Sleep(10000); Application.ProcessMessages;
if FrmPrincipal.resp='ERROR' then
begin
FrmPrincipal.Tabla.Edit;
FrmPrincipal.Tabla.FieldByName('ESTADO').AsString:='ERROR';
FrmPrincipal.Tabla.Post;
end else
if FrmPrincipal.resp='OK' then
begin
FrmPrincipal.Tabla.Edit;
FrmPrincipal.Tabla.FieldByName('ESTADO').AsString:='EXITO';
FrmPrincipal.Tabla.Post;
end;
FrmPrincipal.Tabla.Next;
end;
Tambien e tratado de agregarle un while para de esta manera avanzar cuando se obtenga una respuesta pero no camina de esa forma
Código Delphi
[-]
FrmPrincipal.resp:='';
for I := 0 to FrmPrincipal.Tabla.RecordCount - 1 do
begin
FrmPrincipal.ComPort.WriteStr('ENVIO EL COMANDO A DISPOSITIVO USB');
Application.ProcessMessages;
while (FrmPrincipal.resp<>'') do
begin
if FrmPrincipal.resp='ERROR' then
begin
FrmPrincipal.Tabla.Edit;
FrmPrincipal.Tabla.FieldByName('ESTADO').AsString:='ERROR';
FrmPrincipal.Tabla.Post;
end else
if FrmPrincipal.resp='OK' then
begin
FrmPrincipal.Tabla.Edit;
FrmPrincipal.Tabla.FieldByName('ESTADO').AsString:='EXITO';
FrmPrincipal.Tabla.Post;
end; end;
FrmPrincipal.Tabla.Next;
end;
aver si alguien me echa una manito para optimizar este codigo. saludos