Lector no lee codigo de barra SOLUCIONADO

Lector no lee codigo de barra SOLUCIONADO

Postby FranciscoA » Mon Jun 04, 2018 1:31 am

Hola amigos, sigo con esto.

He construido esta función de prueba que imprime el codigo de barras sin problemas. Pero... el lector no lo lee.
Donde está el error? Que me hace falta?
El lector es un 3nStar SC100-1 y trabaja correctamente.

Solicito vuestra ayuda para solventarlo.

Code: Select all  Expand view  RUN
Function ImprCodeBar()
local oPrn, oFont1, oFontCBar, cCode := "SERV005", cCode2 := StrZero(123,4)
local nLin, nCol, nCodigo:= 1, n
//local cFontCBar := ".\EAN-13.ttf", cNombre := "EAN-13"
local cFontCBar := ".\Code3of9.TTF", cNombre := "Code3of9"
local nRowStep, nColStep

  AddFontResource( cFontCBar )  //cuando font no esta instalada en windows

 PRINT oPrn NAME "Recibos" PREVIEW
     DEFINE FONT oFont1    NAME "Arial"  SIZE 12,-12 OF oPrn
     DEFINE FONT oFontCBar NAME cNombre  SIZE 36,-36 OF oPrn

   nRowStep   := oPrn:nVertRes/60
   nColStep   := oPrn:nHorzRes/80

     PAGE
       nLin := 10 * nRowStep
       nCol := 10* nColStep

       oPrn:Say( nLin  , nCol, cCode, oFontCBar )
       nLin += ( 10 * nRowStep )
       oPrn:Say( nLin, nCol, cCode, oFont1 )

       nLin += (10 * nRowStep)
       oPrn:Say( nLin   , nCol, cCode2, oFontCBar )
       nLin += (10 * nRowStep)
       oPrn:Say( nLin, nCol, cCode2, oFont1 )
     ENDPAGE

 ENDPRINT

   oFont1:End()
   oFontCBar:End()

   RemoveFontResource( cFontCBar )  //cuando font no esta instalada en windows

   SysRefresh()
Return nil
 

Agradezco de antemano.
Saludos.
Last edited by FranciscoA on Sat Jun 09, 2018 4:08 pm, edited 1 time in total.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2159
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Lector no lee codigo de barra

Postby Marcelo Via Giglio » Mon Jun 04, 2018 1:51 am

Hola,

prueba

Code: Select all  Expand view  RUN
.... cCode := "*SERV005*" ....


saludos

Marcelo
Marcelo Via Giglio
 
Posts: 1071
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Re: Lector no lee codigo de barra

Postby FranciscoA » Mon Jun 04, 2018 1:58 am

Marcelo.
Gracias por tu rápida respuesta.
En este momento no tengo disponible una impresora. Probaré mañana, y te digo.
Nuevamente gracias.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2159
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Lector no lee codigo de barra

Postby cmsoft » Mon Jun 04, 2018 11:30 am

Francisco, tal como te dice Marcelo, generalmente cada font de codigo de barra tiene un caracter de inicio y de cierre. En Interleave 2 of 5, pueden ser las llaves {} o los corchetes [], en algunos fonts me a tocado que son los paréntesis (). No se en ese font que utilizas, sino puedes buscar las especificaciones del mismo para saber cual son.
Te dejo una rutina que imprime los códigos de barra de tarjetas de empleados, con un dígito verificador, con el Font Interleave 2 of 5 donde cada para de números se representa con un caracter.
Code: Select all  Expand view  RUN

**********************************************************************************
** Emitir tarjeta para fichada
STATIC FUNCTION Tarjeta()
LOCAL oPrn, oFont5,  i, mbarra1,  nRow, nCol , nRowStep, nColStep

   PRINT oPrn NAME "Tarjetas" PREVIEW
      AddFontResource( "Bar25ifh.ttf" )
      DEFINE FONT oFont5 NAME "Bar 25i f HR"    SIZE 110, 30 OF oPrn
      nRowStep = oPrn:nVertRes() / 50
      nColStep = oPrn:nHorzRes() / 80
      nRow := 1
      nCol := 3
      PAGE
         mbarra1 := STR(oQry:tarjeta,5)
         mbarra1 := STRTRAN(mbarra1," ","0") + DigitoVer(mbarra1)
         mbarra1 := CodigoBarra( mbarra1)
         *** Tarjeta
         oPrn:RoundBox( nRow+20, nCol+20, nColStep*40,nRow+5*nRowStep, 60,60 )
         oPrn:Say( nRow+2*nRowStep, 4*nColStep*nCol, mbarra1,oFont5)
      ENDPAGE      
   ENDPRINT

   oFont5:End()      
RETURN NIL

STATIC FUNCTION CodigoBarra( x )
LOCAL i, bar := {}, j := 0, bar1 := {}, cBarr := ""
   FOR i:= 33 to 122
       AADD(bar,CHR(i))
       AADD(bar1,STRTRAN(STR(j,2)," ","0"))
       j++
   NEXT i
   FOR i:= 161 to 170
       AADD(bar,CHR(i))
       AADD(bar1,STRTRAN(STR(j,2)," ","0"))
       j++
   NEXT i
FOR j := 1 TO LEN(x) STEP 2
    i := ASCAN(bar1,SUBSTR(x,j,2))
    cBarr := cBarr + bar[i]
NEXT j
RETURN "{"+cBarr+"}"

STATIC FUNCTION DigitoVer( x )
LOCAL amulti, dig, divi,valor,i,retorno
amulti := {5,4,3,2,7,6,5,4,3,2}
valor := 0
FOR i := 1 TO 5
    valor := valor + VAL(SUBSTR(x,i,1)) * amulti[i]
NEXT
divi := valor % 11
IF divi = 0
   dig := 0
   ELSE
   dig := 11 - divi
   IF dig > 9
      dig := 9
   ENDIF
ENDIF
dig := INT(dig)
RETURN STR(dig,1)
User avatar
cmsoft
 
Posts: 1293
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Lector no lee codigo de barra

Postby FranciscoA » Mon Jun 04, 2018 1:26 pm

cmsof:
Gracias por compartir tu código. Precisamente quiero imprimir una tarjeta de empleado.
Lo probaré mas tarde, y te comento.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2159
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Lector no lee codigo de barra

Postby FranciscoA » Mon Jun 04, 2018 11:59 pm

Marcelo.
Funcionó al 100...!!!
Gracias.


cmsof.
No he sido capaz de adaptar to código. El preview muestra esto: { ! 3 }, en vez del codigo de barra, con el siguiente codigo:
Code: Select all  Expand view  RUN
STATIC FUNCTION Tarjeta()
LOCAL oPrn, oFont5,  i, mbarra1,  nRow, nCol , nRowStep, nColStep

   PRINT oPrn NAME "Tarjetas" PREVIEW

      AddFontResource( "Bar25ifh.ttf" )

      DEFINE FONT oFont5 NAME "Bar 25i f HR"  SIZE 110, 30 OF oPrn

      nRowStep = oPrn:nVertRes() / 50
      nColStep = oPrn:nHorzRes() / 80

      nRow := 1
      nCol := 3

      PAGE
         mbarra1 := Str(Vendedor->Codigo,3)    //STR(oQry:tarjeta,5)
         mbarra1 := STRTRAN(mbarra1," ","0") + DigitoVer(mbarra1)
         mbarra1 := CodigoBarra( mbarra1)
         *** Tarjeta
         **oPrn:RoundBox( nRow+20, nCol+20, nColStep*40,nRow+5*nRowStep, 60,60 )
         oPrn:Say( nRow+2*nRowStep, 4*nColStep*nCol, mbarra1,oFont5)
      ENDPAGE      

      RemoveFontResource( "Bar25ifh.ttf" )

   ENDPRINT

   oFont5:End()      
RETURN NIL

//---------------------------------------//
STATIC FUNCTION CodigoBarra( x )
LOCAL i, bar := {}, j := 0, bar1 := {}, cBarr := ""

   FOR i:= 33 to 122
       AADD(bar,CHR(i))
       AADD(bar1,STRTRAN(STR(j,2)," ","0"))
       j++
   NEXT i

   FOR i:= 161 to 170
       AADD(bar,CHR(i))
       AADD(bar1,STRTRAN(STR(j,2)," ","0"))
       j++
   NEXT i

FOR j := 1 TO LEN(x) STEP 2
    i := ASCAN(bar1,SUBSTR(x,j,2))
    cBarr := cBarr + bar[i]
NEXT j

RETURN "{"+cBarr+"}"

//---------------------------------------//
STATIC FUNCTION DigitoVer( x )
LOCAL amulti, dig, divi,valor,i,retorno

amulti := {5,4,3,2,7,6,5,4,3,2}
valor := 0

FOR i := 1 TO 5
    valor := valor + VAL(SUBSTR(x,i,1)) * amulti[i]
NEXT

divi := valor % 11
IF divi = 0
   dig := 0
ELSE
   dig := 11 - divi
   IF dig > 9
      dig := 9
   ENDIF
ENDIF

dig := INT(dig)
RETURN STR(dig,1)
 


Qué falta?... Gracias
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2159
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Lector no lee codigo de barra

Postby FranciscoA » Tue Jun 05, 2018 12:01 am

cmsof.
Se me olvidaba comentar que la fuente la encontré en internet, con el nombre exacto de la que mencionas.
No sé si será versión.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2159
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Lector no lee codigo de barra

Postby FranciscoA » Tue Jun 05, 2018 12:21 am

cmsof.
Corrijo el codigo y ahora si esta funcionando. Mi error fue remover la font antes de tiempo.
Aqui está corregido.
Code: Select all  Expand view  RUN

STATIC FUNCTION Tarjeta()
LOCAL oPrn, oFont5,  i, mbarra1,  nRow, nCol , nRowStep, nColStep

    AddFontResource( "Bar25ifh.ttf" )

   PRINT oPrn NAME "Tarjetas" PREVIEW

      DEFINE FONT oFont5 NAME "Bar 25i f HR"  SIZE 110, 30 OF oPrn

      nRowStep = oPrn:nVertRes() / 50
      nColStep = oPrn:nHorzRes() / 80

      nRow := 1
      nCol := 3

      PAGE
         mbarra1 := Str(Vendedor->Codigo,3)    //STR(oQry:tarjeta,5)
         mbarra1 := STRTRAN(mbarra1," ","0") + DigitoVer(mbarra1)
         mbarra1 := CodigoBarra( mbarra1)
         *** Tarjeta
         **oPrn:RoundBox( nRow+20, nCol+20, nColStep*40,nRow+5*nRowStep, 60,60 )
         oPrn:Say( nRow+2*nRowStep, 4*nColStep*nCol, mbarra1,oFont5)
      ENDPAGE      

   ENDPRINT

   oFont5:End()      

   RemoveFontResource( "Bar25ifh.ttf" )

RETURN NIL


Gracias, y disculpa.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2159
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Lector no lee codigo de barra

Postby cmsoft » Tue Jun 05, 2018 2:38 am

Buenisimo Francisco!! Me alegro que te haya funcionado.
La font interleave 2 of 5 cada usa 1 (un) carácter para mostrar un par de dígitos. Por eso la funcion de conversion. Siempre lo que le pasas debe ser un numero par de dígitos.
La función del digito verificador te puede ser útil al momento de validar la tarjeta del empleado. (suele pasar que el lector devuelve un código mal leido).
Espero que te sirva el ejemplo y cualquier duda a tu disposición.
User avatar
cmsoft
 
Posts: 1293
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Lector no lee codigo de barra

Postby karinha » Tue Jun 05, 2018 2:01 pm

Francisco, tu puedes enviar el "Bar25ifh.ttf" ?

email:

kapiabafwh@gmail.com

Gracias, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7872
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Lector no lee codigo de barra

Postby FranciscoA » Tue Jun 05, 2018 3:16 pm

cmsof, muy amable.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2159
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Lector no lee codigo de barra

Postby FranciscoA » Tue Jun 05, 2018 3:16 pm

Karinha, por favor revisa tu correo.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2159
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Lector no lee codigo de barra

Postby karinha » Tue Jun 05, 2018 3:28 pm

FranciscoA wrote:Karinha, por favor revisa tu correo.
Saludos.



Gracias Francisco. Listo.

Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7872
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Lector no lee codigo de barra SOLUCIONADO

Postby jds » Wed Oct 14, 2020 3:41 pm

Francisco,
Puedes enviarme el "Bar25ifh.ttf" por favor
Gracias por tu ayuda
José (jds) Belgium
jds
 
Posts: 122
Joined: Sat Dec 05, 2009 12:44 pm

Re: Lector no lee codigo de barra SOLUCIONADO

Postby jds » Wed Oct 14, 2020 3:45 pm

Francisco
I forgot to give you my email address
My email = deschutterjose@gmail.com
jds
 
Posts: 122
Joined: Sat Dec 05, 2009 12:44 pm

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 79 guests