Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Diferenciar entradas de datos (https://www.clubdelphi.com/foros/showthread.php?t=1515)

marys 17-06-2003 23:40:57

Diferenciar entradas de datos
 
Hay alguna manera de diferenciar los datos tomados de scanner de codigo barra o teclado si están conectados en el mismo puerto?
Gracias

__cadetill 18-06-2003 01:54:56

no lo he probado, pero supongo que el scanner no disparara los eventos onKeyPress, onKeyUp, OnKeyDown

Podrias mirar por aqui a ver si te sirve

andres1569 19-06-2003 10:12:47

Hola:

Independientemente de que se conecten o no al mismo puerto, ambos generan el mismo tipo de mensaje windows, es decir como si fueran pulsaciones de teclado y así es como los recibe la aplicación (mensajes WM_KEYDOWN).

Parecerá algo engorroso pero la forma en que tengo implementado esto es mediante el evento OnMessage del TApplication (lo tengo en Delphi 4.0, si fuera un Delphi superior se utilizaría el componente ApplicationEvents). Dentro de ese código, coloco una llamada a GetTickCount cada vez que se recibe un caracter sospechoso (sólo cifras en mi caso) y comparo tiempos de recepción. Si el tiempo es inferior a 70 milésimas entre un caracter y otro, entiendo que es enviado por el scanner y anulo el mensaje para que no se propague; si no, interpreto que es el teclado (ése es el tiempo que calculo que un buen mecanógrafo no puede igualar). De esta forma, mientras van entrando caracteres en esos lapsos de tiempo voy almacenándolos y formando una cadena, hasta que llega el código de control (RETURN) o cualquier caracter retrasado en cuyo caso aborto la creación de la cadena y entiendo que es un "texto normal" (en ese caso hay que reenviarlo a la aplicación para que lo procese).

Puede sonar un poco a chapuza pero no encontré en su día mejor forma de hacerlo (si alguien lo ha hecho de otra forma ...) y funciona. Tal como lo tengo implementado, cuando se obtiene un código de barras completo, se lanza un Diálogo modal mostrándo el código para que el usuario pueda darse cuenta de que se ha leído, o por si se quiere verificar el número con el de la etiqueta, y a continuación se ejecuta la búsqueda en la Base de datos.

Si te interesa el código, dímelo, tendría que hacer algunos retoques y quitar partes que no te interesan.

delphi.com.ar 19-06-2003 19:24:17

Puedes programar tu scanner para que envié un caracter especial cuando comienza a escribir y otro cuando termine, pero no creo que esto sirva si el usuario presiona una tecla en el medio. La verdad que no se porqué quieres diferenciar una entrada de la otra, precisamente los scanners tienen esta ventaja, y hace que la programación sea indistinta, si usamos o no un scanner. Creo que la mejor forma separar totalmente el ingreso del teclado del scanner, es utilizar scanners seriales.

Saludos!

ingel 23-03-2005 02:44:50

2 años despues ..mismo problema
 
Hola , tengo el mismo problema y recorriendo el foro encontre este mensaje ,
ahora bien tengo bastante urgencia en implementar esto ya que 'de repente'... 'el que paga' o sea el dueño no quiere que se use el teclado ;-) asi que tengo un par de dias para solucionarlo ..
si alguien sufrio lo mismo y me puede mandar algo de codigo / sugerencia / otra idea o algo que me ahorre algo de tiempo se los agradeceria infinitamente ...
Saludos y gracias
Ingel

delphi.com.ar 29-03-2005 17:40:48

Cita:

Empezado por ingel
sugerencia

Utilizar Scanners que se conecten por otra vía que no sea el teclado, por ejemplo serie.

Saludos!

ingel 29-03-2005 21:41:34

Seria mejor si fueran scanner serie
 
eso esta claro . El tema es que ya estan comprados y son ps2.
Gracias de todas formas.

delphi.com.ar 29-03-2005 22:06:40

Cita:

Empezado por ingel
eso esta claro . El tema es que ya estan comprados y son ps2.

Lo tiré como sugerencia por si no se había decidido la compra! ;)

Saludos!


La franja horaria es GMT +2. Ahora son las 21:02:38.

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