Ver Mensaje Individual
  #9  
Antiguo 06-01-2009
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Reputación: 20
FGarcia Va por buen camino
Lo siento si soy molesto pero ...no me funciona, modifique con la sugerencia que me diste Roman pero no, igual se queda en ciclo infinito. En si lo que estoy capturando es una cadena proveniente del COM1,el puerto ya esta abierto y comprobado que con esta rutina captura adecuadamente, sin embargo lo que quiero es poder romper el ciclo repeat - until con ESC en caso de que por alguna razon la cadena no pudiese ser capturada (puerto dañado, cadeana enviada diferente, etc). Actualmente solo desconecto el dispositivo que envia datos para poder simular una falla y usar ESC para salir del bucle.

Código Delphi [-]
// Los datos se repiten y terminan con #13(CR)
  repeat
    Application.ProcessMessages ;
    
      repeat
      Application.ProcessMessages ;
      until (FileRead(HandlePuerto,Num,1)=1) or (GetKeyState(VK_ESCAPE) and 128 = 128);
  until (Num = Terminador) or (GetKeyState(VK_ESCAPE) and 128 = 128); // Final de cadena anterior
  
  Cad:='';
  
  for n := 1 to longCadena do
    begin
      repeat
        //Rompe ciclo con ESC
        Application.ProcessMessages ;
        until (FileRead(HandlePuerto,Num,1)= 1) or (GetKeyState(VK_ESCAPE) and 128 = 128);//lee un byte
      Cad := Cad + chr(Num);
    end;
 
  cPeso := MidStr(Cad,3,8);
  cUnits := MidStr(Cad,11,1);
  cMode := MidStr(Cad,12,1);
  cStatus := MidStr(Cad,13,1);
__________________
ESTO ES UN FORO ... NO UN MÓVIL
¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender?
Responder Con Cita