Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-08-2010
schdamian schdamian is offline
Registrado
 
Registrado: abr 2010
Posts: 7
Poder: 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
  #2  
Antiguo 21-08-2010
Avatar de Enan0
Enan0 Enan0 is offline
Miembro
 
Registrado: may 2004
Ubicación: Argentina
Posts: 565
Poder: 20
Enan0 Va por buen camino
Yo en una epoca trabaje en una empresa (en argentina) que trabajaba con impresores fiscales y con los de matris de puntos (los de carro ancho tipo impresoras) teniamos un problema similar.
al consultarle varias veces el estado.. se solapaban las consultas y el Impresor se colgaba.

como solucion Inclui un Timer en la respuesta. como decis vos.. en 10 segundos aproximadamente.

DAdo que no siempre respondia con la misma rapidez.

Entonces si el impresor estaba ocupado. y se le preguntaba el estado y pasaban pocos segundos.. este respondia y todo seguia perfecto.

El tema es cuando el impresor se demoraba en contestar.. y Plafff..

la DLL del Impresor fiscal moria.

habia que re inicializar TODO..

esa Solucion (talvez no optima) Fue la mejor.

Saludos.
Responder Con Cita
  #3  
Antiguo 21-08-2010
luisdevis luisdevis is offline
Miembro
 
Registrado: mar 2004
Posts: 32
Poder: 0
luisdevis Va por buen camino
Cuidado con los bucles

No conozco a fondo el Delphi 2009 pero has de tener cuidado con los bucles del tipo que has indicado, te pueden colgar el sistema. El timer que indica schdamian le da un respiro pero es conveniente por algo parecido a application.processmessages para que el procesador dedique tiempo a otras tareas.

leer_inicio:= '';
while ( leer_inicio <> chr($02) ) do
begin
ComPort1.ReadStr(leer_inicio,1);
application.processmessages;
end;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Comparar caracteres de una cadena cslbcn OOP 3 10-07-2010 13:18:27
Comparar cadenas de caracteres sacadas de un fichero papulo Varios 20 22-12-2006 14:43:33
Error codificación caracteres en web papulo PHP 11 17-11-2006 16:11:25
UDF Parametro Error May 256 Caracteres Abel Garcia Firebird e Interbase 2 24-07-2006 07:32:02
Comparar caracteres tecleados con los de una cadena Calculador Varios 1 16-01-2005 18:36:35


La franja horaria es GMT +2. Ahora son las 17:35:35.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi