Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Leer continuamente puerto USB (https://www.clubdelphi.com/foros/showthread.php?t=96124)

muli 23-02-2023 03:46:28

Leer continuamente puerto USB
 
Hola, necesito estar leyendo continuamente y sin intervencion del usuario el puerto usb donde está conectado un lector de codigo de barras, pues cuando entre un codigo de barras generar unos eventos tales como lectura en base de datos, y dar mensaje de correcto o incorrecto, y al mismo tiempo el ordenador está funcionando con otros programas, a alguien se le ocurre por donde puedo empezar y que pasos seguir.
Gracias.

Neftali [Germán.Estévez] 23-02-2023 08:58:46

Dependerá de cómo sea la lectura.
No comentas ni qué lector es, ni cómo es el funcionamiento.

Por ejemplo, algunos lectores de teclado funcionan como si escribieras el código escribiendo directamente, por lo tanto cuando haces la lectura debes estar posicionado en un campo de texto para que el código se escriba.
Si este fuera el caso, no podrás hacer algo como: "...y al mismo tiempo el ordenador está funcionando con otros programas"

Si funciona de otra manera, habrá que versi hay forma de solucionarlo.

muli 23-02-2023 10:41:37

Hola, los lectores con los que trabajo siempre leen hacia un control (tipo edit), y cuando terminan la lectura dan un enter y así y así ya se genera el evento que quieres. No sabía que había lectores que conectados al puerto usb al leer no enviaban lo leido a un control. No sería viable tener un programa siempre corriendo, digamos como un icono en la barra de tareas, y si detecta una entrada digamos algún carácter especial (se puede configurar el lector para envie primero un carácter) se posicione donde yo quiera y así recoger el resto de la cadena?. Esto que comento, solo se puede hacer con puerto serie?, pues tengo visto en algunos supermercados que mientras están cobrando pasan la tarjeta de fidelidad por el lector de código de barras, que está solamente para eso, y aparece el código en la pantalla.

Saludos.

Neftali [Germán.Estévez] 23-02-2023 11:09:44

Cita:

Empezado por muli (Mensaje 550526)
los lectores con los que trabajo siempre leen hacia un control (tipo edit), y cuando terminan la lectura dan un enter y así y así ya se genera el evento que quieres.

Esos son los habituales.

Cita:

Empezado por muli (Mensaje 550526)
No sabía que había lectores que conectados al puerto usb al leer no enviaban lo leido a un control.

Yo tampoco se si los hay.
Lo comentaba por si el tuyo era diferente de lo habitual.

Cita:

Empezado por muli (Mensaje 550526)
No sería viable tener un programa siempre corriendo, digamos como un icono en la barra de tareas, y si detecta una entrada digamos algún carácter especial (se puede configurar el lector para envie primero un carácter) se posicione donde yo quiera y así recoger el resto de la cadena?

En teoría si, pero habría que ver qué caracteres especiales puedes configurar en el lector.
Puedes hacer un "hook de teclado" a nivel global que detecte una combinación de teclas. Es lo que se hace por ejemplo con el CTRL+ALT+SUPR, que estés donde estés sin importar el programa siempre funciona.
No se si se podría configurar algo así.
Esa posibilidad dependerá de lo que puedas configurar en el lector como "carácter inicial".

Cita:

Empezado por muli (Mensaje 550526)
pues tengo visto en algunos supermercados que mientras están cobrando pasan la tarjeta de fidelidad por el lector de código de barras, que está solamente para eso, y aparece el código en la pantalla.

Pero estos no están en otros programas, se hacen sobre el programa de compra.
Funcionan como lo comentado al principio. El lector lee la tarjeta y vuelca el contenido sobre un control de texto.

muli 23-02-2023 11:41:05

Cita:

Pero estos no están en otros programas, se hacen sobre el programa de compra.
Funcionan como lo comentado al principio. El lector lee la tarjeta y vuelca el contenido sobre un control de texto.
Si de acuerdo, que está en el mismo programa pero cuando está pasando el articulo de venta digamos que el foco está en un control para añadir al ticket y cuando pasas la tarjeta de fidelización está en otro lector y el foco está en la venta, no sé si me explico.

Voy a consultar con el servicio técnico, que caracter puedo incluir antes de la lectura haber si asi puedo detectar la cadena que se lee en el puerto usb.

¿Porque con el componente TComPort, no hace algo parecido?

Neftali [Germán.Estévez] 23-02-2023 12:38:37

Cita:

Empezado por muli (Mensaje 550529)
que está en el mismo programa pero cuando está pasando el articulo de venta digamos que el foco está en un control para añadir al ticket y cuando pasas la tarjeta de fidelización está en otro lector y el foco está en la venta, no sé si me explico.

Voy a consultar con el servicio técnico, que caracter puedo incluir antes de la lectura haber si asi puedo detectar la cadena que se lee en el puerto usb.

¿Porque con el componente TComPort, no hace algo parecido?

En estos casos lo que se hace es discriminar el código leído.
Es decir, cuando lees el código de barras de un artículo tiene este formato: 8412345678905[ENTER],
Mientras que cuando lees la tarjeta de cliente es algo como esto: 0123456789 ABCDEFG HIJKLMNOP QRSTUVWXYZ[ENTER]

El mismo control por el formato sabe si está leyendo de lo uno o lo otro.

En otras ocasiones (y si los códigos son similares), se configura el lector para que el primer carácter sea diferente (como has comentado). De esa forma puedes discriminar desde cual estás leyendo y hacer una cosa u otra.



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

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