Ayuda sobre pistola lectora de codigos de barra
-
- Posts: 225
- Joined: Tue Feb 28, 2006 4:25 pm
- Location: PERU
Ayuda sobre pistola lectora de codigos de barra
Amigos
Tengo una pistola para scanear codigos de barra
Modelo Dyna Pos
se puede programar la lectura e impresion de codigos de
barra desde fw
los codigos son standares para todos lkos idiomas
Agradecesco informacion al respecto
Mil gracias
Tengo una pistola para scanear codigos de barra
Modelo Dyna Pos
se puede programar la lectura e impresion de codigos de
barra desde fw
los codigos son standares para todos lkos idiomas
Agradecesco informacion al respecto
Mil gracias
ME INTERESA FW Y XHB POR SER OPEN SOURCE
- Willi Quintana
- Posts: 859
- Joined: Sun Oct 09, 2005 10:41 pm
- Location: Cusco - Perú
- Contact:
Re: Ayuda sobre pistola lectora de codigos de barra
Hola
Solo tienes que conectar el lector y tu aplicacion debe tener un GET activo en el momento de la captura del codigo,,, en otras palabras, en ve< de que escribas el codigo,activas el lectos,,
Salu2
Solo tienes que conectar el lector y tu aplicacion debe tener un GET activo en el momento de la captura del codigo,,, en otras palabras, en ve< de que escribas el codigo,activas el lectos,,
Salu2
Re: Ayuda sobre pistola lectora de codigos de barra
Hola Vladimir:
Como dice Willi, y siempre y cuando la pistola lectora de códigos de barras permita emulación de teclado, solo debes conectarla a la pc, y poner en tu aplicacion un get para recolectar los datos que envia el lector de barras, igual que si tipearas los numeros desde un teclado.
Generalmente, cuando lee desde el lector, escribe los numero (o letras segun la codificacion del codigo de barras) y envia un ENTER al final. Por lo tanto en la clausula VALID del get puedes llamar a la funcion que busca en tu base de datos el codigo correspondiente para, por ejemplo, traer el precio del producto y la descripción del mismo.
El único inconveniente es si la comunicación con el lector, es por medio del puerto serie, ahí ya tienes que tener el protocolo de comunicacion del lector o un driver que decodifique el codigo enviado.
Cualquier consulta que quieras hacer, estoy a tu disposicion. Tengo varias aplicaciones corriendo con lectores de barra.
Como dice Willi, y siempre y cuando la pistola lectora de códigos de barras permita emulación de teclado, solo debes conectarla a la pc, y poner en tu aplicacion un get para recolectar los datos que envia el lector de barras, igual que si tipearas los numeros desde un teclado.
Generalmente, cuando lee desde el lector, escribe los numero (o letras segun la codificacion del codigo de barras) y envia un ENTER al final. Por lo tanto en la clausula VALID del get puedes llamar a la funcion que busca en tu base de datos el codigo correspondiente para, por ejemplo, traer el precio del producto y la descripción del mismo.
El único inconveniente es si la comunicación con el lector, es por medio del puerto serie, ahí ya tienes que tener el protocolo de comunicacion del lector o un driver que decodifique el codigo enviado.
Cualquier consulta que quieras hacer, estoy a tu disposicion. Tengo varias aplicaciones corriendo con lectores de barra.
-
- Posts: 225
- Joined: Tue Feb 28, 2006 4:25 pm
- Location: PERU
Re: Ayuda sobre pistola lectora de codigos de barra
GRACIAS POR CONTESTAR
El problema que tengo ahora es que la pistola llena el get con el codigo pero
el valid no se ejecuta.
El get lo declaro con space(12) y el codigo se llena con 12 pero nada de ejecutarse el valid
Recorto el space a 10 llena los 10 e igual no se ejecuta el valid
Alguna idea de que evento puedo usar para procesar el codigo de barras correctamente decodificado
Gracias
El problema que tengo ahora es que la pistola llena el get con el codigo pero
el valid no se ejecuta.
El get lo declaro con space(12) y el codigo se llena con 12 pero nada de ejecutarse el valid
Recorto el space a 10 llena los 10 e igual no se ejecuta el valid
Alguna idea de que evento puedo usar para procesar el codigo de barras correctamente decodificado
Gracias
ME INTERESA FW Y XHB POR SER OPEN SOURCE
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Ayuda sobre pistola lectora de codigos de barra
Vladimir:
El lector te devuelve y coloca en el correspondiente get, el codigo de barras decodificado. Es decir, _ devueltos por supuesto deben coincidir con _ del codigo del producto que tienes en tu tabla, para validar .t..
A continuación te dejo como lo hago yo. (puedes adaptarlo a tus necesidades)
La primera parte es la validacion del codigo devuelto por el lector, y la segunda es donde se introduce la cantidad (que por defecto en mi programa es 1), y graba el registro en la tabla.
nNumPart := space(len(field->numpart)) ; uVar := {"", 0, "",""}
REDEFINE GET oNumPart VAR nNumPart ID 111 OF oDlg PICTURE "@!" ;
VALID IF(!Empty(nNumPart), Existe(nNumPart,@uVar,oUnd,@cUnd), .t.) //.t. es porque tengo otras opciones en mi programa,
REDEFINE GET oCanti VAR nCanti ID 112 OF oDlg PICTURE "999,999.99" ;
VALID Grabelo(oDlg,oLbx,oNumPart,@nNumPart,@uVar,nDesct,lProforma,dFecha,oUnd,cUnd,@nCanti,oCanti) ;
WHEN !Empty(nNumPart)
Espero te sea de utilidad
Saludos
El lector te devuelve y coloca en el correspondiente get, el codigo de barras decodificado. Es decir, _ devueltos por supuesto deben coincidir con _ del codigo del producto que tienes en tu tabla, para validar .t..
A continuación te dejo como lo hago yo. (puedes adaptarlo a tus necesidades)
La primera parte es la validacion del codigo devuelto por el lector, y la segunda es donde se introduce la cantidad (que por defecto en mi programa es 1), y graba el registro en la tabla.
nNumPart := space(len(field->numpart)) ; uVar := {"", 0, "",""}
REDEFINE GET oNumPart VAR nNumPart ID 111 OF oDlg PICTURE "@!" ;
VALID IF(!Empty(nNumPart), Existe(nNumPart,@uVar,oUnd,@cUnd), .t.) //.t. es porque tengo otras opciones en mi programa,
REDEFINE GET oCanti VAR nCanti ID 112 OF oDlg PICTURE "999,999.99" ;
VALID Grabelo(oDlg,oLbx,oNumPart,@nNumPart,@uVar,nDesct,lProforma,dFecha,oUnd,cUnd,@nCanti,oCanti) ;
WHEN !Empty(nNumPart)
Espero te sea de utilidad
Saludos
Last edited by FranciscoA on Tue Jun 02, 2009 9:38 pm, edited 2 times in total.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
- rogerio
- Posts: 83
- Joined: Wed Nov 09, 2005 11:22 pm
- Location: São Lourenço da Serra - SP - Brasil
- Contact:
Re: Ayuda sobre pistola lectora de codigos de barra
Olá Vladimir
como disse o companheiro da cmsoft acima, falta o Enter ao final.
Normalmente esses leitores de codigos de barra permitem uma configuração, eles devem ter um cartão de códigos de configuração. Uma das configurações é o envio de CR+LF ao final do código.
Verifique isso.
Em antigos programas em clipper eu usava o SET CONFIRM OFF para evitar a necessidade do CR+LF.
[]'s
Rogerio
como disse o companheiro da cmsoft acima, falta o Enter ao final.
Normalmente esses leitores de codigos de barra permitem uma configuração, eles devem ter um cartão de códigos de configuração. Uma das configurações é o envio de CR+LF ao final do código.
Verifique isso.
Em antigos programas em clipper eu usava o SET CONFIRM OFF para evitar a necessidade do CR+LF.
[]'s
Rogerio
-
- Posts: 225
- Joined: Tue Feb 28, 2006 4:25 pm
- Location: PERU
Re: Ayuda sobre pistola lectora de codigos de barra
Gracias por la Ayuda amigos
De momento lo he resuelto poniendo un get mas y en el evento bgotfocus de este segundo get proceso la validacion en la base de datos.
DEFINE DIALOG oDlg TITLE "CAPTURA DE BARCODE " + FWDESCRIPTION
@ 1, 2 SAY "Code.:" OF oDlg
@ 1, 6 GET oGet VAR cCad VALID MSGYESNO("ESTE NO SE EVALUA NUNCA") OF oDlg SIZE 60, 10 COLOR "W/G" PICTURE "@K"
@ 1.8, 2 SAY "ACA LO CAPTURO:" OF oDlg
@ 2, 6 GET oGet2 VAR AQUI OF oDlg SIZE 60, 10 PICTURE "9999999.99"
oGet2:bGotFocus:={ || CAPTURANDOEVENTODESPUESDELECTOR()}
@ 3, 7 BUTTON "&Ok" OF oDlg SIZE 30, 12 ACTION oDlg:End()
@ 3, 16 BUTTON "&Cancel" SIZE 30, 12 OF oDlg ACTION oDlg:End() CANCEL
ACTIVATE DIALOG oDlg CENTERED
Saludos
De momento lo he resuelto poniendo un get mas y en el evento bgotfocus de este segundo get proceso la validacion en la base de datos.
DEFINE DIALOG oDlg TITLE "CAPTURA DE BARCODE " + FWDESCRIPTION
@ 1, 2 SAY "Code.:" OF oDlg
@ 1, 6 GET oGet VAR cCad VALID MSGYESNO("ESTE NO SE EVALUA NUNCA") OF oDlg SIZE 60, 10 COLOR "W/G" PICTURE "@K"
@ 1.8, 2 SAY "ACA LO CAPTURO:" OF oDlg
@ 2, 6 GET oGet2 VAR AQUI OF oDlg SIZE 60, 10 PICTURE "9999999.99"
oGet2:bGotFocus:={ || CAPTURANDOEVENTODESPUESDELECTOR()}
@ 3, 7 BUTTON "&Ok" OF oDlg SIZE 30, 12 ACTION oDlg:End()
@ 3, 16 BUTTON "&Cancel" SIZE 30, 12 OF oDlg ACTION oDlg:End() CANCEL
ACTIVATE DIALOG oDlg CENTERED
Saludos
ME INTERESA FW Y XHB POR SER OPEN SOURCE
Re: Ayuda sobre pistola lectora de codigos de barra
Hola Vladimir:
Como dice Rogerio, tenes que tener en cuenta si el lector está configurado para enviar CR+LF (o Sea un enter) despues de leer el codigo. Eso tendría que hacer salir del oGet y ejecutar la clausula VALID.
Esto tendría que funcionar perfectamente:
DEFINE DIALOG oDlg TITLE "CAPTURA DE BARCODE " + FWDESCRIPTION
cCad := SPACE(13) // Suponiendo que los codigos de barras que lees son EAN13, los de productos de supermercado
@ 1, 2 SAY "Code.:" OF oDlg
@ 1, 6 GET oGet VAR cCad VALID CAPTURANDOEVENTODESPUESDELECTOR(oGet:cText)OF oDlg SIZE 60, 10 COLOR "W/G" PICTURE "@K"
@ 3, 7 BUTTON "&Ok" OF oDlg SIZE 30, 12 ACTION oDlg:End()
@ 3, 16 BUTTON "&Cancel" SIZE 30, 12 OF oDlg ACTION oDlg:End() CANCEL
ACTIVATE DIALOG oDlg CENTERED
STATIC FUNCTION CAPTURANDOEVENTODESPUESDELECTOR(cVar)
MsgInfo(cVar)
RETURN nil
Este ejemplo, perfectamente tendría que mostrarte la el codigo leido en un mensaje.
Espero que te sirva.
Como dice Rogerio, tenes que tener en cuenta si el lector está configurado para enviar CR+LF (o Sea un enter) despues de leer el codigo. Eso tendría que hacer salir del oGet y ejecutar la clausula VALID.
Esto tendría que funcionar perfectamente:
DEFINE DIALOG oDlg TITLE "CAPTURA DE BARCODE " + FWDESCRIPTION
cCad := SPACE(13) // Suponiendo que los codigos de barras que lees son EAN13, los de productos de supermercado
@ 1, 2 SAY "Code.:" OF oDlg
@ 1, 6 GET oGet VAR cCad VALID CAPTURANDOEVENTODESPUESDELECTOR(oGet:cText)OF oDlg SIZE 60, 10 COLOR "W/G" PICTURE "@K"
@ 3, 7 BUTTON "&Ok" OF oDlg SIZE 30, 12 ACTION oDlg:End()
@ 3, 16 BUTTON "&Cancel" SIZE 30, 12 OF oDlg ACTION oDlg:End() CANCEL
ACTIVATE DIALOG oDlg CENTERED
STATIC FUNCTION CAPTURANDOEVENTODESPUESDELECTOR(cVar)
MsgInfo(cVar)
RETURN nil
Este ejemplo, perfectamente tendría que mostrarte la el codigo leido en un mensaje.
Espero que te sirva.
-
- Posts: 225
- Joined: Tue Feb 28, 2006 4:25 pm
- Location: PERU
Re: Ayuda sobre pistola lectora de codigos de barra
Ese es el problema amigo
que no esta devolviendo el CRLF y no se como configurarlo para que
devuelva este caracter
EL Lector es un Dyna Pos y no tengo ni idea de como configurarlo
Ahora si imprimo el control CRLF en la impresion del codigo de barras no reconoce
el codigo el lector
El sistema de codigo de barras que uso es code 128
Gracias por la ayuda
que no esta devolviendo el CRLF y no se como configurarlo para que
devuelva este caracter
EL Lector es un Dyna Pos y no tengo ni idea de como configurarlo
Ahora si imprimo el control CRLF en la impresion del codigo de barras no reconoce
el codigo el lector
El sistema de codigo de barras que uso es code 128
Gracias por la ayuda
ME INTERESA FW Y XHB POR SER OPEN SOURCE
- rogerio
- Posts: 83
- Joined: Wed Nov 09, 2005 11:22 pm
- Location: São Lourenço da Serra - SP - Brasil
- Contact:
Re: Ayuda sobre pistola lectora de codigos de barra
Vladimir
normalmente esses equipamentos são vendidos com um manual impresso e no proprio manual existem impressos os códigos de barras com a configuração.
Então veja no manual desse aparelho.
Ele deve ter algumas páginas impressas com códigos de barra de configuração.
E uma das configurações possíveis é o envio de CR+LF ao final da leitura do código.
Essa é uma configuração necessária para todos equipamentos.
[]'s
Rogerio
normalmente esses equipamentos são vendidos com um manual impresso e no proprio manual existem impressos os códigos de barras com a configuração.
Então veja no manual desse aparelho.
Ele deve ter algumas páginas impressas com códigos de barra de configuração.
E uma das configurações possíveis é o envio de CR+LF ao final da leitura do código.
Essa é uma configuração necessária para todos equipamentos.
[]'s
Rogerio
Re: Ayuda sobre pistola lectora de codigos de barra
> Tengo el siguiente codigo , donde el cliente introduce el lector de codigo
> de barras y mete un codigo de 13 numeros
>
> mcodart=space(len(ticket->codart1))
> lSalvar:=.F.
> lCancelar:=.F.
> DEFINE DIALOG tic_diaCodigo FROM 40,20 TO 45,70
> SET FONT OF tic_diaCodigo TO tic_Font
>
> @0,0 say "CODIGO ARTICULO:" OF tic_diaCodigo
> @0,10 GET mcodart picture "!!!!!!!!!!!!!" OF
> tic_diaCodigo
> VALID(tic_RevisaCodigo(tic_diaCodigo,mcodart),.T.)
> @1,9 BUTTON "&A_Aceptar" OF tic_diaCodigo SIZE 50, 12 ;
> ACTION ( lSalvar := .T. , tic_diaCodigo:End() )
> @1,19 BUTTON "&C_Cancelar" OF tic_diaCodigo SIZE 50, 12 ;
> ACTION (lCancelar:=.T.,tic_diaCodigo:End());
> CANCEL
> ACTIVATE DIALOG tic_diaCodigo
> if (lCancelar)
> tkey=12 /*orden de salida*/
> return nil
> endif
> Cuando el cliente con su pistola de codigo de barras mete un codigo , el
> cursor aparece dentro del contenido de mcodart y lo coge bien,
>
> Pero la segunda vez, el cursor esta en el boton <aceptar>
> y no coge el codigo porque el campo de codigo no esta activo (el cursor no
> aparece en campo de mcodart)
>
> COMO SOLUCIONO ESTO.
>
> de barras y mete un codigo de 13 numeros
>
> mcodart=space(len(ticket->codart1))
> lSalvar:=.F.
> lCancelar:=.F.
> DEFINE DIALOG tic_diaCodigo FROM 40,20 TO 45,70
> SET FONT OF tic_diaCodigo TO tic_Font
>
> @0,0 say "CODIGO ARTICULO:" OF tic_diaCodigo
> @0,10 GET mcodart picture "!!!!!!!!!!!!!" OF
> tic_diaCodigo
> VALID(tic_RevisaCodigo(tic_diaCodigo,mcodart),.T.)
> @1,9 BUTTON "&A_Aceptar" OF tic_diaCodigo SIZE 50, 12 ;
> ACTION ( lSalvar := .T. , tic_diaCodigo:End() )
> @1,19 BUTTON "&C_Cancelar" OF tic_diaCodigo SIZE 50, 12 ;
> ACTION (lCancelar:=.T.,tic_diaCodigo:End());
> CANCEL
> ACTIVATE DIALOG tic_diaCodigo
> if (lCancelar)
> tkey=12 /*orden de salida*/
> return nil
> endif
> Cuando el cliente con su pistola de codigo de barras mete un codigo , el
> cursor aparece dentro del contenido de mcodart y lo coge bien,
>
> Pero la segunda vez, el cursor esta en el boton <aceptar>
> y no coge el codigo porque el campo de codigo no esta activo (el cursor no
> aparece en campo de mcodart)
>
> COMO SOLUCIONO ESTO.
>
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Ayuda sobre pistola lectora de codigos de barra
Angel,
Una solución sería que no se cumpla la validación:
VALID (tic_RevisaCodigo(tic_diaCodigo,mcodart), .F.)
Pruébalo
Una solución sería que no se cumpla la validación:
VALID (tic_RevisaCodigo(tic_diaCodigo,mcodart), .F.)
Pruébalo
-
- Posts: 11
- Joined: Fri Nov 20, 2009 11:07 am
Re: Ayuda sobre pistola lectora de codigos de barra
Angel, no se si has solucionado tu problema. Supondré que no.
No entiendo cual es el problema. Realmente se le esta diciendo al programa que DESPUES de leer hay que pinchar en aceptar o cancelar y es lo que hace.
Una vez leido hace falta la acción del usuario para pinchar en uno o en otro ANTES de leer el siguiente código.
Como dice Antonio, no saldría de la lectura de barras.
En fin, no lo entiendo, perdona. Quiero ayudarte pero no se lo suficiente de tu caso.
No entiendo cual es el problema. Realmente se le esta diciendo al programa que DESPUES de leer hay que pinchar en aceptar o cancelar y es lo que hace.
Una vez leido hace falta la acción del usuario para pinchar en uno o en otro ANTES de leer el siguiente código.
Como dice Antonio, no saldría de la lectura de barras.
En fin, no lo entiendo, perdona. Quiero ayudarte pero no se lo suficiente de tu caso.