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 begin
ComPort1.ReadStr(leer_inicio,1); end;
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.