Ver Mensaje Individual
  #1  
Antiguo 21-08-2010
schdamian schdamian is offline
Registrado
 
Registrado: abr 2010
Posts: 7
Reputación: 0
schdamian Va por buen camino
error al comparar caracteres

Hola a todos, no sabia bien que titulo ponerle a este hilo, el tema es el siguiente, estoy trabajando con impresora fiscal epson lx-300, delphi 2009 y un componente TComPort para escribir y leer el puerto serie. Envio los comandos al puerto serie segun el protocolo Epson, el problema viene al intentar leer la respuesta, todas las respuestas comienzan con el caracter 02 en Hexa (es decir chr($02) ) para lo cual despues de escribir el comando al puerto hago un while de esta forma:

Código Delphi [-]
leer_inicio:= '';
while ( leer_inicio <> chr($02) ) do // mientas no lea el comienzo de la respuesta
begin
   ComPort1.ReadStr(leer_inicio,1);   // leer_inicio es la var donde quiero que guarde lo que lee
   // y el param 1 es la cantidad de caracteres que debo leer.
end;
// si estoy aca es porque lei el inicio del comando que me
// envia el controlador fiscal asi que ya puedo leer el resto
// de la respuesta para analizarla


el problema viene a que muchas veces el controlador fiscal responde con otros caracteres que no son el chr($02) y pueden ser el chr($14) chr($12) chr($15) entre otros, y delphi me tirar un error al leer eso caracteres, el error no dice mucho solo tiene un signo de admiracion !, pero se da al leer caracteres y compararlos con chr($02).
por ahora lo solucione parcialmente poniendo un sleep(1000) o 2mil o mas antes de empezar el while para evitar leer esos caracteres y darle tiempo a que llegue un chr($02) el problema es que a veces el controlador fiscal se demora un poco mas en dejar la respuesta en el puerto, he llegado a tener el error hasta haciedo un sleep(7500) en algunos comandos que requieren mas tiempo pero no es la solucion porque a veces el chr($02) aparece en menos de 1 segundo y no puedo esperar 4 o 5 para garantizar la lectura.

si a alguien le se le ocurre algo para darme una mano con este tema, desde ya muchas gracias. Saludos.
Responder Con Cita