FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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 |
#2
|
|||
|
|||
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 |
#3
|
|||
|
|||
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.
__________________
Guía de Estilo |
#4
|
||||
|
||||
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!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#5
|
|||
|
|||
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 |
#6
|
||||
|
||||
Cita:
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#7
|
|||
|
|||
Seria mejor si fueran scanner serie
eso esta claro . El tema es que ya estan comprados y son ps2.
Gracias de todas formas. |
#8
|
||||
|
||||
Cita:
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
|
|
|